单标量奖励喂不饱长推理:HSD 用"成功的同伴"把信用钉死在出错那一刻
如果你训过 RLVR(带可验证奖励的强化学习),多半碰到过这个膈应人的场景:模型刷出来一条 500 token 的推理链,开头几步漂亮,中间某一步代数算错了,然后顺着错的一路推到底,最后答案错了。验证器给这条 rollout 打个 0。
然后 GRPO 把这个 0 摊到 500 个 token 上,每个 token 拿到一模一样的优势值。
问题是——那 500 个 token 里只有第 217 个 token 真正错了,前面 216 个 token 是对的,后面那一长串只是"忠实地把错误推下去"。可在 GRPO 眼里它们没有区别,全是同一个负信号。这就是长推理链里 token 级信用分配(credit assignment)的老大难:奖励是对的,但它不告诉你错在哪。
这篇来自乔治华盛顿大学的论文(arXiv:2606.15576)给了一个我觉得相当漂亮的解法:别再拿标准答案当老师了,拿同一批 rollout 里那条做对了的"同伴"当老师。 方法叫 Hindsight Self-Distillation(HSD,事后自蒸馏)。在 Qwen3-8B 和 Qwen3-32B 上,数学和代码全面超过 GRPO 系和现有自蒸馏方法,AIME 这种"答案极短"的任务上涨得最猛,32B 的 AIME-24 比 GRPO 直接高了 7.3 个点。
一段话讲清楚它在干嘛
RLVR 给每条 rollout 只发一个标量奖励,长链里到底哪一步该背锅,信息严重不足。on-policy 自蒸馏想用"特权信息"造一个稠密的 per-token 信号——让同一个模型当老师,多看一眼答案,再去教只看题目的学生。但大家习惯把"标准答案"塞给老师,而答案只是个终点提示:在 AIME 这种答案就是个三位数的任务上,老师在中间那些真正需要指导的位置上直接哑火。HSD 的招数是把老师条件换成"本组里一条做对了的同伴轨迹"。这条同伴是从当前训练组里白捡的,零额外采样成本。因为它是一条完整的成功延续,信用信号会自动聚集到"失败轨迹和成功同伴开始分道扬镳"的那个分歧位置。一针见血地说:这不是又一个 RL trick,而是把"自蒸馏的老师该看什么"这个问题想透了——答案是终点,同伴是路径,长推理要的是后者。
论文信息 - 标题:Localizing Credit at the Divergence: Path-Conditioned Self-Distillation for LLM Reasoning - 作者:Yu Li、Shu Hong、Tian Lan(乔治华盛顿大学) - 链接:https://arxiv.org/abs/2606.15576
🎯 为什么 GRPO 的信用分配"欠定"
先把 GRPO 那一步摊开看。组里采 G 条 rollout,每条拿到结果奖励 \(R_i \in \{0,1\}\),然后做组内标准化:
注意下标 \(t\)——优势值对一条 rollout 的每个 token 都一样。这就埋了两颗雷:
第一,梯度信号没有定位能力。一条失败的链,错在哪里它不管,从头到尾一个负值糊上去。模型只知道"这条不行",不知道"这条从哪开始不行"。
第二,信号幅度完全由组内离散度 \(\sigma\) 说了算。如果这一组 rollout 全对或全错,\(\sigma \to 0\),优势直接坍缩成零——这道题白训了。越是难题(全错)或者太简单(全对),越容易撞上这个零梯度。
on-policy 自蒸馏本来是想救这个的。它让同一个模型分饰两角:老师看 prompt 加一份特权上下文 \(c\)(通常就是标准答案 \(a^\star\)),学生只看 prompt。两者的 per-token KL 当成稠密信用:
思路没问题。但你把 \(c\) 设成标准答案的瞬间,麻烦就来了。
🤔 答案是终点,不是路径——一个被量化出来的哑火
这是全文我最喜欢的地方:作者没有停在"答案信息不够"这种定性吐槽,而是把它量化成了一个信息论上界。
命题 2:如果标准答案 \(a^\star\) 最多取 \(V_k\) 个不同值,那么整条链上答案能提供的信息总量被卡死在:
对 AIME 来说,\(V_k \approx 10^3\),也就是大约 6.9 nats 的信息,要摊到大约 500 个 token 上。模型再大也没用——你给老师看的就是个答案,它能从答案里榨出来的信息不可能超过答案本身。这个上界跟模型容量一点关系都没有。
实测数字更扎心。在 verbose-reference(给老师看完整解题过程)设置下,每条 rollout 的平均预测偏移 \(\overline{|A|}\) 还有 0.90 和 0.53 nats;可一旦换成 bare-answer(只给答案),MATH-numeric 上掉到 0.089,AIME 上掉到 0.039——降了 23 倍。
老师不是不想教,是没东西可教了。

图1:横轴是相对位置 t/|o|,纵轴是采样 token 的预测偏移 |A|,每个基准 1024 条 Qwen3-8B rollout 平均。上排是 verbose-reference 任务(老师看完整解答),偏移在整条链上都有起伏;下排是 terse-target 任务(老师只看光秃秃的答案),偏移几乎贴着地板——老师在中间位置完全没声音。右侧边栏是各基准的 rollout 平均偏移。

图2:七个基准上的预测偏移 |A|,答案支持集从 V_k=2(二分类)一路到 V_k≈10⁴。\(|A|^2/2\) 可以当作"上下文在每个位置携带的条件信息"的代理量。上面那条按支持集缩放的参考线 log V_k/T 比实测偏移高出一到两个数量级。规律很干净:答案越紧凑,偏移单调缩小,右侧的差距在 terse-answer 设置上越拉越大。
这两张图基本把"为什么答案条件不够用"讲死了。答案越短,老师越哑。而恰恰是 AIME 这种答案最短的任务,最需要中间过程的指导。
🧠 HSD 的核心:把"做对的同伴"塞给老师
那换成什么?作者的回答简单到让人拍大腿:换成本组里另一条做对了的 rollout。
关键洞察在于:RLVR 训练循环里,组采样本来就常常同时吐出失败和成功的轨迹。每一条成功 rollout,都是模型自己当下生成的、已经被验证器盖章通过的推理路径。它就躺在那里,零额外成本。
而且这里有个干净的恒等式撑腰(拒绝采样恒等式):
按 \(R_j=1\) 过滤出成功 rollout,等价于直接从"成功条件策略" \(\pi^+\) 里采样。换句话说,你白捡的这条同伴,本身就是一个合法的、on-policy 的成功样本,不需要额外再跑一轮采样。
具体怎么用。对第 \(i\) 条 rollout,记它的成功同伴集合 \(\mathcal{S}_i = \{j \neq i : R_j = 1\}\),从里面均匀抽一条 \(o_i^+\),然后把老师的特权上下文设成:
组里要是一条成功的都没有,就回退到老路子,只用答案。注意同伴要排除自己(不然老师学生上下文一样,KL 恒为零),同时保留 \(a^\star\) 在场,用来稳住分歧点之后的尾部行为。
损失就是 per-token 的 reverse-KL,老师那边 stop-gradient,梯度只从学生这边回传:
外加一个 \(\beta\,\mathrm{KL}(\pi_\theta \| \pi_0)\) 锚定基模型防坍缩。

图3:这张图是 HSD 的灵魂。上半是只给老师答案 \(a^\star\),失败 rollout 上的 per-token 偏移几乎平的——一条线躺着,没信息。下半是给老师 \((a^\star, o^+)\),\(o^+\) 是同组的成功同伴。两条轨迹共享一段前缀直到分歧位置 \(\tau\),在共享前缀上 per-token 偏移接近零,在 \(\tau\) 处尖峰炸起,之后衰减。信用被精准钉在了"开始走错"的那一刻。
🔧 分歧位置:信用为什么会自动聚焦
为什么换成同伴,信用就能定位?因为失败轨迹和成功同伴会共享一段开头,然后在某个点分道扬镳。这个点就是分歧位置:
per-token 信用因此呈现一个很优雅的三段式:
- 分歧前(\(t < \tau\)):老师学生读的是同一段前缀,没分歧,信用贴着地板;
- 分歧处(\(t = \tau\)):老师把概率质量压在演示延续 \(o^+_{i,\tau}\) 上,学生还分散在包括那个错误 token 在内的好几个延续上,KL 一下子拉大——这里就是错误发生的位置;
- 分歧后(\(t > \tau\)):失败链越走越偏,信用在随后 10–15 个 token 内衰减回地板。
模型不再需要猜"我这 500 步里哪步错了",信号直接告诉它:第 \(\tau\) 步,你本该接成功同伴那样,结果接歪了。
这里还有个覆盖率的细账值得说。失败、且组里至少有一条成功同伴的 rollout 占比是:
\(p\) 是通过率。这个函数在 \(p=0\)(全错)和 \(p=1\)(全对)时都是零,峰值在中等难度。\(G=8\) 时峰值约在 \(p^\star \approx 0.25\)。有意思的是 AIME 的通过率 \(p \approx 0.22\),正好落在峰值附近——所以理论上就预测 AIME 增益最大;而 HumanEval+ 通过率约 0.8,太简单了,增益最小。后面的实验数字跟这个预测对得严丝合缝,这种"理论先预言、实验后兑现"的论文我一向高看一眼。
📊 实验:AIME 上的涨幅最能打
主表用相同数据、\(G=8\)、训练 1500 步。先看 Qwen3-8B:
| 方法 | MATH-500 | AIME-24 | AIME-25 | LCB-v5 | HE+ |
|---|---|---|---|---|---|
| GRPO | 78.4 | 24.5 | 21.6 | 32.0 | 80.5 |
| Dr. GRPO | 79.2 | 25.6 | 22.5 | 32.6 | 80.7 |
| GSPO | 79.7 | 26.3 | 23.2 | 33.0 | 80.9 |
| DAPO | 80.1 | 26.8 | 23.7 | 33.4 | 81.1 |
| OPSD | 80.9 | 27.3 | 24.4 | 33.7 | 81.4 |
| SDPO | 81.4 | 27.9 | 25.0 | 34.5 | 82.0 |
| RLSD | 81.6 | 28.2 | 25.3 | 34.8 | 81.6 |
| GRPO + OPSD | 81.9 | 28.6 | 25.7 | 35.1 | 81.7 |
| HSD(本文) | 83.6 | 31.4 | 28.1 | 37.2 | 81.9 |
再看 Qwen3-32B:
| 方法 | MATH-500 | AIME-24 | AIME-25 | LCB-v5 | HE+ |
|---|---|---|---|---|---|
| GRPO | 85.2 | 38.7 | 34.5 | 41.6 | 86.3 |
| DAPO | 86.8 | 41.1 | 36.7 | 42.9 | 86.8 |
| OPSD | 87.0 | 41.5 | 37.1 | 43.0 | 86.9 |
| SDPO | 87.5 | 42.3 | 37.8 | 43.7 | 87.4 |
| GRPO + OPSD | 87.9 | 43.2 | 38.6 | 44.1 | 87.1 |
| HSD(本文) | 89.4 | 46.0 | 41.7 | 46.8 | 87.3 |
读数字之前先看趋势:从 GRPO 到 DAPO 到各种自蒸馏,每一档涨零点几到一个点,挤牙膏式的。HSD 上来直接拉开。
比 GRPO 的增益:8B 上 AIME-24 涨 6.9 个点、AIME-25 涨 6.5 个点;32B 上 AIME-24 涨 7.3 个点、AIME-25 涨 7.2 个点。比现有最强的自蒸馏方法(OPD best),数学和代码上还能再稳拿两到三个点。
但我更欣赏作者的诚实:HumanEval+ 这一列,HSD 是 81.9 / 87.3,输给 SDPO 0.1 个点,表里明明白白标着 −0.1。为什么?回去看覆盖率那个公式——HumanEval+ 通过率约 0.8,组里几乎条条都对,根本凑不出"失败+成功同伴"的配对,HSD 没用武之地。这不是缺陷,是方法适用边界的自然结果,而且跟理论预测完全一致。一篇敢把自己输的那一列原样放出来、还能用自己的理论解释清楚的论文,可信度高很多。

图4:四联诊断图。(a) AIME-25 上 1500 步的训练动态,HSD 对四个基线,最终值标在右侧——HSD 在前几百步就分离出去,差距单调拉大。(b) HSD 随组大小 G 和训练步数的网格,每格标准确率,大部分增益在 G=8 拿到。(c) 路径监督覆盖率 Pr[|S_i|>0] 按难度和组大小分层:难题的覆盖率随 G 陡升,从 G=4 的不足 20% 升到 G=16 的约三分之二。(d) 同伴选择规则消融:均匀采样(本文用的)跟最优方案的差距在评测噪声以内。
🔬 几个值得拎出来的消融
同伴怎么选? 图4(d) 比了四种从成功集合里抽同伴的规则。最低困惑度略好于均匀采样,均匀采样又好于最短长度和最高困惑度,最高困惑度明显最差。作者最后选均匀采样——因为那点收益不值得额外记账的开销。这个取舍我认可,工程上少一个需要维护的排序逻辑是实打实的省心。
终点回退有没有用? 把 \(\mathcal{S}_i = \emptyset\) 时回退到只用答案这步去掉,8B 上 AIME-25 和 MATH-500 明显掉。回退主要在前几百步对最难的问题起作用——那些题早期一条成功 rollout 都采不出来,没有回退就彻底拿不到梯度,直接饿死。
信用真的聚焦了吗? 这是图5,也是对核心主张的直接验证。

图5:横轴是相对分歧位置 τ 的偏移 t−τ,纵轴是 per-token 信用 |A|,512 条失败 rollout 平均。左图:HSD 的信号在两个规模上都聚集在 τ 处,32B 的尾巴比 8B 更宽;而条件为 c=a⋆ 的 OPSD 基线在整个窗口里都待在"静默带",根本没有 τ 峰值。右图:累积信用质量随窗口 |t−τ|≤w 的变化——HSD 把大约 55% 的质量集中在 τ 的 ±8 token 内,OPSD 则均匀摊开。
配套的累积质量表(Qwen3-8B)把这事钉死:
| 窗口 w | 2 | 4 | 8 | 16 | 32 |
|---|---|---|---|---|---|
| HSD | 23% | 39% | 55% | 76% | 93% |
| GRPO+OPSD | 11% | 21% | 31% | 53% | 79% |
| OPSD | 7% | 13% | 19% | 36% | 64% |
±8 token 内,HSD 攒了 55% 的信用,OPSD 不到 20%。所谓"定位信用"不是嘴上说说,是真量出来了。
还有一个细节我觉得特别有说服力:作者拿 SDFT(用离线专家演示做自蒸馏)对比,发现 SDFT 的参考解在 87% 的情况下跟失败 rollout 共享 0 个 token(除了 prompt 之外完全对不上),而 HSD 的同组同伴跟失败 rollout 中位数共享 58 个 token 前缀。前缀对不上,分歧位置就无从谈起,信用也就聚焦不了。这一刀解释了为什么"必须用同组的 on-policy 同伴",而不是随便找条专家解答塞进去——同源才有共享前缀,共享前缀才有清晰的分歧点。
💡 我的判断
先说成本,省得有人觉得这是免费午餐。HSD 每步要跑学生和老师两次前向,老师那次还更长(多了同伴上下文),实测 Qwen3-8B 上每步 24.1 秒,GRPO 是 11.2 秒——两倍多。但按"每秒计算换来的 AIME-25 增益"算,HSD 约 0.27 点/秒,OPSD 约 0.14 点/秒,单位算力的回报反而是 OPSD 的两倍。贵,但贵得值。
这篇论文我给的评价是:一个被想得很透的好 idea,加上一套自洽到有点优雅的论证。 它最值钱的地方不是"涨了几个点",而是把"自蒸馏的老师该看什么"这个一直被默认成"看答案"的设定给掀翻了,并且用信息论上界 + 覆盖率公式 + 分歧位置三段式,把"为什么答案不够、为什么同伴管用、什么任务管用什么任务不管用"全都说圆了。理论预测 AIME 涨最多、HumanEval+ 涨不动,实验一一兑现,连自己输的那 0.1 个点都解释得明明白白。
要说保留意见,两倍的训练开销在大规模场景下不是小数目,而且整个方法吃"组内能凑出失败+成功配对"这个前提——任务太简单或太难都会让覆盖率塌掉,回退机制只能算个补丁。它本质上是中等难度区间的利器。
但话说回来,AIME 这种"答案极短、过程极长"的推理任务,本来就是当前最难啃也最值钱的硬骨头,HSD 恰好打在这个点上。如果你正在做长推理的 RL 训练,尤其是数学和竞赛代码方向,这个"拿成功同伴当老师"的思路,真的值得拿去试一把——它不需要额外采样,改的就是老师的条件输入,落地成本比想象中低。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我