SDPO

不得不说这篇文章的文笔挺好的。

和上一篇 OPSD在线自蒸馏 的原理是类似的,但使用了环境反馈。

数学公式就不展示了,一方面看的比较头大~~(懒)~~ ,另一方面和上一篇几乎是类似的。

两篇文章都共同指向一个问题:传统的 RLVR 训练是轨迹级的稀疏奖励,蒸馏算法通过引入更密集的 token 级奖励,能更有效的指导模型。

这理论上是 RLVR 的一个完整表述,类似 GRPO 的训练方法其将 advantage 平等放入每一个 token 下,这明显是有缺陷的,许多文章也会提到这一点,这也导致了诸如:

的各种问题。

环境反馈

一大亮点是采用了环境反馈来指导教师模型。

就比如做代码题,人类做竞赛题会有以下行为:

这些都会提供丰富的反馈信息,相比于在静态数据中手动提供额外信息,环境反馈的信息密度显然更密集,更有针对性。

大致的算法和 prompt 设计如下:

作者同样验证了非密集型任务也能通过上述流程提升性能(只不过把环境反馈去除了),例如工具调用等任务。

vs GRPO,精简输出

可以发现上述的流程比 GRPO 还要重一点。

几篇文章同时提出了蒸馏算法能更好的指导模型输出清晰简短的 token:

tricks

长尾 token 聚合

对于超大词汇表,逐个计算 KL 不太现实。

OPSD在线自蒸馏 采用了类似 DPO 的简化版对数相减来平衡计算。

该文采用 top-K,即取学生模型下概率最高的 K 个 token 做完整 KL,剩下的尾部 token 聚合成一个,据此合成一个长度 K+1 的 token 表,简化计算(但我怎么觉得效率不会快到哪去?)。

持续迭代

果然问题都是相通的。

之前提到过:对于高难度问题,前期模型大概率不具备解决该问题的能力。

sdpo-traceloop.png

重复采样就有用场了,本质是上下文的增长问题。

后话

现阶段的自蒸馏在于研究如何更好的提供额外信息反馈指导。

作者也尝试过将自蒸馏和 GRPO 糅合在一起(advantage 加权融合),但最终效果不如直接蒸馏理想。思来想去或许轨迹上的结果奖励不能直接嵌在每一个 token 上面,宏观结果对微观的行为约束有限。况且,从长远来看,教师模型应该有能力学习到这种复杂的调配关系,而不是现在的直接用散度近似分布。