From f69ff199886fd276e52e805966fcba93e4935653 Mon Sep 17 00:00:00 2001 From: Rain&Bus Date: Wed, 24 Dec 2025 11:44:20 +0800 Subject: [PATCH] vault backup: 2025-12-24 11:44:20 --- .../markdown-states.json | 14 +-- .obsidian/workspace.json | 4 +- .../heidariLearningCleanReinforcement2025.md | 95 ++++++++++++------- 3 files changed, 70 insertions(+), 43 deletions(-) diff --git a/.obsidian/plugins/obsidian-quiet-outline/markdown-states.json b/.obsidian/plugins/obsidian-quiet-outline/markdown-states.json index facd0b1..92230d3 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/markdown-states.json +++ b/.obsidian/plugins/obsidian-quiet-outline/markdown-states.json @@ -59,20 +59,20 @@ "expandedKeys": [] }, "Paper/FSL Image Classification/heidariLearningCleanReinforcement2025.md": { - "scroll": 106.84309240622142, + "scroll": 2.1689922480620156, "cursor": { "from": { - "line": 112, - "ch": 3 + "line": 7, + "ch": 133 }, "to": { - "line": 112, - "ch": 3 + "line": 7, + "ch": 133 } }, "expandedKeys": [ - "item-2-2", - "item-1-0" + "item-1-0", + "item-2-2" ] } } \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 3e8facb..a165328 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -199,6 +199,7 @@ }, "active": "4f4081000e4e799b", "lastOpenFiles": [ + "Paper/FSL Image Classification/heidariLearningCleanReinforcement2025.md", "Paper/FSL Image Classification/Context Attribute words for Prompt Tuning.md", "Paper/FSL Image Classification/heidariLearningCleanReinforcement2025.md", "Untitled.md", @@ -235,7 +236,6 @@ "Paper/Open-Vocabulary Semantic Segmentation.md", "Books/动手学深度学习/引言.md", "Paper/未命名.md", - "Books/动手学深度学习/基础概念.md", - "liangOpenVocabularySemanticSegmentation2023.md" + "Books/动手学深度学习/基础概念.md" ] } \ No newline at end of file diff --git a/Paper/FSL Image Classification/heidariLearningCleanReinforcement2025.md b/Paper/FSL Image Classification/heidariLearningCleanReinforcement2025.md index f9665a1..d3847bd 100644 --- a/Paper/FSL Image Classification/heidariLearningCleanReinforcement2025.md +++ b/Paper/FSL Image Classification/heidariLearningCleanReinforcement2025.md @@ -1,7 +1,6 @@ # 方法概述 ## 3.1 问题设定 - 我们假设一个带噪声的分类训练数据集 $\mathcal{D} = (\mathbf{X}, \tilde{\mathbf{Y}}) = \{(\mathbf{x}_i, \tilde{\mathbf{y}}_i)\}_{i=1}^N$,其中每个输入实例 $\mathbf{x}_i \in \mathcal{X}$ 与一个观测到的标签向量 $\tilde{\mathbf{y}}_i \in \mathcal{Y}$ 配对,该标签向量可能是真实标签向量 $\mathbf{y}_i$ 的噪声污染版本。目标是学习一个有效的预测模型,定义为复合函数 $h_\psi \circ f_\theta: \mathcal{X} \to \mathcal{Y}$,其中 $f_\theta$ 表示参数为 $\theta$ 的特征提取器,$h_\psi$ 表示参数为 $\psi$ 的分类器。我们的目标是开发一种有效的标签清洗技术,以纠正噪声标签,并使预测模型能够高效训练,而不受标签噪声带来的挑战所阻碍。 ## 3.2 基于强化学习的噪声标签校正 @@ -22,15 +21,21 @@ RLNLC 的核心是一个概率策略函数 $\pi_\theta$,它以随机方式将 令 $\mathcal{N}(\mathbf{x}_i)$ 表示基于当前 $f_\theta$ 提取的嵌入空间 $\mathcal{Z} = f_\theta(\mathbf{X})$ 中实例 $\mathbf{x}_i$ 在数据集 $\mathcal{D}$ 内的 $k$-近邻索引。对于每个实例 $\mathbf{x}_i$,我们使用注意力机制聚合其 $k$-近邻在当前状态 $s_t$ 中的标签,生成一个新的标签预测 $\bar{\mathbf{y}}_i$,该预测与 $f_\theta$ 编码的局部数据结构对齐。具体来说,$\bar{\mathbf{y}}_i$ 计算如下: -$$\bar{\mathbf{y}}_i = \sum_{j \in \mathcal{N}(\mathbf{x}_i)} \alpha_{ij} \tilde{\mathbf{y}}_j^t$$ +$$ +\bar{\mathbf{y}}_i = \sum_{j \in \mathcal{N}(\mathbf{x}_i)} \alpha_{ij} \tilde{\mathbf{y}}_j^t +$$ 注意力权重 $\{\alpha_{ij}\}$ 使用嵌入空间中的实例对相似度计算: -$$\alpha_{ij} = \frac{\exp(\text{sim}(f_\theta(\mathbf{x}_i), f_\theta(\mathbf{x}_j)) / \tau)}{\sum_{j' \in \mathcal{N}(\mathbf{x}_i)} \exp(\text{sim}(f_\theta(\mathbf{x}_i), f_\theta(\mathbf{x}_{j'})) / \tau)}$$ +$$ +\alpha_{ij} = \frac{\exp(\text{sim}(f_\theta(\mathbf{x}_i), f_\theta(\mathbf{x}_j)) / \tau)}{\sum_{j' \in \mathcal{N}(\mathbf{x}_i)} \exp(\text{sim}(f_\theta(\mathbf{x}_i), f_\theta(\mathbf{x}_{j'})) / \tau)} +$$ 其中 $\tau$ 是温度超参数,$\text{sim}(\cdot, \cdot)$ 表示余弦相似度。最后,在状态 $s_t$ 中为实例 $\mathbf{x}_i$ 采取每个元素动作 $a_i^t = 1$ 的概率(即策略函数)通过比较 $k$-近邻预测的标签向量 $\bar{\mathbf{y}}_i$ 与当前标签向量 $\tilde{\mathbf{y}}_i^t$ 来计算: -$$\pi_\theta(s_t)_i = p(a_i^t = 1) = \frac{\sum_{j=1}^C \mathbb{1}(\bar{y}_{ij} > \bar{y}_{i\tilde{y}_i}) \cdot \bar{y}_{ij}}{\sum_{j=1}^C \mathbb{1}(\bar{y}_{ij} \ge \bar{y}_{i\tilde{y}_i}) \cdot \bar{y}_{ij}}$$ +$$ +\pi_\theta(s_t)_i = p(a_i^t = 1) = \frac{\sum_{j=1}^C \mathbb{1}(\bar{y}_{ij} > \bar{y}_{i\tilde{y}_i}) \cdot \bar{y}_{ij}}{\sum_{j=1}^C \mathbb{1}(\bar{y}_{ij} \ge \bar{y}_{i\tilde{y}_i}) \cdot \bar{y}_{ij}} +$$ 其中 $C$ 表示标签向量的长度(分类的类别数),$\tilde{y}_i = \arg \max_j \tilde{y}_{ij}$ 表示状态 $s_t$ 中实例 $\mathbf{x}_i$ 的原始预测类别索引。 @@ -38,11 +43,13 @@ $$\pi_\theta(s_t)_i = p(a_i^t = 1) = \frac{\sum_{j=1}^C \mathbb{1}(\bar{y}_{ij} **具有随机策略的确定性转移** 给定状态 $s_t$,我们使用上述随机策略函数 $\pi_\theta$ 确定动作向量 $\mathbf{a}^t$,增强学习过程的探索行为。具体来说,我们从伯努利分布 $\text{Bernoulli}(p_i)$ 中随机采样每个二进制值动作元素 $a_i^t$ 的值,其中 $p_i = p(a_i^t = 1)$。给定 $(s_t, \mathbf{a}^t)$,我们然后部署一个确定性转移模型来诱导下一个状态 $s_{t+1} = \{(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1})\}_{i=1}^N$,使得: -$$\tilde{\mathbf{y}}_i^{t+1} = +$$ +\tilde{\mathbf{y}}_i^{t+1} = \begin{cases} \tilde{\mathbf{y}}_i^t & \text{if } a_i^t = 0 \\ \bar{\mathbf{y}}_i & \text{if } a_i^t = 1 -\end{cases}$$ +\end{cases} +$$ 该机制在向量空间中维护软标签分布,确保标签校正基于标签为噪声的可能性概率性地发生。通过引入随机性,学习过程探索更广泛的状态-动作对,增加发现更好策略的机会,同时避免次优解。此外,它减轻了由突然标签变化引起的干扰,允许模型自适应地从以不同状态为特征的演化环境中学习,最终增强学习系统的整体鲁棒性。 @@ -52,19 +59,25 @@ $$\tilde{\mathbf{y}}_i^{t+1} = **标签一致性奖励** 通过确定性转移机制,下一个状态 $s_{t+1}$ 是通过在给定状态 $s_t$ 下采取动作 $a_t$ 以固定方式获得的。因此,$s_{t+1}$ 中标签 $\{\tilde{\mathbf{y}}_i^{t+1}\}_{i=1}^N$ 的质量直接反映了状态-动作对 $(s_t, a_t)$ 的质量。我们设计标签一致性奖励(LCR)函数 $R_{\text{LCR}}$ 来评估 $s_{t+1}$ 中的标签质量——即每个标签与数据集的拟合程度——基于 $k$-近邻标签预测机制。为了将策略函数的影响与标签质量评估分开,我们使用一个在原始数据集上预训练的固定骨干模型 $f_\omega$ 来提取 $s_{t+1}$ 中数据实例的嵌入特征,支持 $k$-近邻标签预测。具体来说,标签一致性奖励函数量化了所有 $N$ 个实例中给定标签与 $k$-近邻预测标签之间的负 Kullback-Leibler(KL)散度,如下所示: -$$R_{\text{LCR}}(s_t, a_t) = -\mathbb{E}_{i \in [1:N]} \left[ \text{KL} \left( \tilde{\mathbf{y}}_i^{t+1}, \sum_{j \in \mathcal{N}_\omega(\mathbf{x}_i)} \alpha_{ij} \tilde{\mathbf{y}}_j^{t+1} \right) \right]$$ +$$ +R_{\text{LCR}}(s_t, a_t) = -\mathbb{E}_{i \in [1:N]} \left[ \text{KL} \left( \tilde{\mathbf{y}}_i^{t+1}, \sum_{j \in \mathcal{N}_\omega(\mathbf{x}_i)} \alpha_{ij} \tilde{\mathbf{y}}_j^{t+1} \right) \right] +$$ 这里,$\mathcal{N}_\omega(\mathbf{x}_i)$ 表示在 $s_{t+1}$ 内实例 $\mathbf{x}_i$ 的全局 $k$-近邻索引,使用 $f_\omega$ 提取的嵌入计算。注意力权重 $\alpha_{ij}$ 以与公式 (2) 类似的方式计算,但基于特征提取器 $f_\omega$。该奖励函数从预测角度评估基于局部数据结构的标签的统计平滑性,与支持预测模型训练的最终目标一致。 **噪声标签对齐奖励** 此外,为了评估标签校正动作 $a_t$ 的稳定性和鲁棒性,我们将状态 $s_{t+1}$ 中的数据分为两个子集:一个干净子集 $\mathcal{D}_{\text{cle}}^{t+1}$,包含标签未更改的实例索引——即 $a_i^t = 0$,和一个噪声子集 $\mathcal{D}_{\text{noi}}^{t+1}$,包含标签被校正的实例索引——即 $a_i^t = 1$。我们设计噪声标签对齐(NLA)奖励函数 $R_{\text{NLA}}$ 来评估噪声子集 $\mathcal{D}_{\text{noi}}^{t+1}$ 中的噪声标签与干净子集 $\mathcal{D}_{\text{cle}}^{t+1}$ 中的干净标签基于子集间 $k$-近邻标签预测机制的对齐程度,如下所示: -$$R_{\text{NLA}}(s_t, a_t) = -\mathbb{E}_{i \in \mathcal{D}_{\text{noi}}^{t+1}} \left[ \text{KL} \left( \tilde{\mathbf{y}}_i^{t+1}, \sum_{j \in \mathcal{N}_{\text{cle}}(\mathbf{x}_i)} \alpha_{ij} \tilde{\mathbf{y}}_j^{t+1} \right) \right]$$ +$$ +R_{\text{NLA}}(s_t, a_t) = -\mathbb{E}_{i \in \mathcal{D}_{\text{noi}}^{t+1}} \left[ \text{KL} \left( \tilde{\mathbf{y}}_i^{t+1}, \sum_{j \in \mathcal{N}_{\text{cle}}(\mathbf{x}_i)} \alpha_{ij} \tilde{\mathbf{y}}_j^{t+1} \right) \right] +$$ 这里,$\mathcal{N}_{\text{cle}}(\mathbf{x}_i)$ 表示对于来自噪声子集的实例 $\mathbf{x}_i$,在干净子集中识别的 $k$-近邻。$\mathcal{N}_{\text{cle}}(\mathbf{x}_i)$ 和注意力权重 $\{\alpha_{ij}\}$ 再次使用 $f_\omega$ 提取的嵌入计算。每个噪声标签 $\tilde{\mathbf{y}}_i^{t+1}$ 与其 $k$-近邻干净邻居的基于注意力的聚合之间的对齐——负 KL 散度——反映了动作 $a_t$ 应用于 $\mathbf{x}_i$ 的标签校正的统计一致性。 复合奖励函数 $R(s_t, a_t)$ 将上述两个子奖励函数集成如下: -$$R(s_t, a_t) = \exp\left( R_{\text{LCR}}(s_t, a_t) + \lambda R_{\text{NLA}}(s_t, a_t) \right)$$ +$$ +R(s_t, a_t) = \exp\left( R_{\text{LCR}}(s_t, a_t) + \lambda R_{\text{NLA}}(s_t, a_t) \right) +$$ 其中 $\lambda$ 是一个权衡超参数,用于平衡两个子奖励函数的贡献。由于负 KL 散度的值是非正且无界的,我们部署指数函数 $\exp(\cdot)$ 将奖励值重新缩放到 $(0, 1]$ 的范围。这种缩放机制对于确保奖励有界和归一化至关重要,促进了稳定的学习过程。 @@ -74,33 +87,47 @@ $$R(s_t, a_t) = \exp\left( R_{\text{LCR}}(s_t, a_t) + \lambda R_{\text{NLA}}(s_t 在该框架中,策略函数 $\pi_\theta$ 被视为“Actor”,而参数化为 $\varphi$ 的动作值函数 $Q_\varphi(s, a)$ 被引入作为“Critic”,以直接估计 Q 值,定义为 $Q(s, a) = \mathbb{E}_{\pi_\theta} \left[ \sum_{t=0}^\infty \gamma^t R(s_t, a_t) | s_0 = s, a_0 = a \right]$,它表示从状态 $s$ 采取动作 $a$ 开始的期望折扣累积奖励。Actor-Critic 方法中策略函数的学习目标可以写为: -$$J(\pi_\theta) = \mathbb{E}_{s \sim \rho_{\pi_\theta}} \left[ \sum_a \pi_\theta(a|s) Q(s, a) \right]$$ +$$ +J(\pi_\theta) = \mathbb{E}_{s \sim \rho_{\pi_\theta}} \left[ \sum_a \pi_\theta(a|s) Q(s, a) \right] +$$ 其中 $\rho_{\pi_\theta}$ 表示平稳状态分布。目标关于 $\theta$ 的梯度可以表示为: -$$\nabla_\theta J(\pi_\theta) = \mathbb{E}_{s \sim \rho_{\pi_\theta}, a \sim \pi_\theta(s)} \left[ \nabla_\theta \log \pi_\theta(a|s) Q(s, a) \right]$$ +$$ +\nabla_\theta J(\pi_\theta) = \mathbb{E}_{s \sim \rho_{\pi_\theta}, a \sim \pi_\theta(s)} \left[ \nabla_\theta \log \pi_\theta(a|s) Q(s, a) \right] +$$ 上述目标中涉及的 Q 值使用 Critic 网络 $Q_\varphi$ 估计。为了学习 Critic 网络,我们使用 SARSA 方法计算时间差分(TD)误差,以对 Critic 函数进行同策略更新。时间步 $t-1$ 的 TD 误差由下式给出: -$$\delta_{t-1} = R(s_{t-1}, a_{t-1}) + \gamma Q(s_t, a_t) - Q_\varphi(s_{t-1}, a_{t-1})$$ +$$ +\delta_{t-1} = R(s_{t-1}, a_{t-1}) + \gamma Q(s_t, a_t) - Q_\varphi(s_{t-1}, a_{t-1}) +$$ Critic 网络的参数 $\varphi$ 通过以下使用 TD 误差 $\delta_{t-1}$ 的随机梯度步骤更新: -$$\varphi \leftarrow \varphi + \beta \delta_{t-1} \nabla_\varphi Q_\varphi(s_{t-1}, a_{t-1})$$ +$$ +\varphi \leftarrow \varphi + \beta \delta_{t-1} \nabla_\varphi Q_\varphi(s_{t-1}, a_{t-1}) +$$ 其中 $\beta$ 是 Critic 的学习率。 **Critic 的输入编码** Critic 网络 $Q_\varphi$ 需要状态和动作作为输入。考虑到与训练数据集大小相对应的状态和动作的潜在大维度,高效的输入编码方案对于降低计算成本至关重要。为此,我们设计了一个简单而有效的两步编码方案。首先,鉴于我们提出的 RLNLC 框架利用确定性转移机制,下一个状态 $s_{t+1}$ 由当前状态-动作对 $(s_t, a_t)$ 唯一确定。因此,我们可以使用 $s_{t+1}$ 替换相应的输入对 $(s_t, a_t)$。我们计算单个实例对 $(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1})$ 的奖励 $r(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1})$,其原理与标签一致性奖励相同: -$$r(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1}) = \exp\left( -\text{KL} \left( \tilde{\mathbf{y}}_i^{t+1}, \sum_{j \in \mathcal{N}_\omega(\mathbf{x}_i)} \alpha_{ij} \tilde{\mathbf{y}}_j^{t+1} \right) \right)$$ +$$ +r(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1}) = \exp\left( -\text{KL} \left( \tilde{\mathbf{y}}_i^{t+1}, \sum_{j \in \mathcal{N}_\omega(\mathbf{x}_i)} \alpha_{ij} \tilde{\mathbf{y}}_j^{t+1} \right) \right) +$$ 其中 $\mathcal{N}_\omega(\mathbf{x}_i)$ 是 $\mathcal{D}$ 中 $f_\omega(\mathbf{x}_i)$ 的邻居集索引,$\{\alpha_{ij}\}$ 使用公式 (2) 计算。$\exp(\cdot)$ 函数用于归一化奖励并将其限制在 $(0, 1]$ 内。接下来,我们采用分箱策略基于奖励评估对状态 $s_{t+1} = \{(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1})\}_{i=1}^N$ 进行编码,显著降低其维度。具体来说,我们考虑 $N_b$ ($N_b \ll N$) 个箱,并根据以下规则将 $s_{t+1}$ 中的每个实例-标签对 $(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1})$ 分配到一个箱中: -$$(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1}) \in B_j \quad \text{if} \quad r(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1}) \in \left( \frac{j-1}{N_b}, \frac{j}{N_b} \right]$$ +$$ +(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1}) \in B_j \quad \text{if} \quad r(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1}) \in \left( \frac{j-1}{N_b}, \frac{j}{N_b} \right] +$$ 其中 $B_j$ 表示第 $j$ 个箱,$j \in [1 : N_b]$,$r(\mathbf{x}_i, \tilde{\mathbf{y}}_i^{t+1})$ 是使用公式 (12) 在单个给定实例上计算的标签一致性奖励的指数。分箱后,我们构建一个长度为 $N_b$ 的向量 $\mathbf{v}_{t+1}$ 来编码状态 $s_{t+1}$,每个条目表示分配到对应箱的实例比例,使得: -$$v_{t+1}^j = |B_j| / N$$ +$$ +v_{t+1}^j = |B_j| / N +$$ 其中 $|B_j|$ 表示第 $j$ 个箱中的实例数。该编码过程作为 Critic 网络 $Q_\varphi$ 的一部分部署,将输入 $(s_t, a_t)$ 转换为一个简单的向量 $\mathbf{v}_{t+1}$,促进后续学习并提高计算效率。 @@ -110,22 +137,22 @@ $$v_{t+1}^j = |B_j| / N$$ ## 流程图概述 -```graph TD -    A[初始噪声数据集 D] --> B[预训练特征提取器 fθ] -    B --> C[初始化状态 s0] -    C --> D{Actor-Critic 学习循环} -    D --> E[Actor πθ: 基于KNN计算校正概率] -    E --> F[采样动作 at] -    F --> G[确定性转移至 st+1] -    G --> H[Critic Qφ: 计算奖励 Rst,at] -    H --> I[更新 Actor 和 Critic 参数] -    I --> J{达到终止条件?} -    J --否--> D -    J --是--> K[使用训练好的 πθ 进行 T' 步标签清洗] -    K --> L[获得清洗后标签 sT'] -    L --> M[在清洗后数据上微调预测模型 hψ∘fθ] -    M --> N[最终模型] +```mermaid +graph TD + A[初始噪声数据集 D] --> B[预训练特征提取器 fθ] + B --> C[初始化状态 s0] + C --> D{Actor-Critic 学习循环} + D --> E[Actor πθ: 基于KNN计算校正概率] + E --> F[采样动作 at] + F --> G[确定性转移至 st+1] + G --> H[Critic Qφ: 计算奖励 Rst,at] + H --> I[更新 Actor 和 Critic 参数] + I --> J{达到终止条件?} + J --否--> D + J --是--> K[使用训练好的 πθ 进行 T' 步标签清洗] + K --> L[获得清洗后标签 sT'] + L --> M[在清洗后数据上微调预测模型 hψ∘fθ] + M --> N[最终模型] +``` -该流程图概括了 RLNLC 方法的关键步骤:从初始化开始,通过 Actor-Critic 框架迭代学习标签校正策略,然后应用该策略清洗标签,最后在清洗后的数据上训练最终预测模型。 - -Comment: NeurIPS 2025 \ No newline at end of file +该流程图概括了 RLNLC 方法的关键步骤:从初始化开始,通过 Actor-Critic 框架迭代学习标签校正策略,然后应用该策略清洗标签,最后在清洗后的数据上训练最终预测模型。 \ No newline at end of file