训练数据里"答错的那批"反而更值钱:ReNIO 把负样本权重玩明白了
先抛一个反直觉的问题给你。
假设你在做模型蒸馏,让学生模型自己生成一堆推理过程,然后拿这些生成结果去训练它自己(或者用一个更强的老师来指导)。现在有两堆数据摆在你面前:一堆是学生做对了的题,一堆是学生做错了的题。你只能选一堆来训练,你选哪个?
直觉上当然选对的——对的才是好榜样嘛,错的不是会把模型教坏吗?
这篇论文告诉你:错。只用做错的轨迹训练,效果反而稳定地比只用做对的好。 不是偶然,是在 OPD 和 OPSD 两种设定、多个数学基准上一致出现的现象。AIME24 上差了 3.60 个点,AIME25 差了 3.89 个点。
这个观察本身就够让人坐直身子了。而 ReNIO 这篇论文真正聪明的地方在于——它不光发现了这个现象,还想出了一个不需要知道答案对错就能把"错误轨迹的价值"自动挖出来的办法。
核心摘要
在线策略蒸馏(On-Policy Distillation, OPD)这几年是个挺香的方向:让学生模型用自己生成的输出来学习,每个前缀位置都能拿到老师给的 token 级密集监督,比强化学习那种稀疏的序列级奖励信号好用得多,而且不用跑完整条带答案的 rollout,成本低。
但标准 OPD 有个粗糙的地方——它把学生生成的所有输出一视同仁,给一样的权重。ReNIO(Reweighting Negative trajectory Importance for LLM On-policy distillation)的核心发现是:做错的轨迹里藏着模型能力边界上最有价值的探索信号,这些信号被平均权重稀释掉了。
它的解法很巧:用 student-to-teacher 概率比值 去定位那些"把推理带偏的关键 token"——学生觉得很顺、老师却觉得不该这么走的地方,比值就会很大。把这些关键 token 的信息聚合成一个样本级权重,自动给可能出错的高信息轨迹更大的训练权重。整个过程只用到前缀条件下的 token 概率,完全不需要观察最终答案对不对,所以保住了 OPD 短前缀训练的成本优势。
效果上,Qwen3-1.7B 在数学推理上代表性相对增益 8.90%,R1-Distill-Qwen-7B 达到 10.00%。
我的判断:这是一篇"观察漂亮、方法克制、落地友好"的工作。它没有炫技式地堆机制,而是抓住一个真实信号,用最小的代价把它利用起来。下面细聊。
- arXiv: https://arxiv.org/abs/2606.23104
- 作者: Chen Lin, Kedi Chen, Wei Zhang
- 代码: https://github.com/BDML-lab/ReNIO
🎯 先把背景铺平:OPD 到底在解决什么问题
如果你不太熟悉在线策略蒸馏,我先用一段话把它讲清楚,不然后面的讨论会悬空。
强化学习(比如 GRPO)训练推理模型时有个老大难问题:奖励太稀疏。模型吭哧吭哧生成一长串推理,最后只有一个"对/错"的序列级信号。这条几千 token 的链条里,到底哪一步功劳大、哪一步坏了事?这就是经典的信用分配难题。而且 RL 必须把整条 rollout 跑完拿到最终答案才能算奖励,长链推理动辄上千 token,成本很高。
在线策略蒸馏换了个思路。让学生模型自己生成输出(叫 SGO,student-generated outputs),然后在每一个 token 位置,都让老师模型给出"这一步你应该怎么分布"的密集监督,最小化学生和老师在每个前缀上的分布散度。
这么做有两个好处:
- 监督密集:每个 token 都有信号,不用等到最后才知道好坏,信用分配天然就细。
- 可以只学前缀:因为不依赖最终答案,截断到 1024 个 token 的短前缀也能训,不用跑完整条链。这一点后面会反复出现,是 ReNIO 设计的核心约束。
OPD 有两个变体:用一个更强的老师模型来教,叫 OPD;没有外部老师、模型自己教自己(拿自己当老师),叫 OPSD(on-policy self distillation)。
铺垫到这里。问题来了——这套框架里,所有 SGO 的权重是一样的。可它们的信息量明明天差地别。
🔬 那个让人坐直的观察:错的比对的更有用
作者在 Qwen3-1.7B 上做了一个很干净的受控过滤实验:把学生生成的输出按最终答案对错分成两堆,分别只用"对的"和只用"错的"去训练,看哪个效果好。

图1(Figure 1a):OPD 设定下,correct-only(浅色)与 incorrect-only(深色)训练在三个数学基准上的 Avg@12 对比。深色柱几乎全面占优——AIME24 上 incorrect-only 比 correct-only 高 3.60 个点(54.2 → 57.8),AIME25 高 3.89 个点,平均高 2.59 个点。
OPSD 设定下也是同样的趋势:AIME24 上 incorrect-only 高 1.94 点,AIME25 高 3.34 点,平均高 2.50 点。
两种设定、多个基准,错误轨迹一致占优。这就不是噪声了。
那问题来了,为什么?错的答案不是应该把模型带偏吗?
作者接着挖了一层,记录了两个推理时的行为指标:平均响应长度,以及"反思类标记"的数量。反思标记是一组 14 个词——but、wait、hmm、perhaps、maybe、actually、seems、might、likely、check、alternatively、however、though、again——这些词出现得多,说明模型在反复检查、修正、考虑替代方案。
结果很有意思:
- 用错误轨迹训练的模型,生成的响应更长,反思标记也更多。
- 用正确轨迹训练的模型,倾向于生成更短的推理链,反思行为更弱。
这就把机制讲通了。说白了——啊不,换个说法:correct-only 训练干的事,其实是在巩固模型已经会的东西,让它把已经能做对的行为做得更熟练。代价是模型变得更自信、更"油",探索性下降了,遇到难题不愿意多想。
而 incorrect-only 训练暴露的是模型在能力边界上那些"虽然失败但结构完整"的尝试——它在努力推理、在尝试不同路径,只是最后没走通。这些轨迹保留了谨慎、探索的推理行为,恰恰是难题最需要的。
我读到这里第一反应是想起 RL 圈一个老说法:模型真正的成长发生在能力边界上。太简单的题学不到东西,太难的题又够不着,边界附近那些"差一点就对了"的尝试最有营养。错误轨迹本质上就是在采样这个边界区域。这个直觉跨方法地成立,挺让人信服的。
🏗️ ReNIO 的核心:用概率比值找到"带偏的那个 token"
观察很漂亮,但有个现实障碍。
按对错过滤需要什么?需要把整条 rollout 跑完、拿到最终答案、判对错。这一下就把 OPD"只学短前缀、不跑完整链"的成本优势给丢了——又退化回 RL 那种昂贵的全 rollout 模式了。
所以真正的挑战是:能不能在不看最终答案的前提下,自动识别出哪些轨迹"像是"会出错的高信息轨迹,给它们更大权重?
ReNIO 的答案是:能,靠 student-to-teacher 概率比值。
一句话直觉
推理出错,通常不是整条链都烂,而是少数几个关键 token 把方向带偏了。比如某一步该选 A,模型偏偏选了 B,后面就一路错下去。
那这种"带偏的关键 token"有什么可观测的特征?作者的洞察是:在这种 token 上,学生的概率很高(因为是学生自己采样出来的,它觉得这么走很自然),但老师的概率很低(老师觉得不该这么走)。两者一除,比值就特别大。
三个公式讲清楚
先定义 token 级的重要性分数,就是学生和老师在该 token 上的概率比:
取对数,更好处理:
\(\ell_t\) 大,就意味着这个 token 学生远比老师更倾向选它——这就是关键 token(pivotal token)的信号。
这里还有一个挺漂亮的理论支撑:在前缀级 reverse-KL 目标下,学生采样 token 的有效梯度权重,去掉一个可移除的 baseline 后,正好就等于 \(\ell_t\)。所以 \(\ell_t\) 不只是个分歧信号,它本身就是 token 级的修正权重。信号和权重是同一个东西,这个统一让方法显得不那么"凑"。
pipeline 全景

图2(Figure 2a):ReNIO 的三阶段流程。Phase I 沿着 SGO 计算每个 token 的 student-teacher 对数比值;Phase II 用固定阈值挑出关键 token;Phase III 把选中的对数比值聚合成一个归一化的样本级权重。图里那个具体例子很直观:学生在某些 token 上概率 0.90、老师只有 0.10,比值取对数得到 2.1 这样的大值,这些就是被标红的关键 token。
顺着图把三阶段讲完:
Phase I — 算对数比值。 沿着整条 SGO,每个位置算一个 \(\ell_t = \log p_S - \log p_T\)。作者画了 \(\ell_t\) 的经验分布(Figure 3),是个明显的长尾:绝大多数 token 的 \(\ell_t\) 接近 0(学生老师高度一致,都是些 routine token),只有极少数 token 有很大的值。这个长尾形状是后面要"挑出关键 token"的前提。
Phase II — 阈值筛选 + outlier clipping。 用一个固定阈值 \(\tau\) 把关键 token 挑出来:
只有 \(\ell_t\) 超过阈值的才算关键 token。同时对选中的比值做截断(clipping),防止个别极端值把权重搞爆。图里的例子是把超过 3 的值 clip 到 3。
Phase III — 聚合成样本权重。 把选中的关键 token 的对数比值取均值再 exp,等价于做几何平均:
如果一条轨迹一个关键 token 都没有(\(\mathcal{K}\) 为空),权重就设成 1。
最后做批次级归一化,让每个 batch 的平均权重为 1:
这一步的作用是:只重新分配训练重点,不改变平均更新尺度。否则不同 batch 的整体梯度大小会乱跳,训练不稳。
加权后的训练目标就是在原来的 OPD 散度前面乘上这个权重:
关键在于 \(\hat{w}\) 只用了前缀条件下的 token 概率,全程没碰最终答案。所以 ReNIO 完美兼容 OPD 的短前缀训练,不需要任何额外的 rollout 或奖励标注成本。这是我觉得这个设计最值钱的地方——它把"过滤实验"里发现的信号,转化成了一个零额外成本的连续权重。
📊 实验:数学和代码上都涨,而且涨得讲道理
实验跨了 Qwen3 系列(1.7B/4B/8B)和 DeepSeek-R1-Distill-Qwen 系列(1.5B/7B),数学基准用 AIME2024、AIME2025、HMMT2025(报 Avg@12),代码基准用 HumanEval+、MBPP+(报 Avg@4)。硬件是 4 张 H200,全词表 logit 蒸馏 + LoRA。
主结果(无需额外 teacher 的 OPSD)
这是 Table 1 里几个代表性的数:
| 模型 | 方法 | Math Avg | Code Avg |
|---|---|---|---|
| Qwen3-1.7B | OPSD | 40.83 | 68.64 |
| Qwen3-1.7B | OPSD+ReNIO | 42.78 | 70.53 |
| Qwen3-8B | OPSD | 64.08 | 81.82 |
| Qwen3-8B | OPSD+ReNIO | 65.56 | 82.86 |
| R1-Distill-Qwen-7B | OPSD | 39.69 | 66.60 |
| R1-Distill-Qwen-7B | OPSD+ReNIO | 41.57 | 67.12 |
Qwen3-1.7B 在 AIME24 上从 53.06 涨到 57.78,相对提升 8.90%;R1-Distill-Qwen-7B 在 AIME25 上从 38.89 涨到 42.78,相对提升 10.00%。代码任务上虽然涨幅小一些,但方向一致,没有出现"数学涨、代码跌"的拆东补西。
值得点一句的是,ReNIO 加持的 OPSD 在多数设定上还反超了 GRPO。比如 Qwen3-1.7B 数学 Avg,GRPO 是 37.22,OPSD+ReNIO 是 42.78。考虑到 OPSD 不需要外部老师、还只学短前缀,这个性价比是相当能打的。
需要 teacher 的 OPD 设定
| 模型 | 方法 | Math Avg | Code Avg |
|---|---|---|---|
| Qwen3-1.7B(teacher: Qwen3-8B) | OPD | 40.37 | 68.42 |
| Qwen3-1.7B | OPD+ReNIO | 42.04 | 69.28 |
| DS-R1-Qwen-1.5B(teacher: 7B) | OPD | 22.13 | 45.65 |
| DS-R1-Qwen-1.5B | OPD+ReNIO | 23.43 | 46.06 |
OPD 这边同样稳定提升,1.5B 小模型在 HMMT25 上相对提升甚至到了 15.44%。
短前缀效率:1024 居然比 4096 还好
这个表(Table 3)我觉得是全文最有意思的之一。它对比了训练前缀长度 1024 和 4096(4096 基本能覆盖到最终答案了)的效果:
| 方法 | AIME24 | AIME25 | HMMT25 | Avg |
|---|---|---|---|---|
| OPSD(1024) | 53.06 | 41.94 | 27.50 | 40.83 |
| OPSD(4096) | 53.33 | 37.22 | 25.56 | 38.70 |
| OPSD(1024)+ReNIO | 57.78 | 42.78 | 27.78 | 42.78 |
注意看:不加 ReNIO 时,1024 前缀(40.83)反而比 4096 前缀(38.70)还高。也就是说,把链条拉长、让模型看到完整答案,效果不升反降。而且把前缀从 1024 拉到 4096,训练时间差不多翻了 3 倍。
这其实反向印证了论文的核心观点——价值在推理过程的探索里,不在最终答案那一段。强行把答案塞进训练前缀,不仅贵,还可能因为强化了"直奔答案"的短链行为而拖累探索能力。ReNIO 在 1024 短前缀上把效果又往上推了近 2 个点,把短前缀这条路走得更彻底了。
消融:三个组件谁最关键
Table 4 拆了三个组件:阈值筛选关键 token(Key)、对数比值截断(Clip)、批次归一化(Norm)。
| 配置 | Avg |
|---|---|
| OPD(什么都不加) | 40.37 |
| ReNIO(全开) | 42.04 |
| w/o clipping | 40.09 |
| w/o threshold | 40.83 |
| w/o batch norm | 39.54 |
读出来几件事:
- 去掉 batch norm 掉得最狠(42.04 → 39.54),甚至比啥都不加的基线还低。原因是没有归一化,梯度尺度在不同 batch 间剧烈波动,训练直接被搞坏。这印证了那句"只重分配权重、不改平均尺度"的设计有多重要。
- 去掉 clipping 掉到 40.09,无界的比值会制造不稳定的大权重。
- 去掉 threshold(不挑关键 token,全 token 都算)掉到 40.83,routine token 把信号稀释了。
三个组件各司其职,缺一个都不行。这种消融做得干净,我信。
一个反例对照:为什么是 S/T 而不是 T/S
附录里有个对照实验我特别想拎出来说(Table 8)。作者试了几种别的加权策略:
| 加权方式 | Avg |
|---|---|
| OPSD 基线 | 40.83 |
| ReNIO(S/T 样本级) | 42.78 |
| T/S 样本级加权 | 41.57 |
| S/T token 级加权 | 40.28 |
两个对照很关键:
- S/T 比值如果按 token 级直接重缩放(不聚合成样本权重),反而掉到 40.28,比基线还低。说明这个信号必须聚合到样本层面才有意义,逐 token 缩放是错的用法。
- 反过来用 T/S 比值(强调老师概率高、学生概率低的 token,也就是"正确/teacher-aligned"的方向),能涨到 41.57,但比 ReNIO 低 1.21 点。这恰好和开头的观察对上了——强调"对的方向"不如强调"错的高信息方向"。
这组对照把"为什么是这个方向、为什么是样本级"两个设计选择都用实验钉死了。做得很扎实。
一道题看清差别
附录 F 有个定性案例挺生动。一道计数题(求满足 \(a+b+c=300\) 且某个对称等式的非负整数三元组个数,标准答案 601):
- GRPO 答 201:只算了 \(a=100\) 那一族,漏掉了 \(b=100\)、\(c=100\) 的对称情况。
- OPD 答 603:三个对称族都算了,但没去重,\((100,100,100)\) 被重复数了 3 次。
- OPD+ReNIO 答 601:既用对称性计数,又做了重叠修正(\(3 \times 201 - 2 = 601\)),两个必要步骤都保留了。
ReNIO 训出来的模型,把"对称放置"和"去重修正"两步都想到了。这正是它强调的那种"完整、谨慎的推理行为"。
💡 我的判断:漂亮在哪,我又会担心什么
先说我真心觉得好的地方。
第一,观察本身够硬。 "错误轨迹比正确轨迹更有训练价值"这个发现,不是拍脑袋,是受控过滤实验 + 长度/反思行为分析双重支撑的。而且它给了一个能讲通的机制解释——正确轨迹巩固已有能力、错误轨迹保留边界探索。这个洞察哪怕脱离 ReNIO 这个具体方法,本身就有启发性。
第二,方法克制。 ReNIO 没有引入新的模型、新的奖励器、新的 rollout,就用了 OPD 训练时本来就要算的 student/teacher 概率,重新组织成一个样本权重。零额外成本,还保住了短前缀的效率优势。这种"用已有量做文章"的设计我特别欣赏,落地阻力极小——如果你手上已经在跑 OPD/OPSD,加 ReNIO 基本就是改几行 loss 加权。
第三,对照实验诚实。 S/T vs T/S、token 级 vs 样本级这些对照,等于主动把"会不会是别的更简单方法也行"这条质疑路堵上了。
再说我会打问号的地方。
涨幅在大模型上摊薄得明显。 Qwen3-1.7B 数学相对涨 8.90% 很亮眼,但到 Qwen3-4B/8B,绝对提升就缩到 1.3~1.5 个点了。这符合直觉——模型越强,能力边界越靠后,"错误轨迹的探索价值"这个杠杆能撬动的空间越小。论文自己也说了,受硬件限制没在更大模型上验证。所以这个方法可能更适合中小模型,对前沿大模型的增量还是个未知数。
代码任务涨幅普遍偏小。 代码 Avg 大多只涨 0.7~2.8%,比数学弱不少。我猜是因为代码任务的"错误"往往是硬性的语法/逻辑错,不像数学那样存在大量"思路对、算错了"的高信息近似轨迹。这个信号在不同任务类型上的强度可能差别很大。
阈值和 clip bound 看着有点敏感。 超参消融里 threshold 最优 0.8、clip bound 最优 3.0,偏离就掉点。换个模型、换个任务,这俩值要不要重调、好不好调,论文没充分回答。实际用的时候可能得做一轮搜索。
总的来说,这是一篇我愿意推荐去读原文的论文。它的价值不在于多大的 SOTA 数字,而在于那个反直觉观察 + 一个把观察转化成零成本权重的优雅设计。如果你正在做推理模型的蒸馏,尤其是中小模型,ReNIO 的思路值得直接试一把——改动小、风险低、有理论和实验双重背书。哪怕不用它的完整方法,"别把答错的数据当垃圾扔掉"这个 takeaway 也够你重新审视一遍自己的数据 pipeline 了。
arXiv 编号 2606.23104,代码已开源在 BDML-lab/ReNIO,感兴趣的可以去翻翻实现。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我