分布视角下的 SFT、RL 与 On-Policy Distillation(19 分钟阅读)

TLDR AI 论文

摘要

本文从分布视角分析语言模型的后训练方法,对比 SFT、RL 和 On-Policy Distillation 如何重塑模型分布,及其对灾难性遗忘等现象的影响。

诸如 SFT、RL 和 On-Policy Distillation 等不同后训练方法会以独特的方式重塑模型分布,进而影响性能并带来灾难性遗忘的风险。RL 利用当前策略样本的奖励来更新策略,在提升任务性能的同时最小化遗忘;相比之下,SFT 使模型偏向外部数据,可能损害现有能力。实验表明 On-Policy Distillation 的表现可超越其教师模型,这说明 On-Policy 采样数据对于保留能力至关重要,是未来算法设计的关键要素。
查看原文 导出为 Word 导出为 PDF
查看缓存全文

缓存时间: 2026/05/11 18:35

# SFT、RL 与在线策略蒸馏:一种分布视角 来源:https://nrehiew.github.io/blog/sft_rl_opd/ RL distribution我一直从分布的角度思考后训练方法。语言模型是序列上的一个分布。当我们对它进行后训练并试图教会它一项任务时,我们其实是在重塑这个分布。不同的后训练方法,区别在于它们如何重塑这个分布、把什么当作目标以及定义这个目标的方式有多直接。 这个说法既不算精确,也不追求完全严谨。我只是觉得它是一个有用的思维模型,而且它能解释 SFT、RL 和在线策略蒸馏之间许多的本质差异。这就是我这篇文章想要探讨的直觉。 ## 后训练的分布视角 在这一视角下,最需要问的问题是:我们要优化的目标分布是什么? ### SFT:一个固定的外部目标分布 SFT 是最简单的例子。 你有一个标注好的数据集。可能是人类写的,也可能是更强的模型生成的。无论如何,这个数据集在训练前就已经存在。然后你在初始模型上做交叉熵训练。用分布的语言来说,当前模型是一个分布,数据集定义了另一个分布。SFT 把模型拉向数据集的分布。 由于负对数似然的性质,你从哪个分布开始其实并不重要。这就是我认为 SFT 有一种非常自然的灾难性遗忘失效模式的原因。如果数据集的分布离模型原始分布很远,模型没有内建的理由去选择一个更近的解,它就是直接地、纯粹地被拉向所示范的 token。 这并不意味着 SFT 不好。SFT 极其有用。但从几何角度看,它是朝着一个外部目标的非常直接的拉动,几乎不考虑初始策略。这使得它很适合那些需要彻底改变期望输出格式的“冷启动”类任务。 起始模型分布与数据集/SFT 目标:密集的灰色虚线箭头表示均匀的 SFT 压力;青色箭头指向最小编辑行为的有用更新;锈色箭头指向对句法、推理和其他区域产生的附带压力。 (https://nrehiew.github.io/blog/sft_rl_opd/images/sft_distribution.svg)SFT 在整个模型分布上施加均匀的梯度压力,不仅是与新任务相关的区域。箭头代表参数更新的方向;它们源自高峰(高概率的已有能力)、低谷以及起始分布的所有其他区域。青色箭头表示将模型移向目标行为的更新;橙色箭头表示可能侵蚀先前能力的附带压力。灾难性遗忘之所以出现,是因为交叉熵损失没有内建机制来区分任务关键 token 和数据集中的偶发产物。### RL:最大期望奖励的方向 在线强化学习(RL)看起来不同。模型从自己身上采样;这些样本被某个奖励函数评分;然后模型被更新以通过策略梯度提升它获得的期望奖励。 这里,“目标分布”的概念更难定义。我会在后面的章节再次讨论,但大致来说,不存在一个任意的外部分布来把模型拉过去。 RL distribution (https://nrehiew.github.io/blog/sft_rl_opd/images/rl_distribution.svg)RL 仅通过从当前策略采样的行为施加梯度压力。绿色点代表在线策略 rollout,橙色环点表示高奖励样本,它们在更新中占主导地位。虚线轮廓表示概率质量被移向高奖励轨迹后的更新策略。与 SFT 在外部数据集上施加 token 级别的压力不同,RL 主要重塑模型已经访问过的高概率区域。这种局部性有助于解释为什么 RL 能提升任务表现,却不会对无关能力施加同样的广泛压力。当然,这只有在奖励有意义时才成立。在 RLVR(可验证奖励的 RL)中,奖励方向往往是质量的良好代理,因此沿着奖励方向移动应该能得到更好的模型。在 RLHF(基于人类反馈的 RL)中,奖励模型并不完美,情况就更复杂了。我们稍后再讨论这一点。 ### 在线策略蒸馏:伪 RL 在线策略蒸馏(OPD)介于 SFT 和 RL 之间。和 SFT 一样,它有教师信号。学生被训练去匹配另一个分布,但和 RL 一样,数据来自学生。每一步,算法都在执行在线策略采样,但梯度会通过反向 KL 散度将模型拉向教师的分布。粗略地说,OPD 本质上可以看作类似于 RL,只不过它不是通过优势来加权完成结果,而是使用学生与教师之间的对数比率来加权。 OPD 的一个新变体是在线策略自蒸馏 (OPSD) (https://arxiv.org/abs/2601.18734)。教师和学生是同一个模型,但在计算“教师”的对数概率时,教师会接收到参考解作为前缀。其思路是,教师所拥有的这种特权信息将提供学习信号。 这个方法的问题是,由于学生模型和教师模型是同一个,它们对大多数 token 的输出都非常相似。作者进行了逐 token 的 KL 分析,发现风格或枢纽 token(如“wait”或“alright”)的 KL 值可能比数学 token(如“power”、“exponent”或“logarithm”)更高。因此,如果我们对这些不重要的 token 更新过于激进,模型可能会崩溃。解决方案是引入一个逐 token 的裁剪机制以防止过度更新。 [](https://nrehiew.github.io/blog/sft_rl_opd/images/opsd_token.png)在所有思考配置中,风格 token 的逐 token KL 散度明显更高,而数学 token 的 KL 散度最低。这就是为什么 OPSD 更像 RLHF 而不是 RLVR。在 RLHF 中,奖励模型的信号偏差更大,因此我们使用 KL 惩罚和信赖域式的裁剪来避免过度优化错误的东西。在 OPSD 中,教师信号也与任务重要性不完全相关,因为一些高 KL token 可能仅仅是风格。有了可验证的奖励,奖励函数的偏差更低。这就是为什么(除了其他原因)人们在 RLVR 中更愿意移除显式的 KL 惩罚或放松信赖域约束(使用 GRPO 而非 PPO)。 一个常见的论点是,使用结果奖励的 RLVR 很难进行逐 token 的信用分配,并且优势函数每轮只提供 O(1) 比特的信息 (Schulman et al., 2025 (https://thinkingmachines.ai/blog/lora/))。OPSD 似乎是另一个极端,每个 token 都得到其独特的“奖励”,但该算法每次更新引入了更多的噪声和偏差。 ## 不同教师模型下的在线策略蒸馏 这个实验的设置使用了我的最小代码编辑任务。强烈建议先阅读我之前的文章 (https://nrehiew.github.io/blog/minimal_editing/) 以获取一些背景信息。简单总结一下:给模型一个有错误的函数,要求它只修复 bug,不做任何其他改动。我们检查模型的解是否有效,以及函数中是否有任何其他部分被重写(相对于原始的未损坏函数)。我喜欢这个环境,因为它能帮助测试两件事: 1. **泛化**:我可以在一组损坏类型上训练模型,然后在另一组不同的损坏上评估它。这让我可以问:模型到底是学到了最小编辑的一般行为,还是仅仅学会了逆转特定的损坏。 2. **灾难性遗忘**:与标准的代码生成任务不同,最小编辑是一种小众的编程行为。因此,我可以在 LiveCodeBench 上评估微调模型,检查其代码生成能力是否有任何下降。 在这个实验中,我首先用 SFT 和 RL 分别训练了两个教师模型。两个教师的表现复现了前一篇文章中的结果。两者都学会了最小编辑行为,但 RL 泛化得更好,且没有出现明显的遗忘,而 SFT 则在通用代码生成上表现出退化。在进行 OPD 之前,我原本预期从 RL 教师蒸馏出的学生会表现更好。 | 模型 | Pass@1 ↑ | 归一化 Levenshtein ↓ | Added CC ↓ | LiveCodeBench v6 ↑ | | :--- | :--- | :--- | :--- | :--- | | **教师** | | | | | | SFT | 0.775 | 0.450 | 0.450 | 0.286 | | RL | 0.792 | 0.063 | 0.206 | 0.320 | | **学生 (OPD)** | | | | | | OPD SFT 教师 | **0.800** | 0.059 | **0.206** | 0.297 | | OPD RL 教师 | 0.787 | **0.055** | 0.228 | **0.314** | 教师与在线策略蒸馏学生在最小编辑任务(域外损坏)和 LiveCodeBench v6 上的比较。结果并非如此。 由 SFT 教师训练出的 OPD 学生和由 RL 教师训练出的 OPD 学生最终看起来极其相似。更令人惊讶的是,两个 OPD 学生都略微优于 RL 教师,并显著优于 SFT 教师。尽管 RL 教师在其自身的训练过程中获得了更高的最终奖励,这一结果仍然成立。 此外,尽管 SFT 教师在通用代码生成上表现出退化,而 RL 教师没有,但从两个教师训练出的 OPD 学生都只显示出轻微的遗忘。OPD 学生比 SFT 教师遗忘得更少,即使教师本身就是退化的 SFT 模型。这非常令人惊讶,因为如果教师的分布是主要影响因素,那么从 SFT 教师训练出的学生应该继承更多 SFT 教师的遗忘。但它没有。 这表明数据的来源(即通过在线策略采样)非常重要,而教师模型的重要性可能比我预期的要小。这是一个令人鼓舞的结果,因为它意味着我们可以“过度训练”一个专门化的模型——或许甚至通过暴力的 SFT——然后进行 OPD 来学习这项能力,同时保留我们关心的许多其他能力。 ## 为什么 RL 遗忘得更少? 有几种常见的解释,虽然我认为它们都包含一些道理,但大多数并不能完全令我满意。 ### SFT 是前向 KL,RL 是反向 KL 第一种解释通常与两种算法优化的 KL 散度方向有关。通过固定数据集上的交叉熵进行 SFT,等价于最小化前向 KL 散度(至常数项)。 $$ \begin{align} D_{KL}(p \| q_\theta) &= \sum_x p(x) \log \frac{p(x)}{q_\theta(x)} \\ &= \sum_x p(x) \log p(x) - \sum_x p(x) \log q_\theta(x) \\ &= -H(p) + H(p, q_\theta) \end{align} $$前向 KL 的覆盖众数行为可能会导致牺牲先前的众数(代表已有能力)来学习新任务。Chen et al., 2025 (https://arxiv.org/abs/2510.18874) 表明 RL 可以被视为反向 KL 的最小化。 [](https://nrehiew.github.io/blog/sft_rl_opd/images/toy_reverseKL.png)在一个玩具多模态设置中,作者表明反向 KL 比前向 KL 遗忘得更少。我发现这类论证有用但不完整。问题在于,该论证严重依赖于针对参考模型的显式 KL 正则化。但经验上,即使 KL 惩罚被移除或大幅减少,RL 仍然可以抵抗遗忘。在 RLVR 中,人们经常在比 RLHF 式设置更弱的 KL 约束下训练,然而反遗忘行为通常仍然存在。 ### SFT 具有均匀、激进的 token 级别梯度 #### 数据依赖的正则化 首先,SFT 对每一个 token 都提供密集、均等的监督。在 SFT 中,每一个被展示的 token 都被视为模型应该提升其概率的东西。这个 token 可能是任务关键性的,比如数学运算符;也可能是风格 token,比如“therefore”或“we can see that”。损失函数并不知道其中的区别,它只是推高所示范 token 的概率,从而产生广泛的更新。Diao et al. (https://arxiv.org/abs/2601.02151) 发现 SFT 包含许多低概率且低熵的 token。这意味着模型对自己的预测非常有信心,却被强迫去拟合一个不一致的真实标签,这会影响已有的表征。 相反,RL 具有某种形式的数据依赖正则化 (Lai et al., 2025 (https://arxiv.org/abs/2507.05386))。例如,在优势估计中,当组内奖励被归一化时,多样性和奖励方差较高的组比方差低的组获得的更新更小。这意味着当模型不确定时,更新幅度会自然减小。相反,对于模型稳定生成高奖励响应的样本,更新会更激进。 #### RL 的参数更新更稀疏 因此,Mukherjee et al. (https://arxiv.org/abs/2505.11711) 发现 RL 仅通过稀疏但满秩的更新来调整模型的一个小子网络,而 SFT 则引起密集的更新。类似地,Yuan et al. (https://arxiv.org/abs/2510.04454) 发现 SFT 在参数更新中有更多冗余。当他们剪枝 SFT 和 RL 更新的参数数量时发现,RL 的性能下降得快得多,这证实了 SFT 更新更冗余,而 RL 更新对最终任务表现更为关键。 虽然这两部分论证在 SFT 与 RL 的比较中都得到了经验验证,但我有点怀疑它们是否足够普适,可以用于算法分析,还是说这些结果只针对作者测试的特定领域。此外,OPD 如何融入这个图景呢? ### 我偏好的解释:在线策略数据 我最认同的解释来自 Shenfeld et al. (https://arxiv.org/abs/2509.04259)。我鼓励感兴趣的读者阅读原始论文,但其直觉用一个非常简单的 RL 版本最容易理解。假设我们使用带有 0/1 二值奖励的 REINFORCE。那么,如果奖励是 1,它贡献正训练信号;如果奖励是 0,它不贡献。在这种情况下,奖励就像一个过滤器,它看起来非常类似于拒绝采样。 如果我们回到初始的目标分布想法,RL 现在就有一个了。我们可以将最优策略定义为:在该策略下所有完成的奖励都是 1。当然,存在多个最优策略,但因为我们是基于当前策略生成的在线策略样本进行训练,这个最优分布是所有最优策略中离我们当前策略最近的那个。当我们执行一个策略梯度更新步骤时,我们正试图将当前策略拟合到这个新的最优策略,而这个最优策略隐含地与当前策略的 KL 很低。因此,RL 学到了最近的能解决任务的策略。 这给了我们一个非常不同的几何视角来思考遗忘。在线策略数据在每一个时间步都将训练过程约束在靠近起始策略的分布附近。相反,SFT 的目标分布可能任意遥远。 这就是为什么我认为 OPD 继承了 RL 的部分反遗忘行为,以及为什么从 SFT 教师蒸馏出的 OPD 学生可以比 SFT 教师本身遗忘得更少。教师是用外部数据训练的,而学生是用自己的数据训练的。即使教师提供了信号,状态分布仍然是学生的。 这也回答了为什么在线策略蒸馏可能更加鲁棒。

相似文章

超越 GRPO 与策略内蒸馏:语言模型后训练的经验性“稀疏至稠密”奖励原则

Hugging Face Daily Papers

本文提出了一种用于语言模型后训练的经验性“稀疏至稠密”奖励原则,主张应使用稀疏奖励配合稀缺的标注数据进行教师模型发现,并使用稠密奖励通过蒸馏进行学生模型压缩。作者证明,这种连接稀疏强化学习与策略内蒸馏的分阶段方法,在数学基准测试中优于在部署规模模型上直接运行 GRPO 的效果。

揭秘同策略蒸馏:其益处、危害及原因

Hugging Face Daily Papers

本文介绍了一种无需训练的框架,用于分析推理模型在逐token级别上的蒸馏信号。研究揭示,蒸馏引导在错误推理路径上更为有效,且其效果取决于学生模型的能力及任务上下文。

学会预见:揭示 On-Policy 蒸馏效率的解锁机制

arXiv cs.CL

本文研究了大型语言模型中 On-Policy 蒸馏(OPD)效率背后的参数级机制,将其归因于模块分配和更新方向上的早期“预见性”。本文提出了 EffOPD,一种即插即用方法,可在不损害最终性能的情况下将 OPD 训练速度提高 3 倍。

超越 SFT 到 RL:多模态强化学习中的黑盒策略蒸馏预对齐

Papers with Code Trending

本文介绍了 PRISM,一种在监督微调(SFT)和强化学习(RL)之间插入分布对齐阶段的方法,旨在缓解多模态模型中的分布漂移问题。该方法利用基于混合专家(MoE)判别器的黑盒对抗博弈,提升了如 Qwen3-VL 等模型的 RLVR 性能。