训练数据里"答错的那批"反而更值钱: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 位置,都让老师模型给出"这一步你应该怎么分布"的密集监督,最小化学生和老师在每个前缀上的分布散度。

这么做有两个好处:

  1. 监督密集:每个 token 都有信号,不用等到最后才知道好坏,信用分配天然就细。
  2. 可以只学前缀:因为不依赖最终答案,截断到 1024 个 token 的短前缀也能训,不用跑完整条链。这一点后面会反复出现,是 ReNIO 设计的核心约束。

OPD 有两个变体:用一个更强的老师模型来教,叫 OPD;没有外部老师、模型自己教自己(拿自己当老师),叫 OPSD(on-policy self distillation)。

铺垫到这里。问题来了——这套框架里,所有 SGO 的权重是一样的。可它们的信息量明明天差地别。


🔬 那个让人坐直的观察:错的比对的更有用

作者在 Qwen3-1.7B 上做了一个很干净的受控过滤实验:把学生生成的输出按最终答案对错分成两堆,分别只用"对的"和只用"错的"去训练,看哪个效果好。

图1:OPD 设定下,只用错误轨迹训练 vs 只用正确轨迹训练的对比

图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 上的概率比:

\[r_t = \frac{\pi_S(y_t \mid x, y_{\lt t})}{\pi_T(y_t \mid x, y_{\lt t})}\]

取对数,更好处理:

\[\ell_t = \log r_t = \log \pi_S(y_t \mid x, y_{\lt t}) - \log \pi_T(y_t \mid x, y_{\lt t})\]

\(\ell_t\) 大,就意味着这个 token 学生远比老师更倾向选它——这就是关键 token(pivotal token)的信号。

这里还有一个挺漂亮的理论支撑:在前缀级 reverse-KL 目标下,学生采样 token 的有效梯度权重,去掉一个可移除的 baseline 后,正好就等于 \(\ell_t\)。所以 \(\ell_t\) 不只是个分歧信号,它本身就是 token 级的修正权重。信号和权重是同一个东西,这个统一让方法显得不那么"凑"。

pipeline 全景

图2:ReNIO 的三阶段流程

图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 挑出来:

\[\mathcal{K}(x,y) = \{ t \mid \ell_t \gt \tau \}\]

只有 \(\ell_t\) 超过阈值的才算关键 token。同时对选中的比值做截断(clipping),防止个别极端值把权重搞爆。图里的例子是把超过 3 的值 clip 到 3。

Phase III — 聚合成样本权重。 把选中的关键 token 的对数比值取均值再 exp,等价于做几何平均:

\[w(x,y) = \exp\left( \frac{1}{|\mathcal{K}(x,y)|} \sum_{t \in \mathcal{K}(x,y)} \log r_t \right)\]

如果一条轨迹一个关键 token 都没有(\(\mathcal{K}\) 为空),权重就设成 1。

最后做批次级归一化,让每个 batch 的平均权重为 1:

\[\hat{w}(x,y) = \frac{w(x,y)}{\bar{w}_B}, \quad \bar{w}_B = \frac{1}{B}\sum_{i=1}^{B} w(x_i, y_i)\]

这一步的作用是:只重新分配训练重点,不改变平均更新尺度。否则不同 batch 的整体梯度大小会乱跳,训练不稳。

加权后的训练目标就是在原来的 OPD 散度前面乘上这个权重:

\[L_{\text{ReNIO}} = \mathbb{E}_{x \sim D,\, y \sim \pi_S(\cdot|x)} \left[ \hat{w}(x,y)\, \mathcal{D}\big(\pi_S(y|x) \,\|\, \pi_T(y|x)\big) \right]\]

关键在于 \(\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

两个对照很关键:

  1. S/T 比值如果按 token 级直接重缩放(不聚合成样本权重),反而掉到 40.28,比基线还低。说明这个信号必须聚合到样本层面才有意义,逐 token 缩放是错的用法。
  2. 反过来用 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 前沿,关注我