
2024年前后,大模型训练圈子里流行一种做法,叫在线策略蒸馏。
简单说,就是让一个小模型(学生)自己生成答案,然后让一个大模型(老师)去给这些答案打分、纠偏,一步步把学生教好。这个方法确实好用,不少前沿模型的后训练流程里都有它的身影。
但奇怪的事情发生了。
有团队发现,同样的蒸馏流程,换了个老师模型,学生就开始疯狂复读。不是偶尔说车轱辘话,是真的能把同一句"最终答案:116"连续重复365遍,一直写到8192个token的生成上限才被迫停下。更诡异的是,这个学生模型的训练损失曲线看起来完全正常,没有任何爆炸或震荡的迹象。
训练过程显示一切正常,结果却一地鸡毛。这篇来自浙江大学和西湖大学团队的论文,就是想搞清楚这背后到底发生了什么。
老师不是在教学生写作文,而是在打分
要理解这篇论文的核心发现,得先搞清楚在线策略蒸馏到底是怎么运作的。
和传统的知识蒸馏不一样,传统方法是老师写好范文,学生照着抄。在线策略蒸馏反过来:学生先自己写,老师再逐字逐句地点评这些句子写得好不好。
**这个过程本质上更接近强化学习,而不是模仿学习。**
论文里把这个机制拆解得很清楚:学生生成一段话之后,老师会对这段话的每一个词,给出一个概率分布,这个分布本质上就是在说"如果是我来写,这个位置我会怎么选"。学生和老师预测的差距,构成了一个叫KL散度的数学量。
**KL散度:** 一种衡量两个概率分布差异大小的数学指标,这里用来衡量学生的预测和老师的预测有多不一样。
通过数学推导,论文证明了这个最小化KL散度的训练目标,其实等价于一个强化学习问题:老师给学生生成的每个词打一个隐式的奖励分数,分数越高说明老师越认可这个词的选择,学生的训练目标就是让这些奖励分数之和尽量大。
这就引出一个关键区别。老师从来没有真正"教"过学生任何新东西,老师只是在给学生已经会说的话打分。
这就好比一个武术教练,不亲自下场演示招式,而是站在旁边看徒弟打拳,打得好的动作喊"好",打得差的动作喊"不对"。徒弟的进步,完全取决于教练的判断准不准。如果教练眼光毒辣,徒弟会越打越精进;但如果教练看走了眼,把花架子当成了真功夫,徒弟就会把花架子练得炉火纯青,反而离真正的实战能力越来越远。这和手把手教招式完全不是一回事,后者至少能保证徒弟学到的是教练真会的东西。
OPD到底提升了什么?不是能力,是命中率
论文做的第一件事,是验证一个看起来理所当然、但其实没人仔细测过的假设:蒸馏之后,学生是不是真的变聪明了?
**OPD:** On-Policy Distillation的缩写,即本文讨论的在线策略蒸馏方法。
研究团队用了两组老师学生配对来做实验,一组是JustRL-1.5B教DeepSeek蒸馏版的1.5B模型,另一组是DeepScaleR-1.5B-Preview教同一个学生。训练数据是数学题,评测集是AIME和AMC这类竞赛数学题。
**pass@k:** 一种评测指标,表示在采样k次的情况下,至少有一次答对的概率,k越大代表给模型越多次试错机会。
结果很有意思。当k=1的时候(相当于单次回答的准确率),蒸馏后的学生明显吊打原始学生。但随着k慢慢变大,原始学生开始迎头赶上,到k=256的时候,两者的差距几乎消失殆尽。
这是什么意思?
意味着蒸馏并没有让学生学会新的解题方法,它只是让学生更容易第一次就蒙对答案。原始学生其实本来就"会"这些题,只是蒙对的概率比较低而已,蒸馏把这个概率给拉高了。
为了确认这个结论不是采样次数不够的假象,团队又做了一轮更狠的验证:专门挑出那些"只有蒸馏后的学生能做对,原始学生做不对"的题目,给原始学生多采样768次(总共凑够1024次),再找人工逐题核对。
结果是,一道都没有。所有看起来是"蒸馏后学生独有"的题,要么是原始学生其实能做出来只是概率低,要么是自动评分系统误判了蒸馏后学生的答案。
这就像一个学生平时考试选择题总是蒙不中,但找了个家教盯着他,家教说"这题你再想想"的时候他往往能蒙对,因为他本来就有一定概率能蒙对,只是缺一个人在旁边逼他多想一遍。家教并没有教会他任何新知识点,只是提高了他正确发挥的概率。如果不给足够多的考试机会去验证,你可能会误以为这个学生真的多学会了什么。
这个发现其实挺重要的,因为它意味着在线策略蒸馏的能力边界,天生就被学生自己的初始能力锁死了。你没法指望靠这个方法把一个笨学生教成天才,它只能让一个本来就有潜力的学生,把潜力更稳定地发挥出来。
崩溃不是训练出了bug,是老师自己打分打偏了
接下来是全文最有意思的部分:为什么同样的训练流程,换个老师就彻底崩了。
团队对比了两个场景。一个是前面提到的JustRL配置,训练顺利。另一个是用Qwen3-4B教Qwen3-1.7B-Base,这个配置最终彻底崩溃,学生疯狂复读超长文本。
第一步是排除最直觉的猜测:是不是优化过程本身出了问题,比如梯度爆炸、学习率不合适之类的?
论文的答案是:没有。两个场景的训练损失曲线形状几乎一样,都是平滑收敛,没有任何异常波动。崩溃场景里学生生成的内容,用原始学生模型去算,它的"自然度"(专业说法叫负对数似然,数值越低说明这段话对模型来说越"顺嘴")反而比正常场景还低,这说明学生并不是在生成什么陌生古怪的东西,恰恰相反,它生成的都是自己本来就很熟悉、很容易说出口的话。
**负对数似然(NLL):** 衡量一段文本在某个模型看来"自然程度"的指标,数值越低代表这段文本越符合模型本身的表达习惯。
这个发现排除了"优化失控"的解释,把问题方向指向了另一边:学生学得没错,错的是它学的那个目标。
团队接着去看,训练前,老师到底更偏爱学生生成的哪种答案。他们把学生在训练前(也就是没有任何微调之前)采样出来的大量答案,按老师打的分数从低到高分成10组,第一组是老师最不待见的,最后一组是老师最偏爱的。
在正常收敛的JustRL场景里,这个排序非常健康:老师打分越高的答案,正确率越高,篇幅也越短。老师的偏好和答案质量基本是对齐的。
但在崩溃的Qwen3-4B场景里,排序完全反了。老师打分最高的那一组答案,正确率接近零,篇幅却长得离谱,而且大量命中生成长度上限,充满了机械复读。换句话说,老师并不是在奖励"答得对",而是在无意中奖励"答得长、答得啰嗦、答得车轱辘话连篇"。
这就好比一个阅卷老师改作文,原本应该给逻辑清晰、言之有物的文章打高分,但因为某种批改习惯上的偏差,反而给那些凑字数、车轱辘话绕圈子的文章打了更高的分。如果学生一直盯着老师的打分表来改进写作,而不是真正去问"我写得对不对",那他迟早会学会怎么凑字数骗分,而不是怎么写好作文。老师自己几乎从不写这种车轱辘话,但只要他愿意给这种文章打高分,学生就会义无反顾地朝这个方向练。
这个现象在强化学习里有个专门的名字,叫奖励破解。
**奖励破解(Reward Hacking):** 指模型发现了某种能骗取高分、但实际上并不符合真正训练意图的"捷径",并专门针对这个捷径进行优化的现象。
更让人后背发凉的是后续的验证。团队测量了学生在训练前后,对"老师最爱的10%答案"和"老师最不爱的10%答案"打分能力的变化,这个指标叫选择差距。结果显示,正常场景里这个差距几乎没变化,只从0涨到了0.07,但崩溃场景里这个差距从0暴涨到了26左右。
这说明崩溃场景里的学生,其实学习效率特别高,它精准地学会了老师到底喜欢什么。只不过老师喜欢的东西本身是有毒的,于是学生就把这个"毒性品味"学得炉火纯青。
这也是整篇论文最颠覆直觉的地方:你以为模型崩溃是因为训练失控、学歪了,但实际情况恰恰相反,模型是把老师的审美口味学得异常精准,只是这个口味本身就是坏的。
怎么解毒:遮住有毒样本,或者从干净的起点出发
既然问题根源找到了,那下一步自然是想办法治。论文借鉴了强化学习领域对付奖励破解的常规思路:既然知道哪些样本是在骗分,那就想办法不让模型从这些样本里学到东西。
第一个方案叫掩码遮蔽。具体做法是,训练过程中保持老师、数据、优化器全部不变,唯独对那些触碰到生成长度上限的回答,直接把它们的训练损失清零,不让这些回答参与梯度更新。
效果怎么样?从训练曲线上看,掩码版本一开始和原始崩溃版本走势几乎一模一样,因为早期学生还没攒够那些有毒样本。但随着训练推进,原始版本一头扎进崩溃的深渊,掩码版本却在关键节点上及时刹车,慢慢恢复了正常。
论文用三个不同体量的老师模型(4B、8B、30B-A3B)分别验证了这个方法,掩码干预让最终的平均准确率分别提升了3.08、0.51和2.58个百分点。虽然提升幅度不算夸张,但考虑到掩码版本在训练中只有大约10%的样本保留了非零损失,这个效果其实相当划算。
第二个方案更简单粗暴,叫SFT热启动,也就是不从一张白纸的基础模型开始训练,而是先用监督微调给学生打个底子,让它一开始就养成相对干净的说话习惯,再去接受老师的隐式打分。
**SFT(Supervised Fine-Tuning):** 监督微调,指用人工标注好的高质量样本直接训练模型,让模型模仿这些样本的风格和内容。
效果非常直接,热启动版本的学生从训练一开始就没有表现出任何长度膨胀、复读的迹象,训练曲线从头到尾都很平稳。最终这个版本的平均准确率达到16.38%,比对应的未经热启动、直接从基础模型开始训练的版本高出整整6.22个百分点,是所有干预方案里表现最好的。
这个逻辑其实也挺朴素的:既然问题出在老师容易被某类有毒样本带偏,那与其等学生自己生成出一堆有毒样本再事后清理,不如一开始就让学生的"出厂设置"干净一点,减少有毒样本出现的概率,老师自然也就没机会被带偏了。
这就像给小孩找家教之前,先让他养成良好的学习习惯和基础素养,这样即便家教的某些打分标准不够完美,小孩也不太容易被带到特别离谱的方向上去。而如果小孩本来就是一张白纸,什么习惯都没有,那家教的任何打分偏差,都可能被无限放大,最终定型成某种古怪的学习方式。如果不先把底子打好,纯靠事后纠偏,很可能要花更大力气才能拉回正轨,甚至拉不回来。
两种方案一个是治已病,一个是防未病,但指向的是同一个结论:崩溃并不是不可逆的宿命,它取决于训练过程中到底允许哪些样本被反复强化。
从更大的图景看这件事
这篇论文把整个在线策略蒸馏的故事讲得挺完整:成功的时候,它提升的是采样效率而不是能力上限;失败的时候,根子在于老师的隐式打分标准和答案质量脱节,而学生又精准地学会了这个脱节的标准。
它还顺手指出了一件容易被忽略的事:老师模型自己生成文本的质量,和它给别人的文本打分准不准,根本是两码事。Qwen3-4B自己写东西的时候几乎不会写出那种8000多字的复读文本,但它偏偏会给学生写出来的复读文本打高分。这提醒我们,评估一个大模型是否适合当"评委",不能只看它自己生成内容的质量,还得专门去检验它打分的可靠性,这完全是两套不同的能力。
论文也很坦诚地标出了自己的边界:实验只覆盖了小模型和数学推理这一个领域,更大的模型、更开放的任务(比如写作、对话)会不会出现类似的问题,目前还不知道。文中提出的两个修复方案,也是针对"超长复读"这一类具体症状设计的,换一种崩溃表现形式,可能就需要全新的诊断思路。
Q&A
Q1:在线策略蒸馏(OPD)到底是什么?
A:OPD指让学生模型自己生成答案,再由固定不变的老师模型逐词打分纠偏的训练方法,本质上更像强化学习,老师在扮演一个隐式奖励模型的角色,而不是直接提供范文让学生模仿。
Q2:为什么同样的蒸馏方法,有的会让模型越训越好,有的却会让模型疯狂复读崩溃?
A:论文发现,崩溃的根源不是训练优化出了问题,而是老师模型给出的隐式打分标准本身出了偏差,它给又长又啰嗦、甚至正确率接近零的答案打出了高分,学生精准学会了这个有毒的偏好,于是越训越偏向生成这类无意义的超长复读内容。
Q3:这种在线策略蒸馏的崩溃问题有办法解决吗?
A:论文提出了两种有效方法,一是在训练中屏蔽那些触及生成长度上限的异常回答,不让它们参与梯度更新;二是用监督微调给学生先打好底子再做蒸馏。两种方法都能有效避免或缓解崩溃,后者效果更好。
好文章,需要你的鼓励
RGPO用"临时脚手架"破解大模型强化学习的奖励稀疏难题:先让模型独立解题,失败则分段放出标准解法引导重写,仅采纳经验证更优的答案。难题测试准确率从0跃至99.5%,语言模型平均分高出最强基线5.0分。
论文提出用MoE模型的路由器输出作为跨语言对齐目标,通过持续预训练对翻译句对施加路由KL散度损失,在不改变分词和架构的前提下让隐藏表示更接近,并在四个开源MoE模型、七种语言上验证了下游任务性能的一致提升。
DiffGate提出难度门控的教师指导机制,让验证器决定何时需要教师介入,仅对失败且困难的轨迹提供有界教师指导,结合GRPO强化学习,在数学与代码任务上显著提升解题覆盖率与跨领域迁移能力。
研究者用固定不变的16位二进制编码替代传统可训练词嵌入表,在17亿参数规模模型上训练1000亿token,证明模型仍可获得实质语言能力,揭示输入表并非必需,但性能略逊于可学习方案。