
有一个挺反直觉的现象:一个语言模型完全可能给正确答案的概率打得比任何一个单独的错误答案都高,但当你真的让它采样生成一个答案的时候,它却经常答错。
这不是模型"笨",而是数学上的必然。想象一道数学题有一个正确答案和十个错误答案,正确答案的概率是15%,每个错误答案平均只有8.5%。单看任何一个错误答案,都不如正确答案。可十个错误答案加起来是85%,远远超过那15%。模型在采样的时候,是在跟这85%的"错误联军"对赌,输的概率自然更高。
这篇论文要解决的就是这个问题,但用的方式挺特别:不是让模型变得更聪明,而是把一种叫做"幂分布采样"的推理时技巧,直接训练进模型的参数里。
**核心问题:锐化答案,但代价是什么**
幂分布,指的是把模型给每个完整答案的概率都做一次指数运算,取 α 次方(α 大于 1),再重新归一化。效果是什么?概率高的答案会被进一步推高,概率低的答案会被进一步压低,整个分布变得更"尖"。论文管这个效果叫"锐化"。
幂分布(power distribution):把模型原本给出的答案概率整体提高到 α 次方再归一化,让高概率答案获得更多权重的一种概率分布变换方法,α 越大锐化程度越强。
有意思的地方在于,这种锐化是针对"整个答案"做的,而不是针对"每一个字"。这和我们更熟悉的"调低采样温度"完全是两码事。调温度是逐字操作:在生成每个字的时候,把当前这一步的概率分布变尖一点。但它完全不知道这个字后面会接出什么样的答案。
论文里举了个小例子说明这个差别。假设有两个词可选,第一个词选 a 的概率是 0.6,选 b 是 0.4。如果接下来选 a 之后,后面的字大概率能走向一个确定的结果(概率 0.9),而选 b 之后,后面怎么走都很不确定(对半开,0.5 对 0.5)。这时候,幂分布会给"以 b 开头的所有答案"打出 0.213 的总概率,而调温度的方法会给它打 0.308。差距不小。
为什么会这样?因为幂分布是按照整条路径走到底的总概率来算的,它能看到"选 b 之后的不确定性"这个信息,而调温度只能看到当前这一步的局部对比,看不到后面的路怎么走。
这就像一个旅行者在十字路口选路。调温度相当于只看眼前这两条路哪条看起来更宽敞好走,完全不管路的尽头通向哪里。而幂分布相当于提前知道了整条路径的信息:往左走后面大概率是条畅通的直路,往右走后面很可能是个迷宫,要绕来绕去走出去也不一定。如果只凭眼前宽窄做判断,旅行者大概率会低估"迷宫"那条路的真实风险,就像调温度低估了不确定路径的风险一样。
那为什么不干脆一直用幂分布采样呢?
问题在于,这个分布的归一化常数需要把所有可能答案的概率都算一遍再加总,这事根本算不出来,答案空间太大了。所以没法直接从幂分布里抽样,只能用一种叫序贯蒙特卡洛的近似方法去"模拟"抽样过程。
序贯蒙特卡洛(Sequential Monte Carlo, SMC):一种让多个候选答案(称为"粒子")同时逐字生成,并根据某种打分规则不断淘汰低分候选、复制高分候选的采样算法。
具体怎么做呢?同时生成 16 个候选答案,每生成一小段,就给每个候选打一个"重要性权重",权重低的候选会被淘汰,换成权重高的候选的复制品。这招确实管用,论文里测试的一个数学模型,单次生成的准确率是 66.8%,用这套 16 候选的采样流程后能冲到 79.2%。
但代价很明显:每次有新问题进来,都要重新跑一遍这个采样流程,生成和打分 16 份候选答案。这在实际部署里是个不小的推理开销。
**OPPD:把采样器的工作训练进模型里**
论文提出的方法叫做 OPPD(on-policy power distillation,在线策略权力蒸馏),核心想法很直接:既然每次推理都要跑一遍昂贵的采样流程才能拿到锐化后的答案,那能不能只在训练阶段跑一次这个流程,把"锐化"这件事直接刻进模型参数里,让模型以后一次生成就能达到采样器的效果?
在线策略蒸馏(on-policy distillation):一种模型训练方式,让"学生模型"自己生成候选答案,再由"教师模型"给这些答案打分,用打分结果来更新学生模型,而不是让学生死记硬背教师写好的范文。
这里要先弄清楚"在线策略"和"离线策略"的差别。传统的蒸馏方法,是让一个更强的教师模型写好范文,学生模型死记硬背。这就像学生永远在抄一份标准答案,从来没自己做过题,考试时遇到自己容易犯的错误类型,压根没在训练里见过。OPPD 不这样,它让学生自己生成候选答案,教师只负责打分,学生学的是"自己容易走偏的那些路该怎么修正",训练数据和它实际考试时会犯的错误类型是对齐的。
具体的训练流程是这样的:学生模型(可训练)生成 16 个候选答案,每 64 个字一个区块地往外吐;一个冻结住不更新参数的教师模型,给每个新区块打分;教师给出的概率同时产生两种权重,一种叫"SMC 权重",用来决定要不要在生成过程中淘汰或复制某些候选前缀;另一种叫"训练权重",用来给每个完整答案算出它在最终损失函数里该占多大分量;然后用这些训练权重做一次加权最大似然更新,调整学生模型的参数。
整个过程里,教师只需要对每个区块做一次前向计算,就能同时提供两种权重,没有额外的模型调用开销。
这里有个很巧妙的设计选择:学生模型自己既是候选答案的生成者,又是采样过程里的"提议分布"。论文证明了一个定理,在只能依赖当前已生成内容(不能偷看未来)的前提下,想让重要性权重的方差最小,最优的提议分布就是教师模型在温度 1/α 下的分布。但因为这里学生自己在学习、自己在变化,论文最终选择用学生自身在温度 1/α 下的分布作为提议分布,这个选择保证了采样过程中的有效样本量(一种衡量候选答案权重是否集中、还是分散的指标)能维持在 0.39 到 0.64 之间,训练比较稳定。
如果提议分布选错了会怎样?论文专门做了对照实验:如果直接用学生在温度 1(也就是不做任何温度调整)下的分布当提议分布,效果会灾难性地崩溃。原因是一个和答案质量完全无关的噪声项的标准差太大了,在 64 个字的区块里累积下来能到 37 奈特(自然对数单位),而 16 个候选之间"有意义的差异"只有大约 2.8 奈特的空间。噪声把信号彻底淹没了,结果就是有效样本量直接掉到 1/16,相当于随机选一个候选,采样器名存实亡。
这让我想到一个生活中的类比:在嘈杂的菜市场里找一个人说话,如果周围的喧哗声(无关噪声)比两个人之间正常对话的音量差异(有效信号)大十几倍,那你听到的根本不是谈话内容本身,是谁嗓门偶然大了点而已。提议分布选不对,就是让"嗓门偶然大小"这种无关因素,压过了"答案到底好不好"这个真正该被听见的信号。
**损失函数:一个系数调控锐化的剂量**
OPPD 的损失函数由两部分组成。核心部分是"序列级项",它的目标就是让学生模型逼近那个锐化后的幂分布,训练权重来自教师模型对完整答案的打分,这是整个方法真正发挥作用的部分。
另一部分叫"词元级锚点",系数记作 λ。它做的事情是把学生的逐字预测拉回教师模型在温度 1/α 下的分布附近,相当于前面提到的那种"调温度"式的锚定。
词元级锚点(token-level anchor):损失函数里的一个正则化项,用一个系数 λ 控制强度,作用是防止模型把概率过度集中到单一答案上,维持一定的多样性。
为什么需要这个锚点?因为论文用的这种"前向 KL 散度"形式的约束有一个特性,叫"覆盖质量",意思是它会惩罚模型对教师认为可能出现的词元给出过低概率,这样能防止模型把所有概率都押在一个答案上。
论文观察到,有些模型在没有锚点约束的情况下,训练后输出的多样性会明显变差。这个风险在论文的实验里也印证了:在 Llama-3.1-8B-Instruct 这个模型上,去掉锚点项(λ=0)会让 MATH500 的准确率掉 4.75 分,"四选一正确率"(best-of-4)掉 5.5 分。而在 Qwen2.5-Math-7B 上,同样去掉锚点项反而能涨 9.25 分。这说明最佳的 λ 值,因模型而异。
好在论文找到了一个事前就能判断的指标:看这个模型在"仅仅调低采样温度"时能涨多少分。如果一个模型光靠调温度就能涨很多(比如 Qwen2.5-Math-7B 能涨 19.9 分),说明这个模型本身还有很多"可锐化的空间"没被挖掘,可以放心用 λ=0 的强力锐化。如果一个模型调温度几乎不涨分(比如 Llama-3.1-8B-Instruct 只涨 0.6 分),说明它已经比较"锐"了,这时候就得保留锚点项,λ=1,防止训练把它仅剩的多样性也耗光。
这个判断逻辑其实很像医生开药前先验血。不是所有病人都用同一个剂量,得先看指标。如果不提前测这个指标,直接给所有模型用同一个 λ,大概率会在某些模型上用药过量(多样性崩溃),在另一些模型上用药不足(没把潜力挖出来)。论文用一次简单的"调温度测试"就当成了验血报告,省掉了大量反复调参的成本。
**锐化到底有没有真的发生:一个专门设计的验证实验**
光看准确率涨了,并不能证明模型真的往幂分布那个方向移动了,万一只是碰巧蒙对了呢?论文设计了一个很严谨的检验方法。
如果训练真的让学生模型相对初始模型锐化了某个指数 a,那么学生模型和初始模型在对数概率空间里应该呈现一条斜率为 a 的直线关系。斜率等于 1 说明什么都没变,斜率等于 α 说明完全锐化到了目标程度。
论文把这个拟合出来的斜率称为"吸收指数" αeff,并且特意选择了"自蒸馏"(学生和教师来自同一个初始模型)作为主实验设定,这样一来,对照组(普通的在线策略蒸馏)的 αeff 理论上就该精确等于 1.000,因为教师和学生的初始状态完全一样,不存在"抄了一个更强模型"这种混淆因素。
结果显示,随着锚点系数 λ 增大,吸收指数单调下降:只用序列级项(λ=0)时,αeff 高达 2.02,几乎是目标 α=4 的一半;普通蒸馏只有 1.14;λ 从 0.5 升到 2,αeff 只在 1.19 到 1.28 之间小幅波动。这说明哪怕加一点点锚点约束,都能大幅抑制锐化的程度,这和锚点项"覆盖质量"的性质是吻合的。
更有意思的是另一组对照:把这个指数估计方法,分别用在"初始模型写的文本"和"模型自己训练后写的答案"这两类语境上。对于普通蒸馏,两边测出来的值几乎一样(1.105 和 1.144)。但对于 OPPD,两边差异巨大(1.207 对 2.019)。
这个差异恰好印证了 OPPD 的训练机制:因为训练信号只来自学生自己生成的答案,所以参数变化也应该主要体现在"学生自己会走到的那些答案"上,而不是均匀地体现在所有可能的文本上。换句话说,这不是一次大水漫灌式的调参,而是精准地在模型自己容易犯错、容易徘徊的那些路径上做了修正。这就像一个教练针对某个运动员的习惯性动作缺陷做纠正训练,纠正效果会集中体现在那个运动员平时常用的动作模式上,而不是随机散布在他从没用过的姿势上。
**结果:一次生成,打平甚至超过多候选采样和强化学习**
在 Qwen2.5-Math-7B 这个模型上,用 OPPD 训练后,单次生成在 MATH500 上拿到 78.50 分,超过了已发表的"64 候选幂采样"结果 76.1 分,超过了已发表的 GRPO(一种用验证奖励训练的强化学习方法)结果 78.0 分。在 GSM8K 上同样超过了 64 候选采样的结果,领先 3.5 分。
GRPO(Group Relative Policy Optimization):一种强化学习后训练方法,需要参考答案来判断每个生成答案的对错,用组内奖励的相对差异来计算训练信号。
论文还专门量化了"训练到底拿到了采样器多少收益"这个问题。未训练模型用 16 候选采样能从 66.8 分涨到 79.2 分,涨幅 12.4 分。而 OPPD 训练后的模型,单次生成就能拿到其中 11.6 分的涨幅,相当于白拿了采样器 94% 的收益,却只要生成一次。更有意思的是,如果在训练好的模型上再跑一次 16 候选采样器,只能再多赚 1.6 分,说明大部分"可榨取的油水"已经被训练吸收进参数里了,留给推理时采样器的剩余空间很小。
**和强化学习对比:没有标准答案,却能打平甚至超过有标准答案的方法**
这是整篇论文里我觉得最值得多说两句的部分。GRPO 这类强化学习方法,需要知道每个候选答案对不对,也就是需要参考答案或者验证器。OPPD 完全不需要这些信息,它只用问题文本,靠教师模型自己对答案的打分来驱动训练。
论文做了一个同起点、同预算的对比实验:从同一个 Qwen3-8B-Base 检查点出发,两种方法各训练 300 步,每步生成同样数量的答案(9600 个)。结果 OPPD 在 MATH500、GSM8K、AIME 三个基准上全面领先,分别领先 3.75、4.00、5.42 分。
更关键的发现藏在训练日志里。GRPO 的学习信号依赖"组内奖励差异",如果某个问题的 16 个答案全对或全错,组内奖励方差就是零,这一组训练数据完全白费,不产生任何梯度。论文统计发现,600 组训练数据里有 234 组(39%)属于这种"零信号"情况,意味着接近四成的计算资源打了水漂。而 OPPD 因为权重来自连续的概率打分而不是二元对错判断,哪怕 16 个答案全错,它们之间在教师看来的"可信程度"依然有区分度,所以每一组数据都能产生有效的训练信号。
这就像两种改卷方式的差别。一种改卷老师只打"对"或"错",如果一个班的学生这道题全对或全错,老师从这次作业里学不到任何关于"这道题难在哪"的信息。另一种改卷老师会给每份答案打出一个连续的可信度分数,哪怕全班都答错了,也能从"谁的错误更接近正确思路"里提取出有用的信息。后一种方式显然信息利用率更高,这也是为什么 39% 的"零信号"组对 GRPO 是种实打实的浪费,但对 OPPD 不构成问题。
更值得一提的是,两种方法并不互斥,而是可以叠加。论文把 OPPD 用在一个已经被 GRPO 训练过的检查点上(GRPO 已经把 MATH500 从 50.25 拉到 64.00),OPPD 在此基础上又加了 9.25 分,到 73.25 分。AIME 的 pass@1 从单独任一方法的 10.83% 提升到两者叠加后的 12.92%,四选一正确率更是从 21.67(GRPO)或 20.00(OPPD)跃升到 31.67。这意味着模型真正解决了之前在四次尝试里都解决不了的新题目,不只是在已经会做的题里选对答案的概率变高了。
论文还专门验证了另一个关键问题:教师模型的打分,在"淘汰还在生成途中的候选"和"给已经写完的答案排序"这两个环节,到底哪个环节真正起作用?实验把每个候选都生成完整并单独评分,对比了"正确答案的比例"和"教师打分给正确答案分配的总权重"。结果发现,在十一组测试里,这两个数字始终差不多,差异都在 0.5 分以内。这说明教师的打分在给已经写完的答案排序这件事上基本没有信息量,真正起作用的,是在生成过程中就不断淘汰走偏的候选、保留走对路的候选。这对一大类"生成完再重排序"的方法是个提醒:事后挑选未必有用,得在生成的路上就介入。
**跨模型族、跨规模的复现,以及代码能力的意外迁移**
论文没有止步于一个模型上的结果,而是在 Qwen3-8B-Base、Qwen3-14B-Base、Llama-3.1-8B-Instruct、deepseek-math-7b-rl 等多个模型族上重复了实验,规模从 1.5B 一路测到 14B。
在 Qwen3-14B-Base 上,OPPD 在温度 1 下跑出 MATH500 84.00 分、GSM8K 95.88 分、AIME 16.25 分,全面超过未训练模型在两种温度下的最佳表现。在 deepseek-math-7b-rl 这个已经被验证奖励训练过的模型上,调低温度几乎没有任何效果(MATH500 涨幅是 +0.00),但 OPPD 依然能再涨 4.38 分,说明这套方法挖掘的是和"调温度"完全不同维度的潜力。
一个挺让人意外的额外发现是:所有训练用的题目都只来自数学领域(GSM8K),但训练完的模型在 HumanEval(一个代码生成基准)上也普遍涨分,涨幅从 3.51 到 5.34 分不等。相比之下,GRPO 训练出的模型在 HumanEval 上只涨了 1.98 分,而且置信区间包含零,没能确认有效。这暗示着 OPPD 学到的"锐化"可能是一种更通用的、跟具体任务无关的能力调整,而不只是针对数学题型的局部优化。
**写在后面**
读完这篇论文,我一直在想一件事:为什么"把答案整体的总概率拉高"和"把每一步的局部概率拉高"会产生这么大的差别。直觉上这两者好像应该差不多,毕竟最终都是在让模型更倾向于高概率的选项。但那个两词元的小例子说得很清楚,差别的本质在于,幂分布能"看到"一条路径后面的不确定性有多大,而温度调整看不到。这其实是个信息可见性的问题,不是强度的问题。
还有一点值得单独说一下,论文里关于"候选答案排序没有信息量"的那组实验,其实隐含了一个对整个"生成后重排序"类方法的质疑。很多实际系统的思路是先生成一堆候选,再用某个打分器挑最好的一个出来。但这篇论文的数据显示,至少在这个场景下,打分器对完整答案的排序能力,基本等于瞎猜。真正值钱的信息,藏在生成过程中间,而不是生成结束后。这个发现如果能在更多场景下得到验证,可能会让一部分"重排序"类的工程方案需要重新考虑设计思路。
那 39% 的"零信号"组数据也让我多想了一层。强化学习领域一直在讨论样本效率的问题,这篇论文用一个很具体的数字,把"效率低在哪里"钉死了:不是算法本身效率低,是信号的获取方式本身就把将近四成的计算预算浪费掉了。换一种打分方式,这四成浪费就能变成有效训练信号。这提示我们,有时候提升效率的突破口不在算法本身,而在你用什么东西去衡量"好不好"这件事上。
Q&A
Q1:OPPD是什么,它解决了什么问题?
A:OPPD(在线策略权力蒸馏)是一种训练方法,能把需要多次采样打分才能实现的"幂分布锐化"效果直接训练进模型参数里,让模型一次生成就能达到接近多候选采样的准确率,不再需要推理时反复跑采样流程。
Q2:OPPD和GRPO相比有什么优势?
A:OPPD完全不需要参考答案或验证器,只用问题文本就能训练,而GRPO需要标准答案判断对错。在同样训练预算下,OPPD在MATH500、GSM8K、AIME上都略微领先GRPO,而且两者可以叠加使用,效果进一步提升。
Q3:OPPD训练只用数学题,为什么代码能力也会提升?
A:论文发现,仅用GSM8K数学题训练出的OPPD模型,在HumanEval代码生成基准上同样涨分3.51到5.34分,说明这套方法学到的锐化能力带有一定通用性,不局限于训练时所用的具体任务领域。
好文章,需要你的鼓励
GeoVerse融合几何潜在扩散模型与Wan2.2视频生成先验,并引入全局空间记忆机制,实现了跨视角一致、生成质量高且推理速度快的新视角合成,在多个数据集上大幅超越现有方法GLD。
本文解读TT-VidT,一种通过分离外观锚点与动作令牌、结合Diff Compression训练目标的视频自监督方法。在24种架构目标组合的受控实验中,仅TT3D与Diff Compression搭配才能进入强动作敏感区,且计算量比同类方法降低近一半。
Q&A Q1:Imprint Reader是什么? A:Imprint Reader是上海人工智能实验室团队开发的模型,通过SMaRT训练方法学会读取另一个模型冻结的权重更新,把参数层面的变化翻译成自然语言描述,判断这次更新到底注入了什么知识或诱导了什么行为习惯。 Q2:MetaEdit能做什么? A:MetaEdit能把Reader对目标行为的梯度信号迁移到原始模型上,不需要任何目标任务的训练数据,只用一句行为描述就能定向调整模型参数,已经在安全性拒绝率调节、数学推理风格转变和工具调用能力提升上验证过效果。 Q3:Imprint Reader读权重更新的准确率高吗? A:目前还不高,知识类目标的Pass@100只有2%,行为类目标是16%,说明自由生成描述的可靠性有限,但相比原始模型完全答不出来的0%基线,已经证明了权重更新的自然语言读取是可行的。
统一多模态模型能看也能画,理论上该会自我修正。本论文提出UMM-Reflection,用整条轨迹的强化学习联合训练诊断和修图能力,GenEval提升12分,且迁移到多个未训练基准,揭示RL提升的是选择可靠性而非新能力。