别教孩子抄答案了——NSD:让模型跟"粗心的自己"反着学,Qwen3-4B 平均提升 7.5 个点

你有没有发现一个挺拧巴的现象:现在很流行的"自蒸馏"训练,模型自己当老师、自己当学生,按理说不用外部标注很优雅,但训完之后模型反而变得"一根筋"——不再犹豫、不再回头检查、不再说"Wait, let me check that again"。而那些恰恰是做难题时最值钱的行为。

这周读到弗吉尼亚大学和斯坦福的一篇新工作 Negative Self-Distillation(NSD),说实话我第一反应是"这思路是不是反了"——它不教学生模仿好老师,而是造一个"粗心的坏老师",让学生离它远一点。看完实验数据我有点服:Qwen3-4B 在 7 个数学推理基准上平均涨了 7.5 个点,AIME 2024 从 23.8% 直接干到 35.8%。而且全程不用标准答案。

核心摘要

这篇论文(arXiv:2609.11699)要解决的是 On-Policy Self-Distillation(OPSD)的一个隐蔽副作用:老师因为预先看到了标准答案,产生的推理轨迹"过于自信、过于线性",学生跟着学,就把探索和自我纠正的能力给学没了。NSD 的思路很反直觉但很漂亮——不给模型看正确答案,而是让模型自己生成一个"负向条件"(比如扮演一个粗心的推理者),然后把学生的分布从坏老师的方向上推开。关键工程难题是:无差别惩罚会把标点、常用词这些语言能力一起毁掉,所以作者设计了一个 token 级动态门控,只惩罚那些真正被负向条件"激活"的推理缺陷 token。结果是 NSD 在 1.7B/4B/8B 三个规模上全面超过 OPSD 和 Intuitor、TTRL 等无标签 RL baseline,rollout 成本还只有 GRPO 类方法的八分之一。我的判断:这不是底层理论突破,但"门控 + 有界 unlikelihood"这两个设计是实打实的工程巧思,值得做 post-training 的人细读。

论文信息

  • 标题:Negative Self-Distillation: Learning to Reason by Avoiding Flaws
  • 作者:Rongcan Pei, Zhepei Wei, Shuyao Xu, Xinyu Zhu, Wei-Lin Chen, Yu Meng
  • 机构:University of Virginia, Stanford University
  • 链接:https://arxiv.org/abs/2609.11699 (2026 年 9 月 10 日提交,23 页 7 图)

🎯 问题动机:自蒸馏的"自信病"

先把背景捋一下。现在给推理模型做后训练,主流就两条路:

RLVR(可验证奖励强化学习),比如 GRPO 那一系。问题是又贵又稀疏——每个 query 要采好几条 rollout,遇到太易或太难的题,同组 rollout 奖励一样,advantage 直接塌缩,梯度没了。而且奖励是整个序列共享的,token 级信用分配一团浆糊。

On-Policy Distillation(OPD),用一个更强的外部老师给学生的每条轨迹做 token 级密集监督。问题是——你上哪找一个既足够强、又跟学生 tokenizer 兼容的外部老师?前沿模型上这条路基本走不通。

于是 OPSD 出现了(Zhao 等人的 Self-Distilled Reasoner,arXiv:2601.18734):让同一个模型分饰两角,老师那一侧能看到特权信息(比如标准答案),学生只看题目,然后最小化两者在学生自己轨迹上的逐 token 散度。一个模型搞定,不用外部老师,显存还省。这套范式今年在数学推理上很火。

但 NSD 的作者盯上了一个大家不太愿意正视的问题:这个老师是"开过天眼"的

你想想看,一个预先知道答案的老师,它写的推理过程会长什么样?直来直去、笃定、几乎没有犹豫——因为它根本不用真的探索。学生被逼着去模仿这种"人为自信的线性轨迹",后果就是高熵的探索行为、不确定性的表达、自我纠正的习惯,全被当作"偏离老师"的噪声惩罚掉了。

论文里有个数据特别扎心(后文详述):OPSD 训完之后,Qwen3-4B 每条回复里的反思性 token("Wait" 这类)从平均 3.6 个掉到 2.2 个,Intuitor 更惨,掉到 0.8 个。模型变得又自信又沉默——这在竞赛数学里是灾难。

By forcing the student to imitate an artificially confident reasoning trace conditioned on privileged information, OPSD inadvertently suppresses expressions of uncertainty and penalizes the exploratory, self-corrective behaviors required to solve challenging problems.

我的第一反应是:那反过来行不行?不模仿好的,远离坏的总可以吧。这就是 NSD 的全部出发点。


🧠 方法核心:造一个"坏老师",然后离它远点

NSD 的核心 idea 一句话就能讲完:学生模型自己生成一个"负向条件"(比如"请粗心地推理,把质因数分解算错"),条件化在这个负向条件上的模型就是"负向教师",然后优化目标是把学生的分布从负向教师的分布上推开

图1:NSD 框架概览

图1:NSD 整体思路。左侧,从同一个基座模型出发,给它加上问题特定的负向条件(比如"请粗心地计算质因数分解"),就构造出一个负向教师;右侧,学生被优化为压低负向教师偏好的关键 token 的概率——Before 图中学生分布与负向教师重叠的柱子,在 After 中被压了下去。

这个思路有几个立刻能感觉到的好处:

  • 完全无标签。不需要标准答案,不需要外部监督,负向条件是模型自己造的。
  • 负样本比正样本好定义。说实话这个洞察挺深刻的——让模型"知道什么是对的"很难(这正是要训的东西),但让它"扮演粗心"很容易,prompt 一句话的事。
  • 天然保留探索。推开坏的方向不等于锁定唯一好的方向,中间的高熵地带被保留了。

但真要做,有两个硬骨头。

负向条件怎么生成

论文的做法是在线的(online generation):先让学生对问题 \(x\) 采一个初始解答 \(y_{init} \sim \pi_\theta(\cdot|x)\),再让模型基于问题和这个初始解答生成一个针对性的负向条件 \(n \sim \pi_\theta(\cdot|x, y_{init})\)。也就是说,坏老师是"看着学生的答题卡量身定做的",比固定一句"请粗心"要精准得多。

后文消融会看到,其实更懒的策略也 work——只给问题不看解答、甚至塞一段无关的维基百科噪声当负向条件,效果都不差。这个我后面再吐槽。

硬骨头一:哪些 token 才是"缺陷"?

天真做法是对负向教师生成的所有 token 施加 unlikelihood 惩罚。问题是,一条"粗心的推理"里 90% 的 token 都是正常语言——标点、介词、固定搭配。这些在正常推理里也大量出现,无差别惩罚下去,模型的语言底子先崩。

作者的解法是一个漂亮的 token 级门控。实例化两个冻结的教师,共享初始学生权重:

  • 参考模型 \(\pi_{ref}\):只看原始问题 \(x_i\)
  • 负向教师 \(\pi_{neg}\):看问题加负向提示 \(n_i\)

对每个 token 算门控值:

\[G_t = \max\big(0,\ \pi_{neg}(y_t|x_i, n_i, y_{<t}) - \pi_{ref}(y_t|x_i, y_{<t})\big)\]

直觉很直白:如果一个 token 在"粗心模式"下概率比正常模式高,说明它是被负向条件"激活"的,是缺陷行为的一部分,惩罚权重就是这个正差值;如果正常模式下概率更高或持平,说明它跟缺陷无关(大概率是普通语言 token),门控为零,免于惩罚。

这就是个自动噪声过滤器。不用人工标注,不用启发式规则,两个冻结前向传播就把"缺陷 token"和"语言 token"分开了。

图2:NSD 方法总览

图2:NSD 的完整流程。左侧,学生从无标签数据自生成问题和负向条件;中间,逐 token 比较负向教师 \(\pi_{neg}\) 与参考模型 \(\pi_{ref}\) 的分布,门控函数 \(G_t = \max(0, \pi_{neg,t} - \pi_{ref,t})\) 把"对负向条件不敏感"的 token 过滤掉(图中标为 Retained 的灰色 token),只隔离出被负向条件异常推高概率的 token;右侧是逐 token 目标:\(G_t \gt 0\) 的 token 被施加 sigmoid 压缩后的 unlikelihood 惩罚(Case 1),\(G_t = 0\) 的良性 token 只受 KL 正则约束、维持原概率(Case 2)。

硬骨头二:unlikelihood 的梯度会爆炸

第二个问题更微妙。标准 unlikelihood 损失是 \(\mathcal{L} = -\log(1 - \pi_\theta(y_t|\cdot))\)。你看这个式子:当学生给某个 token 的概率 \(\pi_\theta \to 1\) 时,损失趋于无穷,梯度也趋近最大值。

麻烦在哪?门控漏网的高概率 token——逗号、句号、"the"、"is" 这种——会被最大的梯度狠狠惩罚。惩罚一个模型对逗号的高置信度,等于在破坏语言流畅性。

作者的修法是套一层 sigmoid 把它压扁:

\[\mathcal{L}_{GU}^{(t)} = G_t \cdot \sigma\big(-\log(1-\pi_\theta(y_t|\cdot))\big) = G_t \cdot \frac{1}{2 - \pi_\theta(y_t|\cdot)}\]

这个 Gated Unlikelihood(GU)的梯度行为跟原版完全不同。设 \(\pi_c\) 是学生对某 token 的概率,对 logit 的梯度分别是:

  • 标准 unlikelihood:\(\partial / \partial z_c = G \cdot \pi_c\) —— 梯度随置信度线性增长,越自信的 token 罚得越狠;
  • GU(sigmoid 版):\(\partial / \partial z_c = G \cdot \pi_c(1-\pi_c)/(2-\pi_c)^2\) —— 分子里的 \((1-\pi_c)\) 项让梯度在 \(\pi_c \to 1\)衰减到零,峰值出现在 \(\pi_c \approx 0.6\) 附近。

也就是说,最强的"遗忘"信号被精准地分配给了中低置信度的 token——那些模棱两可、最可能是推理缺陷的地方;而高置信度的语言功能词几乎不受打扰。没有任何额外超参数,纯靠函数形状实现的隐式梯度衰减。这个设计我觉得是全文最值钱的地方之一。

图3:sigmoid 压缩对 GU 值分布的影响

图3:左侧是同一句话在两种目标下的逐 token GU 值可视化(颜色越深惩罚越强)。Raw unlikelihood 下,句尾的句号、数字这些高概率 token 反而被激活得最厉害;sigmoid 版把惩罚重心挪到了中低概率的实义词上。右侧是 100 个训练样本、4096 个 token 的 GU 值散点(log 尺度):红色 raw 目标在高概率区(\(\pi_\theta \to 1\))惩罚持续走高,蓝色 sigmoid 目标则在高概率区衰减,把权重重新分配给中低概率 token。

图4:三种目标的梯度函数对比

图4:左图,标准 unlikelihood 的梯度 \(G \cdot \pi_c\) 随概率线性上升,\(\pi_c \to 1\) 时逼近最大值;中图,GU 的梯度呈钟形曲线,在 \(\pi_c \approx 0.67\) 处取峰值 0.125,之后衰减到零;右图是真实训练样本上的梯度分布(log 尺度),绿色 OPSD 把最大梯度给了高概率 token,红色标准 unlikelihood 次之,蓝色 GU 在高概率区压得最低。三条实线是各自的上界包络。

完整目标:GU 惩罚 + KL 锚点

光有惩罚还不够——纯惩罚会让学生分布一路漂移。作者加了一个逐点前向 KL 正则,把学生锚在参考模型附近:

\[\mathcal{L}_{KL}^{(t)} = \pi_{ref}(y_t|\cdot) \cdot \log \frac{\pi_{ref}(y_t|\cdot)}{\pi_\theta(y_t|\cdot)}\]

注意这不是全词表 KL(那个太贵),而是采样 token 上的单样本重要性加权估计,三个标量概率就够算。最终单 token 损失:

\[\mathcal{L}_{NSD}^{(t)} = \mathcal{L}_{GU}^{(t)} + \alpha \cdot \mathcal{L}_{KL}^{(t)}\]

总目标对轨迹求和、对数据和采样取期望即可。整个算法跑起来就是:采样轨迹和负向提示 → 逐 token 算三个概率 \(p_{ref}\)\(p_{neg}\)\(p_\theta\) → 算门控、算损失、反传。每个样本只需要 1 次 rollout——GRPO 类方法要 8 次,光这一项 rollout 时间就省了约 60%。


🧪 实验:数字相当能打

实验设置:训练数据用 MATH(NSD、Intuitor、TTRL 训练时丢掉标准答案),模型是 Qwen3-1.7B/4B/8B,评 7 个基准——AIME 2024/2025/2026、HMMT 2025、AMC 2023、OlympiadBench、MATH-500,Avg@8,non-thinking 模式。Baseline 是 OPSD(用标签的)、Intuitor(self-certainty 内在奖励的 GRPO 变体)、TTRL(多数投票伪标签)。

主实验

模型 方法 AIME 24 AIME 25 AIME 26 HMMT 25 AMC 23 Olympiad MATH-500 Δ 平均 p 值
1.7B 基座 9.6 10.0 9.6 7.1 44.1 37.1 62.5
1.7B OPSD† 15.0 14.2 8.8 5.8 44.1 37.2 62.5 1.1 0.06
1.7B Intuitor 13.8 8.3 8.3 6.7 43.4 35.4 60.6 -0.5 0.29
1.7B TTRL 11.3 11.3 9.6 8.3 41.6 36.8 63.4 0.3 0.29
1.7B NSD 14.2 17.9 10.0 7.1 45.9 38.7 62.6 2.3 0.001
4B 基座 23.8 20.4 17.9 10.8 68.8 47.8 71.2
4B OPSD† 25.4 22.5 15.8 15.8 68.8 47.6 71.7 1.0 0.10
4B Intuitor 24.6 25.8 18.3 13.8 70.0 47.7 69.8 1.3 0.05
4B TTRL 25.8 19.6 18.3 11.7 68.1 47.1 71.7 0.2 0.33
4B NSD 35.8 31.3 29.2 16.3 76.3 51.0 73.1 7.5 \lt 1e-4
8B 基座 28.8 19.2 18.3 11.7 67.2 48.9 73.1
8B OPSD† 30.0 21.3 17.1 12.1 66.9 48.2 73.5 0.3 0.33
8B Intuitor 34.6 20.4 18.3 13.8 70.9 49.5 72.7 1.9 0.02
8B TTRL 29.2 18.3 17.1 10.8 69.1 49.1 73.0 -0.1 0.57
8B NSD 39.6 26.3 25.0 17.9 75.6 50.6 74.1 6.0 \lt 1e-4

几个让我印象深刻的点:

4B 上 AIME 2024 从 23.8% 涨到 35.8%,涨了 12 个点。 这个幅度在无标签自举方法里相当夸张。而且注意 NSD 是这里唯一不用标准答案还跑赢"用了标准答案的 OPSD"的方法——4B 上 OPSD 平均才涨 1.0,NSD 是 7.5。

baseline 的 p 值大面积不显著。 OPSD 在 1.7B 上 p=0.06,8B 上 p=0.33;TTRL 全程 0.29 以上。也就是说这些方法的增益跟随机噪声很难区分,而 NSD 在 4B/8B 上 p 值小于万分之一。作者连 95% 置信区间都给了,NSD 的区间全部不含零——这种统计严谨性在这类论文里不多见,好评。

模型越大涨得越多(1.7B 涨 2.3,4B 涨 7.5,8B 涨 6.0)。作者的解释是大模型生成的负向条件质量更高。合理,但也暴露了一个软肋:这方法的天花板取决于模型自己"扮演粗心"的能力,太小的模型上优势会缩水——1.7B 上 NSD 跟 OPSD 的差距其实没那么大。

反思行为:NSD 最打动我的一张表

方法 AIME 2024 AIME 2025 HMMT 2025 平均
基座 6.8 2.2 1.7 3.6
OPSD 2.6 2.1 1.8 2.2
Intuitor 0.6 1.0 0.7 0.8
NSD 6.9 7.5 8.1 7.5

这是 Qwen3-4B 每条回复里反思性 token("Wait" 这类)的平均出现次数。OPSD 训完掉到 2.2,Intuitor 掉到 0.8——RL 系方法把模型训"沉默"了。NSD 反而拉到 7.5,是基座的两倍多,而且越难的题(HMMT)反思越多。

这张表比主实验更有说服力。它说明 NSD 的增益不是刷出来的,是真的把"回头看一眼"的行为模式保下来了。作者的 case study 也佐证了这点:NSD 训出的模型能在中途放弃错误轨迹、切换到正确解法。

消融:几个值得玩味的发现

负向条件策略(4B 上,相对基座的平均提升):默认在线 solution-aware 策略涨 7.8%;只看问题的离线 question-only 策略涨 7.3%,几乎打平;甚至塞无关维基百科噪声的 wiki-irr 策略也有竞争力。这个结果说实话有点出乎我意料——连"无关噪声"都能当负向教师,说明门控机制才是真正的功臣,负向条件只需要提供一个"方向上有偏"的分布偏移就行。wiki-irr 还有个实际好处:不用在线生成负向条件,每步延迟从 68 秒降到 54 秒。

门控 vs 其他加权方案(style-task ratio,越低说明过滤风格 token 越干净):NSD 门控(wiki 版)2.6 倍,OPSD 5.4 倍,连 entropy-based 加权都有 3.9 倍。门控单独拎出来就是当前最好的风格 token 过滤器。

KL 正则的必要性:去掉 KL 之后训练中期直接崩——学生分布剧烈漂移,门控激活率在第 120 步左右骤降,跟 KL 曲线的崩溃点精确同步。门控依赖 \(\pi_{ref}\)\(\pi_\theta\) 别差太远,一旦学生跑飞,"负向教师 vs 参考模型"的差值就失去意义了。这个失效模式分析得很诚实,不是只报喜不报忧。


🤔 我的判断

这篇论文最值钱的地方:把"自蒸馏该学什么"这个问题翻了个面。OPSD 一系想的是"怎么用特权信息造个好老师",NSD 说"好老师本身有毒,不如造个坏老师然后远离它"。配合门控和有界 GU 这两个干净利落的工程设计,把 unlearning 这个在 LLM 上名声不太好的工具(容易把模型训废)调教得相当可控。跟同期的 Intuitor、TTRL 这些无标签自举方法比,NSD 的增益幅度和统计显著性都明显高出一档。

几个我持保留态度的点

  • 只在数学上验证了。数学推理有清晰的"缺陷 vs 正确"结构,负向条件好定义。换到开放式写作、多轮对话这种"坏"很难刻画的场景,这套方法能不能迁移,论文没回答。
  • 对弱模型依赖存疑。负向条件是模型自己生成的,1.7B 上增益已经缩到 2.3 个点。更小的模型或者能力更偏科的模型,"扮演粗心"的质量可能撑不起训练信号。
  • OPSD 这个 baseline 可能有水分。OPSD 原论文(arXiv:2601.18734)在 4B/8B 上是能匹配甚至超过 GRPO 的,但这里 OPSD 平均只涨 1 个点上下,p 值还不显著。是超参没调好,还是 LoRA 设置(rank 64)限制了容量?原文提到 LoRA 在 1.7B/4B 上效果更好,但这个差距大到让我有点皱眉。公平起见,这个对比数字建议读者自己复现时留个心眼。

工程上的启发:如果你在做无标签的 RL 后训练,"负向教师 + 门控 unlikelihood"是个值得试试的模块——它基本可以插进任何 on-policy 训练管线,rollout 成本只有 GRPO 的八分之一,还顺手解决了 reward hacking 式的风格过拟合。另外那个 sigmoid 压缩梯度的技巧是通用的,任何涉及 unlikelihood 目标的场景(比如幻觉抑制、有害内容遗忘)都可以借用。

最后说句题外话:这篇论文让我想到一个挺有意思的对称性——OPSD 的问题在于"告诉模型什么是对的"会杀死多样性,NSD 的成功在于"告诉模型什么是错的"反而保护了多样性。学习这件事,负例可能比正例更温柔。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我