Self-Distilled Reasoner:用答案条件化教师监督学生自己的轨迹

Self-Distilled Reasoner 研究的不是“让模型相信自己”,而是让同一个模型在获得参考解后,为看不到参考解的自己提供更密集的训练信号。关键差别在于信息条件:学生沿自己的轨迹生成,教师在同一个前缀上额外读取正确解;在 Qwen3-1.7B 的三个数学基准上,论文报告的平均 Avg@12 从 37.1 提升到 43.4,但这不是无监督学习,也不是每一道题都超越 GRPO。

六个关键结论

  • 问题:SFT 学的是参考解的前缀,推理时却遇到自己的前缀;仅有最终正确性奖励的 RL 又可能在整组回答同对或同错时失去区分信号。
  • 机制:对学生实际走过的前缀,让拥有参考解的教师输出全词表分布,再做逐 token 蒸馏;主要实验采用前向 KL。
  • 证据:1.7B、4B、8B 的跨任务平均分均超过同表的 SFT 和 GRPO;8B 的 HMMT25 则是 GRPO 46.7 高于 OPSD 45.8。
  • 实践:每题一次短 rollout 能获得密集反馈;参考答案既可以引导教师,不一定必须作为学生直接模仿的全文。
  • 代价:需要正确参考解、额外教师前向和全词表 logits;较少的生成 token 不能直接等同于较少的端到端 GPU 时间。
  • 开放问题:教师能否识别学生已经出错的推理,并提供有效纠正,而不是仅把已知答案合理化?

同一模型为什么能成为教师

这篇工作的前因,是两种训练各有一个缺口。专家 SFT 能直接告诉学生每一步写什么,但只在专家访问过的前缀上教学;结果奖励 RL 能在学生真实尝试上学习,却通常只在末尾确认整条回答对不对。问题于是变成:能不能保留学生自己尝试的状态,同时取得比“最后错了”更有信息量的反馈?On-policy distillation(OPD)回答的是这个交叉位置的问题。

普通 OPD 可以请一个更强的外部教师读学生的前缀。OPSD 则换了优势来源:不增加模型规模,而是给教师参考解。其研究假设不是“学生凭空产生了更多知识”,而是已有模型在看见正确解后,可能比独立生成正确解更善于判断下一步。如果这个假设不成立,自蒸馏只会把不可靠判断变成更多监督。这是理解后续实验的核心,而不是“自我提升”四个字。

令问题为 \(x\),参考解为 \(y^\star\),学生已生成的前缀为 \(\hat y_{<t}\)。学生分布是 \(p_S(\cdot\mid x,\hat y_{<t})\),教师分布则是 \(p_T(\cdot\mid x,y^\star,\hat y_{<t})\)。教师的优势来自额外上下文,而非一定更多的参数。这个设定与答案条件化的 rationalization 有关:已知目标答案,可以帮助模型判断接下来应该走向哪里。

重要的实现细节:论文概念上讨论同模型不同上下文,实际实验将教师冻结为初始策略,学生随后继续更新。因此不能把结果解释成“教师与学生永远共享当前权重”的在线自改进。模型规模相同,也不意味着训练信息相同。

蒸馏的对象不是参考轨迹,而是学生状态

从学生采样 \(\hat y\sim p_S(\cdot\mid x)\),在每个访问到的状态上计算:

\[\mathcal L_{\mathrm{FKL}}=\mathbb E_{x,\hat y}\!\left[\frac1{|\hat y|}\sum_t\sum_{v\in\mathcal V}p_T(v\mid x,y^\star,\hat y_{<t})\log\frac{p_T(v\mid x,y^\star,\hat y_{<t})}{p_S(v\mid x,\hat y_{<t})}\right].\]

教师分布停止梯度,采样出的前缀作为训练数据处理。这里的 on-policy 是指状态由学生产生,不意味着必须对整个采样过程求导。前向 KL 的 soft targets 同时告诉学生哪些 token 应被增加、哪些应被减少;这与只给最终答案一个二元奖励不同,也与照抄参考解不同。

论文还对逐词表的散度贡献做 clipping,以限制少数强烈的风格信号。它不是 PPO 的概率比 clipping,也不是“所有 KL 小于某个阈值”的硬约束。截断会改变优化信号:稳定性收益以失去部分大误差纠正信号为代价,阈值应被当成建模选择,而非纯数值技巧。

全词表前向 KL 不等于采样 token 的反向 KL

另一种实现只对已采到的 token 计算 \(A_t=\log p_T(\hat y_t)-\log p_S(\hat y_t)\),将停止梯度的 \(A_t\) 用作策略梯度系数。它更接近反向 KL 的采样估计,和全词表前向 KL 并非同一损失。以 Qwen3-1.7B、AIME25 Avg@12 为例,前向 KL 在 50/100 步为 43.9/41.1,反向 KL 为 37.5/35.0,JSD(权重 0.5)为 36.9/39.0。这支持当前配置选择前向 KL,不能证明所有蒸馏任务都应如此。

从局部损失到实际训练:两个必要细节

散度公式并没有自动解释软目标如何教学生,也没有替实现解决序列对齐。下面先看一个固定前缀上的梯度,再跟踪一条 rollout 如何进入训练;这两步决定了方法是否真正落实了前面的动机。

前向 KL 为什么比“照抄老师”提供更多信息?

先冻结教师,并固定学生已经访问到的一个前缀。在这个状态上,前向 KL 中 \(\sum_v p_T(v)\log p_T(v)\) 不随学生变化,训练等价于最小化软标签交叉熵 \(-\sum_v p_T(v)\log p_S(v)\)。如果学生 logits 为 \(z_v\),未 clipping 的单状态损失满足:

\[ \frac{\partial\mathcal L}{\partial z_v}=p_S(v)-p_T(v). \]

这个等式由 softmax 的导数得到。它说明即使学生没有采到教师认为应增加的 token,该 token 仍可收到更新。硬标签 SFT 只把质量推向一个指定续写;全词表软目标则可以同时认可几条合理续写,并降低一组误导性的选择。这里讲的是局部、未截断、固定前缀的梯度,不能当成整段自回归采样目标的完整导数。

教学例子:在一个推理分叉点,把三个抽象“下一步”记为继续错误路线、纠正、另一种合法方法。假设学生概率是 \((0.6,0.3,0.1)\),教师是 \((0.1,0.6,0.3)\),logit 梯度就是 \((0.5,-0.3,-0.2)\)。下降更新会压低错误路线,并提高两条可取路线,而不必等待整个答案成功。它只是梯度说明,不是把实际推理步骤当作单个 token 的实验。

从一个训练样本到一次更新

实现时,学生先只根据问题生成 \(\hat y\)。教师输入则由问题、参考解、适当的引导提示和同一条学生回答构成;教师不必再自回归生成一份新解,可以通过前向计算得到每个学生前缀后的 logits。随后按“下一 token 所对应的语义位置”对齐两套分布,屏蔽问题和参考解等 prompt token,才计算回答区域的散度。

对齐不能直接使用两份输入中的相同数组下标,因为教师的额外参考解会改变序列长度。也不能让学生的 prompt 偷偷包含答案,否则蒸馏训练条件与测试条件就不一致。teacher logits 停止梯度、padding mask、EOS 与截断位置,都属于这个机制本身的实现要求,不是最后才添加的工程细节。

还有一个微妙处:常用实现重新采样学生状态,却不反向传播“参数改变后未来会访问哪些状态”的那部分依赖。因此它是交替采样、局部模仿的学习流程。把论文写出的嵌套期望理解成“代码精确优化了包含整个状态分布导数的目标”,会把理论表达与训练估计混为一谈。

结果为什么要按规模和预算分别读

训练数据取自 OpenThoughts 数学部分。下表完整保留主表的三个模型、四种方法;指标为 Avg@12,即每题重复采样后的平均正确率,而非“十二次有一次正确”的 Pass@12。评估温度 1.0、最大生成长度约 38k,启用 thinking mode。OPSD 在 100 步内每 20 步选最优检查点,GRPO 报告 500 步内峰值,因此不是固定最终检查点的比较。

模型方法AIME24AIME25HMMT25平均(%)
Qwen3-8BBase Instruct75.865.643.961.8
8BSFT72.364.242.959.8
8BGRPO76.468.946.764.0
8BOPSD77.870.845.864.8
Qwen3-4BBase Instruct74.966.442.261.2
4BSFT70.262.343.458.6
4BGRPO75.668.144.462.7
4BOPSD76.468.346.163.6
Qwen3-1.7BBase Instruct51.536.723.137.1
1.7BSFT48.436.322.735.8
1.7BGRPO51.138.323.737.7
1.7BOPSD57.243.929.243.4

训练比较采用相同学习率与有效 batch size,并都使用 rank 64 的 LoRA。但 GRPO 每题 8 个、最长 16,000 token 的 rollout,OPSD 每题 1 个、最长 1,024 token;SFT 使用同数量样本。于是论文提供的是不同信号机制的样本效率证据,不是严格匹配 wall-clock、教师计算或实际生成总 token 的算法排名。最长上限也不是每次实际生成长度。

消融揭示什么,又没有揭示什么

Qwen3-4B 的 full-logit / sampled-token 对比采用 2,048 token 的训练生成预算,AIME25 Pass@8 为 84.1/82.1,HMMT25 为 60.0/57.3。这个消融支持软分布监督更有效,但它采用的 Pass@8 不能与主表 Avg@12 直接比较。

教师开启 thinking、学生关闭 thinking 的组合,在作者的 token 类别诊断中提供较强数学信号;这些类别由关键词划分,而且只在少量题目上统计,不是精确的“数学知识”测量。论文认为早期 token 可能是关键分叉点,短 rollout 因此有效:这是合理解释,仍需位置消融来验证。

SFT 的下降也可能与简短参考解和推理风格的冲突有关。一个更强的控制是对长度、格式和可读性匹配后的 SFT 再比较,而不是将当前下降概括成“SFT 无法训练推理”。教师已知正确答案,却未必知道正确的中间步骤;错误前缀、超出其理解范围的难题和参考解噪声,都可能产生自信但不可靠的分布监督。

延伸:密集监督不是过程正确性的同义词

以下是延伸分析。OPSD 的反馈每个 token 都有,但“密集”描述的是信号频率,不是正确性证书。教师对一个 token 的偏好可能混合数学内容、行文风格、参考解措辞和对错误前缀的顺承。若学生已写出互相矛盾的假设,教师高概率续写可能只是使文本流畅,而不是使推理重新有效。逐 token KL 小,也不自动说明学生的完整推理可靠。

这给 clipping 提供一种更具体的理解:限制特别强的局部信号,可能减少风格迁移对训练的支配;代价是有时也会削弱真正必要的纠错。要判断是哪一种,可以构造保持数学内容、只改变参考解长度或文风的配对数据。如果反馈和结果主要随文风变化,那么蒸馏吸收的不只是知识;若模型在新形式题上仍改善,机制解释才更稳固。

与过滤正确答案再做 SFT 相比,OPSD 能利用失败轨迹上的教师分布,因此不必等待整个 rollout 成功。与 E2S 相比,它不要求先生成一条有效的完整教学轨迹,而是在已有学生状态上求教师判断。前者的难点是轨迹验证与覆盖,后者的难点是教师在非专家前缀上的判断可靠性。两种路线的成本和失败模式不同,没有理由预先认定谁全面更强。

一个值得研究的组合是:先由受约束采样器提供可达的解题模式,再用 OPD 修补学生在实际执行时容易偏离的分叉点。这是本文提出的方向,并未由主表验证。需要与同预算的纯 SFT、纯 OPD 比较,尤其检查学生是否只学会了模仿参考解开头,而没有建立可迁移的中间判断能力。

如何把后续实验做成机制检验

固定初始模型、参考解和总 GPU 小时,对比冻结教师、周期刷新教师与强外部教师;同时把学生前缀按“正确、可恢复错误、不可恢复错误”分层,测量教师下一步建议的可验证正确率。这样才能分清收益来自额外答案信息、教师能力,还是更贴合学生状态的监督。检查点只在独立验证集上选择,并报告多随机种子与实际 token、教师 prefill、logit 通信成本。

结论与系列定位

OPSD 把专家信息转化为学生当前状态上的软监督,解决的是“在哪里教”和“教得多细”。E2S 则试图学习适合学生且正确的完整轨迹分布,两者不能仅因都使用答案条件化而混为同一种算法。

参考资料

Self-Distilled Reasoner: On-Policy Self-Distillation for Large Language Models:本文使用 2026 年 3 月 20 日的 v3 TeX,核对方法、主表、目标函数消融及实验配置附录;早期 v1 的评估任务和采样配置不同,不与本文表格混用。作者代码。本篇为中文研究解读,推导例子与延伸设想已分别标明。

Contact

There may be some errors present. If you find any, please feel free to contact me at wangqiyao25@mails.ucas.ac.cn. I would appreciate it!