SDPO
不得不说这篇文章的文笔挺好的。
和上一篇 OPSD在线自蒸馏 的原理是类似的,但使用了环境反馈。
数学公式就不展示了,一方面看的比较头大~~(懒)~~ ,另一方面和上一篇几乎是类似的。
两篇文章都共同指向一个问题:传统的 RLVR 训练是轨迹级的稀疏奖励,蒸馏算法通过引入更密集的 token 级奖励,能更有效的指导模型。
这理论上是 RLVR 的一个完整表述,类似 GRPO 的训练方法其将 advantage 平等放入每一个 token 下,这明显是有缺陷的,许多文章也会提到这一点,这也导致了诸如:
- GRPO 练着练着就爆炸了的问题。
- 长上下文强化学习非常不稳定(因为每一个 token 都要参与损失计算,方差爆大)。
的各种问题。
环境反馈
一大亮点是采用了环境反馈来指导教师模型。
就比如做代码题,人类做竞赛题会有以下行为:
- 挂了,看看编译输出,或者答案比对输出,定位问题。
- 实在不会,看看题解,根据其他的正确代码 debug 自己的代码。
这些都会提供丰富的反馈信息,相比于在静态数据中手动提供额外信息,环境反馈的信息密度显然更密集,更有针对性。
大致的算法和 prompt 设计如下:
- 每个问题采样
组输出。 - 如果为密集信息型问题(代码等),则获得一个环境反馈,非密集信息只看最终答案对不对。
- 对教师的 prompt 中,如果
组输出中有一个最终答案是对的,则随机选择一个正确解答附带。并且,附带与之相对的学生输出的环境反馈。 - 执行
计算。
作者同样验证了非密集型任务也能通过上述流程提升性能(只不过把环境反馈去除了),例如工具调用等任务。
vs GRPO,精简输出
可以发现上述的流程比 GRPO 还要重一点。
几篇文章同时提出了蒸馏算法能更好的指导模型输出清晰简短的 token:
- RLVR 训练下模型的单次 token 量很大。浅层来想,RLVR 需要模型自己探索正确的推理路径,如果一个推理路径形如 “先这样,不对,再这样,还不对再这样...” ,直接的验证奖励只会告诉模型这个轨迹是正确的,需要学习;而教师蒸馏相当于重新采样,是一个自我改进的过程,其会学习到一个更加精简的推理路径指导。
- 由于有这种自学习的过程,SDPO 的收敛效率极快,在消融实验重,比 GRPO 的收敛快
倍以上。
tricks
长尾 token 聚合
对于超大词汇表,逐个计算 KL 不太现实。
OPSD在线自蒸馏 采用了类似 DPO 的简化版对数相减来平衡计算。
该文采用 top-K,即取学生模型下概率最高的
持续迭代
果然问题都是相通的。
之前提到过:对于高难度问题,前期模型大概率不具备解决该问题的能力。

重复采样就有用场了,本质是上下文的增长问题。
后话
现阶段的自蒸馏在于研究如何更好的提供额外信息反馈指导。
作者也尝试过将自蒸馏和 GRPO 糅合在一起(advantage 加权融合),但最终效果不如直接蒸馏理想。思来想去或许轨迹上的结果奖励不能直接嵌在每一个 token 上面,宏观结果对微观的行为约束有限。况且,从长远来看,教师模型应该有能力学习到这种复杂的调配关系,而不是现在的直接用散度近似分布。