diff --git a/.obsidian/plugins/obsidian-quiet-outline/markdown-states.json b/.obsidian/plugins/obsidian-quiet-outline/markdown-states.json index ce2ab8f..4abc143 100644 --- a/.obsidian/plugins/obsidian-quiet-outline/markdown-states.json +++ b/.obsidian/plugins/obsidian-quiet-outline/markdown-states.json @@ -12,5 +12,19 @@ } }, "expandedKeys": [] + }, + "Untitled.md": { + "scroll": 113.28961240310078, + "cursor": { + "from": { + "line": 123, + "ch": 17 + }, + "to": { + "line": 123, + "ch": 17 + } + }, + "expandedKeys": [] } } \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index e059f63..7873ae5 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -11,10 +11,14 @@ "id": "4f4081000e4e799b", "type": "leaf", "state": { - "type": "empty", - "state": {}, + "type": "markdown", + "state": { + "file": "Untitled.md", + "mode": "source", + "source": false + }, "icon": "lucide-file", - "title": "New tab" + "title": "Untitled" } } ] @@ -195,6 +199,7 @@ }, "active": "4f4081000e4e799b", "lastOpenFiles": [ + "Untitled.md", "Books/代码随想录/代码模版.md", "Research/FSL/提示工程.md", "Paper/FSL Image Classification/Context Attribute words for Prompt Tuning.md", @@ -231,7 +236,6 @@ "Paper/未命名.md", "Books/动手学深度学习/基础概念.md", "liangOpenVocabularySemanticSegmentation2023.md", - "Books/HDLBits/Verilog.md", - "Record/Linux/常用软件.md" + "Books/HDLBits/Verilog.md" ] } \ No newline at end of file diff --git a/Untitled.md b/Untitled.md new file mode 100644 index 0000000..6c21a41 --- /dev/null +++ b/Untitled.md @@ -0,0 +1,128 @@ +根据您提供的论文内容,我将详细解释该方法的核心思想、流程和关键公式。 + +## 一、方法概述 + +论文提出了一种基于**强化学习**的噪声标签清洗方法(RLNLC)。该方法将噪声标签的清洗过程建模为一个**马尔可夫决策过程**,通过训练一个智能体(策略函数)来学习如何修正数据集中错误的标签。 + +整个方法的**核心目标**是:学习一个有效的策略函数 \(\pi_{\theta}\),该函数能够智能地决定是否需要对每个数据实例的标签进行修正,从而生成一个“干净”的数据集,用于训练最终的分类模型 \(h_{\psi} \circ f_{\theta}\)。 + +## 二、强化学习框架设计 + +该方法将标签清洗问题形式化为一个MDP,其关键组件定义如下: + +### 1. 状态 + +状态 \(s_t\) 在任意时间步 \(t\) 被定义为当前的数据集及其(修正后的)标签: +\[ +s_t = \mathcal{D}_t = (X, \hat{Y}^t) = \{ (x_i, \hat{y}_i^t) \}_{i=1}^N +\] +- \(X\) 是输入实例的集合。 +- \(\hat{Y}^t\) 是时间步 \(t\) 对应的观测标签集合。 +- 初始状态 \(s_0^0\) 为原始噪声数据集 \(\mathcal{D}\)。为了增加探索性,方法会随机扰动一小部分标签来生成真正的初始状态 \(s_0\)。 + +状态的演变直观地反映了标签清洗的进程,其流程如下: + +```mermaid +flowchart TD + A[初始噪声数据集
s₀] --> B[策略函数 πθ
根据当前状态 st 选择动作 at] + B --> C[状态转移
根据动作 at 更新标签,
生成新状态 st+1] + C --> D{是否达到
终止条件?} + D -- 否 --> B + D -- 是 --> E[输出最终状态 s_T'
即“清洗”后的干净数据集] +``` + +### 2. 动作与策略函数 + +**动作空间** \(\mathcal{A}\) 被定义为在所有数据实例上进行标签修正决策的二进制向量空间。对于一个动作向量 \(a = [a_1, \cdots, a_i, \cdots, a_N] \in \mathcal{A}\),其中每个元素 \(a_i \in \{0, 1\}\) 表示是否需要对实例 \(x_i\) 的当前标签进行修正(\(a_i = 1\) 表示需要修正)。 + +**策略函数** \(\pi_{\theta}\) 是该方法的核心,它是一个概率函数,接收当前状态 \(s_t\),并输出对每个数据实例执行修正动作(即 \(a_i^t = 1\))的概率。该概率基于“标签一致性”原则计算:如果一个实例的标签与其k近邻的标签不一致,则该标签更可能是噪声。 + +策略函数 \(\pi_{\theta}(s_t)_i = p(a_i^t = 1)\) 的计算过程如下: + +1. **特征提取**:使用特征提取网络 \(f_{\theta}\) 为每个实例 \(x_i\) 生成嵌入特征。 +2. **寻找近邻**:在嵌入空间中为 \(x_i\) 找到 \(k\) 个最近邻实例,其索引集合记为 \(\mathcal{N}(x_i)\)。 +3. **近邻标签聚合**:使用注意力机制聚合近邻的标签,生成一个新的标签预测 \(\bar{y}_i\): + \[ + \bar{y}_i = \sum_{j \in \mathcal{N}(x_i)} \alpha_{ij} \hat{y}_j^t + \] + 其中,注意力权重 \(\alpha_{ij}\) 由实例间嵌入特征的余弦相似度计算: + \[ + \alpha_{ij} = \frac{\exp(\text{sim}(f_{\theta}(x_i), f_{\theta}(x_j)) / \tau)}{\sum_{j' \in \mathcal{N}(x_i)} \exp(\text{sim}(f_{\theta}(x_i), f_{\theta}(x_{j'})) / \tau)} + \] + \(\tau\) 是温度超参数。 +4. **计算修正概率**:通过比较近邻预测标签 \(\bar{y}_i\) 和当前标签 \(\hat{y}_i^t\) 来计算修正概率: + \[ + p(a_i^t = 1) = \frac{\sum_{j=1}^C \mathbb{1}(\bar{y}_{ij} > \bar{y}_{i\hat{y}_i}) \cdot \bar{y}_{ij}}{\sum_{j=1}^C \mathbb{1}(\bar{y}_{ij} \geq \bar{y}_{i\hat{y}_i}) \cdot \bar{y}_{ij}} + \] + 其中,\(C\) 是类别数量,\(\hat{y}_i = \arg\max_j \hat{y}_{ij}^t\) 是当前标签预测的类别索引。该公式计算了在 \(\bar{y}_i\) 中,概率高于原始预测类别 \(\hat{y}_i\) 的所有类别的概率之和,并将其归一化。这有效地量化了标签不一致的程度。 + +**状态转移**是确定性的:给定状态 \(s_t\) 和采样的动作 \(a_t\),下一个状态 \(s_{t+1}\) 的标签由下式决定: +\[ +\hat{y}_i^{t+1} = \begin{cases} +\hat{y}_i^t, & \text{if } a_i^t = 0 \\ +\bar{y}_i, & \text{if } a_i^t = 1 +\end{cases} +\] + +### 3. 奖励函数 + +奖励函数 \(R(s_t, a_t)\) 用于评估动作 \(a_t\) 在状态 \(s_t\) 下的好坏,它由两个子奖励函数组合而成: + +1. **标签一致性奖励**:评估新状态 \(s_{t+1}\) 中所有标签的平滑性,即每个标签与其全局k近邻(基于一个固定的预训练特征提取器 \(f_{\omega}\))的预测标签的一致性。使用负KL散度来衡量: + \[ + R_{\text{LCR}}(s_t, a_t) = -\mathbb{E}_{i \in [1:N]} \left[ \text{KL} \left( \hat{y}_i^{t+1}, \sum_{j \in \mathcal{N}_{\omega}(x_i)} \alpha_{ij} \hat{y}_j^{t+1} \right) \right] + \] + +2. **噪声标签对齐奖励**:评估被修正的标签(“噪声”子集)与未被修正的标签(“干净”子集)之间的一致性。具体是计算每个被修正标签与其在“干净”子集中的k近邻的预测标签的负KL散度: + \[ + R_{\text{NLA}}(s_t, a_t) = -\mathbb{E}_{i \in \mathcal{D}_{\text{noi}}^{t+1}} \left[ \text{KL} \left( \hat{y}_i^{t+1}, \sum_{j \in \mathcal{N}_{\text{cle}}(x_i)} \alpha_{ij} \hat{y}_j^{t+1} \right) \right] + \] + +最终的**复合奖励函数**是这两个子奖励的加权和,并通过指数函数进行缩放,将奖励值范围约束在 (0, 1] 内,以确保学习过程的稳定性: +\[ +R(s_t, a_t) = \exp \left( R_{\text{LCR}}(s_t, a_t) + \lambda R_{\text{NLA}}(s_t, a_t) \right) +\] +其中,\(\lambda\) 是平衡两个奖励权重的超参数。 + +## 三、Actor-Critic 学习方法 + +该方法采用 Actor-Critic 算法来学习最优策略 \(\pi_{\theta}^*\)。 + +- **Actor(执行者)**:即策略函数 \(\pi_{\theta}\),负责根据当前状态选择动作。 +- **Critic(批评者)**:即动作-价值函数 \(Q_{\phi}(s, a)\),参数化为 \(\phi\),用于估计在状态 \(s\) 下采取动作 \(a\) 所能获得的期望累积奖励 \(Q(s, a) = \mathbb{E}_{\pi_{\theta}}[\sum_{t=0}^{\infty} \gamma^t R(s_t, a_t) | s_0=s, a_0=a]\)。 + +**学习目标**是最大化期望累积奖励 \(J(\pi_{\theta})\)。其梯度可通过策略梯度定理计算: +\[ +\nabla_{\theta} J(\pi_{\theta}) = \mathbb{E}_{s \sim \rho_{\pi_{\theta}}, a \sim \pi_{\theta}(s)} [\nabla_{\theta} \log \pi_{\theta}(a|s) Q(s, a)] +\] +在实践中,\(Q(s, a)\) 由 Critic 网络 \(Q_{\phi}\) 估计。 + +**Critic 网络的更新**采用 SARSA 方法进行在策略学习。时间步 \(t-1\) 的时序差分误差为: +\[ +\delta_{t-1} = R(s_{t-1}, a_{t-1}) + \gamma Q(s_t, a_t) - Q_{\phi}(s_{t-1}, a_{t-1}) +\] +参数 \(\phi\) 通过以下梯度步进行更新: +\[ +\phi \leftarrow \phi + \beta \delta_{t-1} \nabla_{\phi} Q_{\phi}(s_{t-1}, a_{t-1}) +\] +其中,\(\beta\) 是 Critic 的学习率。 + +### 批评者输入编码 + +由于状态和动作的维度很高(与数据集大小 \(N\) 相关),直接输入 Critic 网络计算代价大。因此,论文设计了一种高效的编码方案: +1. 利用确定性状态转移,用下一状态 \(s_{t+1}\) 等价表示状态-动作对 \((s_t, a_t)\)。 +2. 计算 \(s_{t+1}\) 中每个实例-标签对 \((x_i, \hat{y}_i^{t+1})\) 的个体奖励 \(r(x_i, \hat{y}_i^{t+1})\)(计算方法类似于 \(R_{\text{LCR}}\))。 +3. 使用分箱策略:根据个体奖励值将 \(N\) 个实例分配到 \(N_b\)(\(N_b \ll N\))个箱子中。 +4. 构建一个维度为 \(N_b\) 的向量 \(v_{t+1}\) 来编码状态 \(s_{t+1}\),该向量的每个元素是落入对应箱子的实例比例。 + +这样,高维的 \((s_t, a_t)\) 被压缩为低维向量 \(v_{t+1}\) 作为 Critic 网络的输入,大大提升了计算效率。 + +## 四、用于预测模型训练的标签清洗 + +学习到策略函数 \(\pi_{\theta}\) 后,按以下步骤进行标签清洗和模型训练: +1. **标签清洗**:使用训练好的策略函数 \(\pi_{\theta}\) 在原始噪声数据集 \(s_0^0\) 上运行 \(T'\) 个时间步,生成一个状态轨迹。最终状态 \(s_{T'}\) 中的标签被视为“干净”标签。 +2. **模型训练**:预测模型 \(h_{\psi} \circ f_{\theta}\) 首先在原始噪声数据集上进行预训练。其中,特征提取器 \(f_{\theta}\) 在策略学习过程中也被进一步训练。最后,使用清洗后的数据集 \(s_{T'}\) 对模型进行微调,以得到最终的高性能预测模型。 + +## 总结 + +该方法的核心创新点在于将噪声标签清洗巧妙地构建为一个序列决策过程,并利用强化学习(特别是 Actor-Critic 框架)来学习一个基于标签一致性的、可解释的清洗策略。通过奖励函数引导策略朝着产生更一致、更可靠标签的方向优化,最终获得高质量的数据集用于模型训练。 \ No newline at end of file