老师明明看出了学生的错,却顺着错下去——CriticOPD 用一次"批评"把蒸馏监督救回来
做 on-policy distillation(在线策略蒸馏,OPD)的人大概都默认过一件事:学生在自己生成的轨迹上训练,老师在每个前缀处给出下一个 token 的分布作为监督信号,这事就完了。但上周读到的一篇论文(arXiv: 2610.20572)把这个假设拆开来看,发现了一个挺扎心的现象——当学生写错之后,老师其实看得出错误,却还是顺着学生的错误往下写。
这就像你让一位资深老师批改学生的解题过程:他心里明明清楚第 3 步算错了,但让他从第 3 步"接着写完",他写出来的答案居然有三分之一到一半的概率就是学生那个错误答案。老师的"纠错能力"和"认错的识别能力"脱节了。
这篇论文把这个脱节量化成 recoverability(可恢复性),然后用一个相当优雅的办法修复它:让老师在训练时写一段批评(critique),学生拿着批评从最后一个错误处重写自己的解答,老师带着批评给重写打分——但学生训练时不看批评。批评成了"特权信息"(privileged information),推理时学生什么都不需要。
核心摘要:CriticOPD 解决的是 OPD 的一个隐性失败模式——学生犯错后,老师的监督信号从"纠正"变成了"同流合污"。论文用 recoverability 量化这个失败(老师从错误前缀继续的正确率从 0.82 掉到 0.29),然后让老师的批评引导学生在错误点之后重写,监督的可靠性直接回到 0.67。在 Qwen3-1.7B 学生上,六个数学推理基准平均准确率从 OPD 的 50.08 提到 54.65,涨了 4.57 个点,其中 AIME 2025 单项涨了 7.36 个点。我认为这篇论文最值钱的地方不是方法本身(方法其实不复杂),而是它把"老师监督何时失效"这个模糊直觉变成了一个可测量、可分解的量——诊断部分比方法部分更漂亮。
📖 论文信息
- 标题:Recovering Reliable Supervision via Critique-Guided On-Policy Distillation
- 作者:Kaixiang Zhao, Tianrun Yu, Shangzhe Li, Yuxiao Yang, Amanda Hughes, Weitong Zhang, Taylor W. Killian
- 机构:Brigham Young University、University of North Carolina at Chapel Hill
- 发表:2026 年 10 月 14 日,arXiv: 2610.20572
- 代码:github.com/kzhao5/CriticOPD
🎯 问题:学生犯错之后,老师的监督就"变质"了
先把背景捋清楚。离线蒸馏(SFT/KD)有个老毛病叫 occupancy mismatch(占位失配):学生训练时看的是老师生成的序列,推理时走的却是自己生成的路径。一旦学生在推理时犯了错,它就进入了一个训练时几乎没见过的状态,错误开始滚雪球。
OPD 的思路很直接——让学生在自己生成的 rollout 上训练,老师在每个前缀 \(h_t=(x, y_{\lt t})\) 处给出下一个 token 分布 \(\pi_T(\cdot\mid h_t)\) 作为监督。这样训练和推理的状态分布一致了,失配问题缓解。
但这里藏着一个没被人认真检查过的假设:老师从学生的任意前缀出发,都能走到正确答案。论文把这个性质叫 recoverability:
也就是老师从前缀 \(h_t\) 继续生成后答案正确的期望概率。如果 recoverability 高,老师的 token 级分布就是个好的纠正目标;如果它塌了,OPD 的监督就名存实亡——哪怕单个 token 的分布看起来还有信息量。
作者的诊断实验做得很扎实。他们拿一个训了 80 步 OPD 的 Qwen3-1.7B 学生、Qwen3-4B-Instruct-2507 老师,在 DAPO-Math-17k 上采样 900 道题,挑 150 条对、150 条错的 rollout,每条在 1/8 到 7/8 处切七个点,每个切点让老师和学生各续写 16 次来估 \(\Lambda^T\) 和 \(\Lambda^S\)。
结果分两半:
对正确 rollout,一切正常。 \(\Lambda^T\) 全程保持在 0.93 以上,\(\Lambda^S\) 从 0.81 涨到 0.94。前缀变长本身不是问题。
对错误 rollout,断崖式下跌。 在那些老师原本就能做对的题上(初始 \(\Lambda^T \geq 0.5\)),随着学生错误前缀变长,\(\Lambda^T\) 从 0.82 掉到 0.29,\(\Lambda^S\) 从 0.34 掉到 0.10。更狠的是,错误 rollout 里 53% 的 token 是在 \(\Lambda^T \lt 0.2\) 的前缀下被监督的——而错误 rollout 占训练 token 的 61%。算下来,大约三分之一的训练 token 拿到的监督都来自一个几乎不可能走对的前缀。
说实话看到这个 1/3 的时候我愣了一下。也就是说 OPD 训练里有相当大比例的梯度,是在教一个"老师自己都不会走的路"。
那老师为什么走不对?是不会做这道题吗?作者又拆了一层:看老师续写的最终答案。随着前缀变长,老师续写以学生的错误答案收尾的比例从 1% 涨到 35%——如果只看失败的续写,这个比例从 8% 涨到 50%。而老师从空前缀出发几乎不会写出这个错误答案。所以老师不是不会做,是被学生的错误带跑了。
最有意思的对照在这:让同一个老师去指出前缀里的错误(不给参考答案),再用 Qwen3-8B 评判这些指认是否靠谱。结果在 recoverability 从 0.07 到 0.93 的五个桶里,错误指认的准确率稳定在 73%-81% 之间。
老师续写的能力崩了,认错的能力却稳如老狗。这个不对称就是整篇论文的支点。
🧠 方法:批评当特权信息,学生重写自己的错
既然老师"认得出错但改不了错",那就把认错的能力用起来。CriticOPD 的流程分四步,我用大白话讲一遍:
触发:学生对每道题生成一条 rollout。做对的,走标准 OPD 训练;做错的(或者超长没出答案的),进入批评-重写流程。
批评:老师当批评家,拿到题目、参考答案、和学生解答的分段编号版本,列出所有错误——每个错误标注段落号、错误原句、一句话修正建议。参考答案在这里很关键:它让老师连自己做不对的题也能批评。如果批评里没有一个完整错误,回退到标准 OPD。
切点:学生保留到最后一个错误所在段落为止的前缀 \(h_\tau\),后面全扔掉。重写就从错误发生的位置开始——正是 recoverability 崩塌的那个状态。
重写:学生把批评 \(c\) 拼到保留前缀后面,生成新的后缀,得到修正后的 rollout \(\tilde{y}\)。注意,训练序列里的每一个 token 都是学生自己写的,老师一个字都没替学生写——这是它和 teacher takeover 类方法(TRD、SKD、RelayOPD)的本质区别。
训练目标上,正确的 rollout 用标准 OPD 的 reverse KL;带批评的 rollout 用反馈蒸馏 loss:
看仔细这个式子:老师打分的时候看着批评 \(c\),学生的 log 概率却不含 \(c\)。只有重写的后缀(\(t \geq \tau\))被监督,保留前缀不监督——因为那里全是错误状态,监督也没用。批评就是 Vapnik 意义上的特权信息:训练时用,推理时扔。
这个设计妙在哪?作者测了重写前后老师的 recoverability:在原始错误 rollout 上,切点后 75% 位置处老师 recoverability 只有 0.14;在学生带着批评重写的轨迹上,直接跳到 0.67。学生自己(不看批评)从同位置出发的成功率也从 0.03 涨到 0.16。批评把监督信号从"不可信"拉回了"基本可信"。
📊 实验:数学竞赛题上提升最大
设置:学生是 Qwen3-1.7B 和 Qwen3-0.6B(都是 non-thinking 模式),老师是 Qwen3-4B-Instruct-2507,训练数据是 DAPO-Math-17k 的 prompt。评测在 AIME 2024/2025、AMC 2023、MATH500、OlympiadBench、Minerva Math 六个基准上,前三者每题采 32 个样本,其余 8 个,每个方法跑三个种子。
基线分了四类,这个分类本身就挺有信息量:
| 类别 | 代表方法 | 思路 |
|---|---|---|
| 标准后训练 | SFT、KD、GRPO、OPD | 常规蒸馏或结果奖励 |
| 特权信息 | OPSD-T、Critique-GRPO | 训练时用参考答案/批评 |
| 减少监督 | FastOPD | 截断长 rollout,躲开不可靠区域 |
| 替换序列 | TRD、SKD、RelayOPD | 老师接管或重写学生轨迹 |
主结果(Table 1,三种子均值±标准差):
| 方法 | Qwen3-0.6B 平均 | Qwen3-1.7B 平均 |
|---|---|---|
| 学生初始 | 16.43 | 34.07 |
| SFT | 23.83 | 46.74 |
| GRPO | 21.06 | 45.38 |
| Critique-GRPO | 14.23 | 31.85 |
| OPD | 34.80 | 50.08 |
| OPSD-T | 36.62 | 51.01 |
| FastOPD | 37.29 | 52.55 |
| RelayOPD | 38.10 | 53.68 |
| CriticOPD | 38.86 | 54.65 |
CriticOPD 相比 OPD,1.7B 上 涨 4.57 个点,0.6B 上 涨 4.06 个点,两个尺度上都在六个基准中的五个拿到最好成绩。提升集中在竞赛题:1.7B 上 AIME24、AIME25、AMC23 分别涨了 6.01、7.36、6.94 个点,而 Minerva 只涨 0.66——越难、越需要长程纠错的题,收益越大,这跟方法的机理完全对得上。
有几个对照值得说。同样用特权信息的 OPSD-T(老师带参考答案打分)只比 OPD 好 0.93/1.82 个点,说明"参考答案进上下文"本身不够,批评的针对性才是关键。Critique-GRPO(学生拿批评修改,用结果奖励优化)甚至不如初始学生——批评引导的修改配上粗糙的结果奖励,反而训坏了。这个对照挺打脸的:光有"批评"这个概念没用,怎么把批评变成 token 级信号才是重点。
数学之外,CriticOPD 平均 70.69,和 OPD 的 70.47 基本持平,代码基准略有下降——没有明显的领域外退化。
消融实验(Qwen3-1.7B,单种子,Table 2):
| 变体 | AIME | 平均 | Δ |
|---|---|---|---|
| CriticOPD 完整版 | 34.79 | 54.57 | – |
| 反馈去掉参考答案 | 34.58 | 53.72 | 降 0.85 |
| 反馈去掉批评 | 28.22 | 48.67 | 降 5.90 |
| 批评+答案换成通用反馈 | 33.85 | 53.11 | 降 1.46 |
| 后缀换成老师来写 | 33.18 | 53.06 | 降 0.66 |
| 老师打分时不看反馈 | 33.02 | 52.53 | 降 1.19 |
| 纯 OPD | 28.70 | 50.18 | 降 4.39 |
去掉批评这一项直接掉穿 OPD,而且"只给参考答案"比 OPD 还差——作者的解释我觉得是对的:学生拿着答案重写,会学会"直接报答案"而不是"推导到答案",训练出了一批会背答案不会做题的轨迹。
另外两处细节:后缀让老师来写只掉 0.66 个点,说明"学生自己写"贡献的是 occupancy mismatch 的减小,而不是监督质量本身;老师打分时不看批评掉 1.19 个点,正好印证了第 2 节的诊断——在错误之后的状态上,不带批评的老师就是不可靠的。
🔬 收益从哪来:一张图讲清楚可靠性×失配的权衡
这是全文我最喜欢的一张图(Figure 7)。作者把每个方法放在两个维度上:横轴是 occupancy mismatch(方法监督的 token 位置分布与学生推理时访问的位置分布之间的总变差距离),纵轴是 teacher reliability(被监督状态上老师的平均 recoverability),颜色是学生最终平均准确率。

Figure 7:CriticOPD 位于"高可靠性、低失配"的左上角附近,颜色最深(准确率最高);OPD 失配最低(0.10)但可靠性不足,RelayOPD 可靠性尚可但失配高达 0.35,FastOPD 居中(0.21)但丢掉了 8k 之后的所有监督位置。
数字是这样的:CriticOPD 失配 0.16,略高于 OPD 的 0.10,远低于 FastOPD 的 0.21 和 RelayOPD 的 0.35——同时它拿到了所有方法里最高的老师可靠性。之前的两类方法(截断/接管)都是在"牺牲失配换可靠性"或反过来,CriticOPD 是第一个把两头都占住的。原因很直白:重写从切点一直跑到回答结束,后段状态没被丢掉;而且所有 token 都是学生写的,分布没被老师的文风污染。
附录里还有一张隐状态图(Figure 13)给了更直接的证据。把各方法监督的前缀处学生隐状态投影到推理状态的前两个主成分上,用分类器估总变差距离的上界:

Figure 13:左上是推理时学生实际访问的隐状态分布(灰色等高线包住 95%)。OPD 和 CriticOPD 的监督状态几乎完美覆盖推理分布(距离仅 0.05),而 TRD 高达 0.50、SFT/KD 为 0.29——老师写的轨迹在学生隐状态空间里确实是"异乡"。
还有一手证据是把优势分解拆开看。反馈蒸馏的每个 token 优势可以精确分解为:
第二项 \(r_t\) 是批评与 token 在老师分布下的点互信息——说人话就是:批评给每个 token 额外加了一笔"这步走得对"的奖励。作者构造了 132 个切点,每个切点配一对 64 token 的续写(一个延续错误、一个纠正错误),比较两者的优势差。OPD 打分下纠正只领先 0.24/token,CriticOPD 打分下领先 1.47/token,而且 87% 的差距集中在前 32 个 token——纠错动作刚开始的那几步,正是最需要信用分配的地方。不带批评的老师几乎分不清"继续错"和"改过来",这句话现在有数字了。
学生最终学到的是"从自己错误中恢复"的能力:在 OlympiadBench(不在训练集里)上,从初始学生的错误前缀出发,CriticOPD 学生比 OPD 学生的成功率平均高 0.023,在最后两个切点处高约 0.04;而在正确前缀上两者完全一样。提升精准地落在"犯错之后"这个状态区间,一点不浪费。
🤔 我的判断
这篇论文给我的感觉像一篇"诊断驱动"的工作——方法部分三章就讲完了,真正花力气的是第 2 节和第 4.4 节的测量。recoverability 这个概念不算全新(模仿学习里 Swamy et al. 2021 就有类似提法),但把它落到 token 级蒸馏的语境里、并量出"三分之一的训练 token 在低可恢复前缀下被监督"这个数,是很有冲击力的。
亮点列三个:
一是问题定位准。OPD 监督衰减这个现象,同期好几篇工作(FastOPD 的截断、RelayOPD 的接管)都观察到了,但大家的反应是"躲开"——截掉、换掉、让老师接管。这篇是少有的正面问"为什么监督变质、能不能修好"的。批评当特权信息这个设计,把"老师认得错"和"老师改不动错"这个不对称直接变成了可利用的训练信号,想法是真的漂亮。
二是证据链完整。从诊断(recoverability 下降)→ 机理(老师跟随错误但认得错误)→ 方法(批评+重写+特权信息)→ 验证(可靠性-失配二维图、优势分解、学生恢复能力测试),每一步都有定量证据扣着,消融把每个组件的账都算清了。这种写法在蒸馏论文里不多见。
三是工程成本诚实。每条被批评的 rollout 多一次老师生成加一次学生生成,但因为收敛早,总训练算力只用了 OPD 的 0.42 倍——这个对比很公平,没藏着掖着。
问题也得说。它对参考答案的依赖是硬性的——判断哪条 rollout 要批评、老师批评时的 grounding,都要参考答案。作者自己承认这只直接适用于答案可验证的任务,代码可以用单测顶,但开放式任务就得另寻奖励模型了。另外批评的精度只有 73%-81%,有四分之一的"错误指认"是冤枉好人的;每条 rollout 只采一次批评,噪声没做进一步平滑。批评质量再往上提,收益大概率还有空间——这既是局限也是后续工作的口子。
还有一个我没完全想透的点:重写后的学生轨迹带上了"看到批评后纠错的文风",但训练时学生不看批评。优势分解里的 \(r_t\) 项其实是个 surrogate(作者自己也承认不是无偏梯度),理论上这个偏置会不会在长训练里积累,论文的训练动力学曲线只到一百多步,更长的 horizon 上没有答案。
跟同期工作比,我觉得 CriticOPD 的定位是监督信号修复这条路线上目前最干净的一个:FastOPD 是"躲",RelayOPD/SKD 是"替",它是"修"。如果你在做小模型数学蒸馏、手里有参考答案,这个方法几乎没有理由不试——实现就是在 OPD 上加一个批评-重写循环,代码也开源了。
📝 收尾
OPD 的核心矛盾其实一直没变:学生的错误状态恰恰是它最需要被教的地方,但也恰恰是老师最教不好的地方。之前的方法在这个矛盾面前选择绕行,CriticOPD 给出的答案是——老师改不了错没关系,让老师把错说出来,让学生自己重写,然后让"知道错在哪的老师"来打分。
特权信息这个老概念(Vapnik 2009 年的东西)在 LLM 蒸馏里被用出了新味道。我猜接下来会看到更多"训练时可见、推理时不可见"的信号设计——参考答案是其一,批评是其二,工具调用轨迹、验证器输出大概都在路上。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我