精读:SRD——把事后回顾蒸成事前先见
组相对目标在一组 rollout 奖励全 0 或全 1 时 advantage 恒为零,实测四个尺度上可用预算从没超过 63%;SRD 不动策略损失,改为给每条轨迹配一对「只看题目的先见 / 看得到轨迹的回顾」,用 EMA 自教师逐位置蒸先见分布,λ=0.01 挂在 GRPO / OPSD / RLSD 上,主表最大 +24.16 pp。本专栏逐项对账后发现:+SRD 臂保留了宿主的动态采样过滤器,均匀组在表 1 里照样被丢弃重采;24.16 pp 出自该列垫底的 OPSD;最大的五笔收益全在 OPSD+SRD 行,而 E.4 自陈该行的位移是沿同一条射线缩短到 0.28 倍;λ 扫描没有 λ=0 臂;表 7 的净 +0.58 tokens 与工具调用 +28.8% 分属两个口径
1 论文概览
一句话总结:RLVR 里当一组 rollout 的奖励全 0 或全 1 时,组相对 advantage 恒等于零,这批轨迹被过滤器整组丢弃重采;SRD 不改策略损失,而是给每条轨迹配一对「事前预测 / 事后回顾」,用带特权信息的自教师去蒸那个只看得到题目、看不到轨迹的先见分布,让每个位置都有自己的监督。
核心问题:结果奖励是回溯式的——轨迹跑完才有标量,再按组标准差归一分发回动作。作者的诊断是这件事在能力区间的两端都失效:
when all rollouts in a group receive the same reward, especially in long-horizon reasoning tasks where most attempts fail, their group-relative advantages vanish. The agent may have already revealed rich interactive information about the task and environment, yet learn no signal from that experience. —— §1 Introduction
实测的规模是:code 域、关掉动态采样、四个 Qwen3.5 尺度下,可用 rollout 预算从没超过 63%,被丢弃的份额呈 U 形,为 98.0 / 39.1 / 37.0 / 41.3 个点——2B 是全败饱和,35B 是全对饱和(全败组 98.0 → 13.4,全对组 0.0 → 27.9)。
主要贡献:
- 换监督目标,不换动作分布。此前所有 on-policy 自蒸馏变体改的都是特权上下文里装什么(runtime 反馈、技能摘要、自我修订),监督目标始终是学生的动作分布 。本文把目标换成「只由题目与环境上下文生成的先见分布」,回顾信息只作为训练期的教师特权。
- 一个可插在任意后训练目标上的辅助项。,B 取 GRPO / OPSD / RLSD 三者之一,,宿主损失一字未动。
- 双通道设计。成功轨迹走 Knowledge 通道,失败轨迹走 Pitfall 通道;附录 A.7 给出 ,训练成功率下 pitfall 行占多数,主表只用 Pitfall(§5 说明 Knowledge 冗余且更贵)。
- 结构性的零支撑分离(附录 A)。 在均匀奖励组上逐点成立,任何重标定都救不回来; 在该事件上无此约束。代价上的不对称是 对 。
- 附录 F 的机制级审计与附录 E.6 的一次公开撤回。前者按「代码 × 全败 × 早期」的预注册规则抽组,逐条展示失败轨迹、per-trace 诊断、聚合清单、盲先见;后者承认一版统计量的符号被恒等式强制、结论反了。
2 方法详解
架构/方法概述
对任务 与 rollout 组 ,每条 rollout 按奖励决定视角 : 取 Knowledge, 取 Pitfall。同一视角下定义两个分布——
是特权后验上下文(轨迹、金标答案、失败类型标注 )。学生采样先见序列 ,教师在同一段学生生成的前缀上、额外看得到 ,逐位置做广义 JSD(,top-k = 100,IS 比裁剪 2.0):
教师是 EMA 自教师(每步 0.05),不是另训的模型。先见上限 2,048 tokens,rollout 每轮 8,192 tokens、最多 8 轮交互。
关键创新点
- 奖励决定「教哪一课」,不决定「教不教」。这是全文最锋利的一句: 只选择通道,均匀组里两条通道都定义良好。
- 失败轨迹的知识化。Pitfall hindsight 分两阶段:per-trace 阶段从单条失败轨迹抽 [Error]/[Rule]/[Example],聚合阶段把同一 query 下所有失败轨迹的诊断合并成一张共享清单。截断分支的提示词会明说「推理方向未必错,pitfall 更可以是效率或长度问题」。
- 先见只在训练期出现。推理时不需要显式生成先见(表 3 也验证了显式化几乎无效:四个 checkpoint 里三个只动了 2、3、11 个 rollout / 800)。
- 与 hindsight 前缀 OPSD 正交。表 2 左做了 2×3 交叉:教师前缀取 raw-trace 或 hindsight,SRD 目标取无 / pitfall / pitfall + knowledge。
与基线方法的区别
三条基线都跑在同一 scaffold、同一数据流、同一 rollout 与优化器预算上,只改学习目标:GRPO 是 DAPO 式组相对目标(,IS clip 2.0);OPSD 是向 EMA 教师的特权前缀做 token 级蒸馏;RLSD 用教师-学生散度重加权 GRPO。+SRD 唯一做的是把特权前缀换成结构化 hindsight,再加一项 的辅助损失。这里有一个设计选择值得单独指出:+SRD 臂保留宿主自己的动态采样过滤器——
Both the RLVR and the self-distillation families are trained with dynamic sampling, each under the filter that its own objective requires, and we keep those filters in place for every arm in Table 1. —— §C.4
GRPO 系只留奖励标准差非零的组(全对、全败都丢),OPSD 系只丢全败组(全对组仍可用)。
3 实验结果
主要指标
10 个基准、四类任务,avg@8 通过率,Qwen3.5-4B 与 9B 两个尺度。
| 对比 | 最大增幅 | 所在列 |
|---|---|---|
| 4B GRPO+SRD vs GRPO | +16.25 / +8.33 / +8.05 | AIME26 / Code 均值 / Search 均值 |
| 9B OPSD+SRD vs OPSD | +24.16 / +17.22 / +10.31 | AIME26 / Math 均值 / Search 均值 |
| 9B RLSD+SRD vs RLSD | +11.00 | ALFWorld |
与 SOTA 的对比
本文没有外部 SOTA 对照,全部基线由作者在同脚手架下复现,这是设计上的优点(可比性),也是限制(绝对水平不外推)。逐列取最优时,9B 的 10 列里 GRPO+SRD 占 7 列(AIME24 84.17、AIME26 81.67、AMO 28.00、LCB-v6 67.50、OJBench 31.80、BCP 25.54、ALFWorld 78.25),OPSD+SRD 占 2 列(HotpotQA 78.63、2Wiki 71.38),RLSD+SRD 占 1 列(WebShop 91.12)。
消融实验关键发现
- 通道选择(表 2 左):hindsight 前缀 + pitfall 是效率与效果的折中;加 Knowledge 后有两处落到基线以下——4B AMO −4 pp、9B AIME26 62.92 对 65.42。两条训练曲线上 pitfall 散度下降 47% 与 30%,knowledge 散度停在 0.0045 与 0.003 不动。
- 扫描(表 6,OPSD 基座、4B、五基准): 的 all 列为 64.2 / 64.2 / 63.7 / 63.5,底行是 step 0 未训练策略的 39.3。跨三个数量级只动 0.7 pp。
- 位移分解(表 8):held-out 代码上 、、;OPSD 一侧 ,,。两个宿主彼此 。
- 奖励静默区(§5):2B、98% 组奖励均匀、关掉动态采样、同一 rollout 预算下,GRPO 训练成功率峰值 1.6%、终值 0.0%,加 SRD 后 60.6%。
4 个人分析
亮点
- 把「监督目标」和「hindsight 里装什么」拆成两个轴。相关工作里这两件事一直被混在一起(§6 点名:更丰富的教师上下文未必更好,会改校准、自我修正、认知抑制)。本文只动前者,实验设计的干净就来自这一步。
- 附录 E.6 的自我撤回是全文最扎实的一段。他们承认一版统计量 被恒等式强制为负:设 ,。实测 反解 ,即两更新 74% 同向,与此前宣称的反向相反。这个恒等式我独立推了一遍,成立。
- 附录 F 的粒度罕见。它给出八条失败轨迹的 token 长度、失败分型、per-trace 诊断、聚合清单与盲先见,并明说盲先见「把容量限制安在了目的地而不是 agent 身上」——猜对了有容量问题,猜错了约束在哪。这类「展示机制不成立时会出现的反例」的写法值得抄。
- 附录 A 的零支撑分离是逐点的。 不是期望为零,是每条实现都为零,任何重标定都救不回来;这条把「加 SRD」与「调 advantage 尺度」彻底区分开。
局限性
- 主表里 SRD 从未见到奖励均匀的组。§C.4 写明 +SRD 臂保留宿主的过滤器,均匀组照样丢弃重采。摘要的「37–98% 的组奖励均匀」来自 §5 关掉过滤器的 code-only 配置,「0.0% vs 60.6%」同样出自关掉动态采样的配置(且 60.6% 是训练成功率,不是评测集数字)。机制最强的一段证据,与 headline 最强的一段数字,跑在两套配置上。更要紧的是,动态采样正是业界为避开这类空梯度装的标准件,把它从基线身上摘掉再比 0.0% 对 60.6%,对照的公平性要打折。附录 F 扫描 686 组得到 47.2% 均匀(24.6% 全败 + 22.6% 全对),这个量在过滤器打开时是被直接丢掉的。
- headline 出自那一列最弱的基线。24.16 pp 是 9B OPSD+SRD 对 OPSD 的 AIME26;同一列上 GRPO 70.42、RLSD 67.50、OPSD 52.92,OPSD 垫底。换最强基线重算:77.08 − 70.42 = +6.66 pp,按 avg@8 的配对口径(30 题, pp)得 z = 1.66。同一张表里 GRPO+SRD 的 81.67 才是该列最高值。
- 最大几笔收益的替代解释是阻尼,不是先见。表 1 里最大的五笔(+24.16、+18.75、+17.22、+16.25、+15.51)全在 OPSD+SRD 行,OPSD 恰是 9B 上唯一掉到 Vanilla 以下(HotpotQA −5.50、2Wiki −3.76、LCB-v6 −2.18)、Math 均值跨尺度倒挂(9B 39.70 低于 4B 41.81)的基线。E.4 自己写:、余弦 0.980,是沿同一条射线走得更短,并说这是 regulariser 或 early stop 的 signature。缺一条「把 换成等强度的通用阻尼(KL 到基座、降学习率、早停)」的对照,就无法把「注入先见」与「按住一个正在发散的自蒸馏」分开。
- 扫描没有 臂。表 6 底行是 step 0 未训练策略,不是 OPSD。平坦性说明增益不来自 挑得好(成立),也说明增益对注入多少先见几乎不敏感——这与「稠密先见监督驱动增益」的机制叙事有张力。量级上:散度本身 0.003–0.0045 nats,乘 得每位置约 ,而宿主每 token 损失在 量级。
- 两处口径差没被弥合。其一,表 7 十类相加净 +0.58 tokens/rollout,正文读作「SRD 不是在让模型多说话」;同一批 held-out 题上工具调用从 2,243 涨到 2,888(+28.8%)、中位轮数 3 变 4。前者只统计预测熵 > 0.1 nats 的位置,工具调用语法几乎全在被排除的低熵位里(该类 +0.03),后者是真实轨迹计数。其二,表 9 里量化「SRD 要弥合的信息差」的 hind. mentions 与 hind. only 两列,Knowledge 通道是「—」,29.9% 这个数只测了 Pitfall 一侧。
- 理论假设与实现不同构。A.2 / A.7 的 与 Prop 4 的非退化假设都写在「per-trajectory hindsight, 只通过 依赖整组」之下;B.1 的实现里 Pitfall hindsight 有聚合阶段,教师看到的是全组失败轨迹的诊断清单,行间正相关 ⇒ 。论文用「最坏情况 」兜住了界, 却从未测量,而聚合恰恰是把它往 1 推的那个操作。
- 评价侧两处依赖。BCP 是 Search 三列里涨幅最大的(4B +9.52、9B +7.59),也是三列里唯一由 gpt-5.6-luna 做主评分器的一列(§B.2:HotpotQA/2Wiki 先跑 EM,命中即短路)。HotpotQA/2Wiki 的 100 题评估子集是用 Qwen3-8B 的 pass@8 落在 (0%, 30%) 筛出来的——按参照策略的 rollout 筛难度,而训练用的是同族模型。
- 单点复现与几处计数。全文 seed 出现 2 次且都是否定式自陈(“one seed”),significan 与 confidence interval 零命中,总训练步数未报(只说 nominal step count 固定)。按上面的配对口径补算 z:4B GRPO+SRD 十列里六列 z ≥ 2.5(BCP 4.99、2Wiki 4.85、AIME26 3.73、OJBench 3.43、WebShop 2.98、LCB-v6 2.77);9B GRPO+SRD 十列里四列 |z| < 0.6(LCB-v6 0.08、HotpotQA 0.11、2Wiki −0.23、ALFWorld 0.54)。补一句计数核对:§4.2 写「only one regression」,逐格对下来是四个负值与一个零:4B RLSD+SRD 的 OJBench −0.97、2Wiki 0.00,9B OPSD+SRD 的 BCP −0.84、WebShop −3.61,9B GRPO+SRD 的 2Wiki −0.51。
- 成本证据只有一格。表 2 左的墙钟只测 OPSD、只测数学:4B trace 前缀 197 → 217 s/step(+10.2%),9B 195 → 229(+17.4%),而 4B hindsight 前缀是 258 → 250——加了 SRD 反而快 3.1%。六个格子的噪声在 ±3% 以上,+10.2% 只有噪声的三倍。GPU-hour 与 FLOPs 全文零命中。
对大模型领域的影响
真正有分量的是那个方向问题:,两条都涨点的后训练目标在 log-prob 空间里几乎反向;SRD 与两者都同向(+0.814 / +0.980),说明它没有自己的固定方向,而是跟着宿主走——对稀疏宿主它加位移(0.39 → 0.86),对稠密宿主它减位移(1.97 → 0.57)。这把「先见」从一个可识别的位移分量降格成了宿主动力学的一个调制器。领域层面有两层含义:一是「同一个辅助项在 GRPO 上是信号、在 OPSD 上是阻尼」这件事本身值得被当成研究对象,而不是被当成普适增益;二是如果对组相对方法而言 63% 就是可用预算的天花板,且这个天花板不随能力提升而消失、只从失败饱和平移到成功饱和,那么「给均匀组定个价」会比「再改一次 advantage」更值钱。
5 实践启示
可以借鉴的技术
- 失败分型路由。 三分支提示词是低成本高收益的工程件:截断分支会被明确告知「推理方向未必错,pitfall 更可以是长度问题」,格式分支只谈输出格式。任何做失败复盘的数据管线都能直接搬。
- 两阶段聚合。per-trace 诊断加同 query 聚合去重,避免 8 条失败轨迹产出 8 份重复清单。这条对「从 rollout 里提炼技能库」的管线通用。
- 先见蒸馏的停梯度自教师 + EMA。EMA 速率 0.05、top-k = 100、IS 比裁剪 2.0、JSD ,是一组可直接复用的稳定配置。
- 位移分解的 Fisher 度量与两个投影轴。在 248K 词表上用欧氏内积基本是 bf16 噪声;先投影掉温度轴()与已实现 token 轴(,因为 hindsight 块泄漏轨迹)再分解,这套流程可以直接搬来判断「新加的损失项到底是信号还是噪声」。
- 附录 E.6 的恒等式检验。凡用 这类「两向量共享一项」的统计量做对齐论证,先推一遍它在零信息下的取值。
潜在应用场景
- 长程 agent(BrowseComp-Plus、ALFWorld)里,交互契约(stdin 读取约定、 admissible action 随库存变化)这类只有跑一遍才知道的事实,正是盲先见系统性漏掉、hindsight 能补上的那一类。表 9 的 29.9% 是这个缺口的下界。
- 稀疏奖励或强饱和场景下的冷启动:2B、98% 全败时 GRPO 拿不到梯度,SRD 有定义。照第 1 条局限,这条要先在「过滤器打开、只补均匀组」的配置下重测才有说服力。
- 把「均匀组」从被丢弃改成被廉价复用:即便不加 SRD,均匀组里也含交互信息,值得单列一条数据管线的分支。
参考文献
Zhang, H., Chen, Q., Hayashi, H., Li, Z., Zhang, S., Zhang, J., Chen, J., Wu, F., Lu, P., Savarese, S., McAuley, J., & Wu, C.-S. (2026). Self-Retrospection Distillation: Turning Post-hoc Experiences into Prior Foresight. arXiv:2610.08077 [cs.AI]. Salesforce AI Research, UC San Diego, Texas A&M University, Stanford University.
相关精读
- 本篇把本专栏连续三十三期的主线再挪一格:此前三十二期回答的是「挑哪些 token、挑哪些轨迹、信用按哪套口径记账、信号被消费时旧了多少、数据分布离基座多远、整条响应有没有资格参与这次更新、策略容量会不会被优化动力学耗光、教师分布里哪些位置允许比较」,这一期问的是事后经验除了改行为,还能不能改行动之前的那次预测——作用层从「这条轨迹怎么进损失」转到「同一个策略的两个视图之间怎么对齐」。
- 精读:跨分词器 OPD——把对齐覆盖度补满反而掉点
- 精读:Mesh Learning——把 RLVR 的坍塌解释成策略容量的供需冲突
- 精读:CARM——把响应级掩码的判据从净位移换成双向漂移
- 精读:把 off-policy 专家数据 MCMC 投影成 on-policy 数据
- 精读:GMC-GRPO——把重要性比从逐条裁剪换成整组收缩
- 精读:SCAPO——用「扰动下不动」给 token 记一笔负账
- 精读:ARCUS——prompt 的选择也有一条弧
- 精读:把中间那一步的信号从模型里搬进环境——用沙箱回滚跑出免费过程奖励
- 精读:把特权信息从损失搬到采样器——多轮 agent 里自蒸馏为什么会崩
- 精读:OC-GRPO 与离上下文重要性校正
- 精读:不跑 RL,先把新奖励的结果预测出来
- 精读:给 token 级信用一个唯一解,然后把它求和掉
- 精读:把后训练配方本身当成果,再逐阶段对账
- 精读:STAR-E——按惊讶度给 token 重加权 advantage
- 精读:按梯度可估性给 token 分配蒸馏监督
- 精读:TrimSFT——按 logit 间隔剪掉 SFT 里的低信息 token
- 精读:ESFT 与端点 SFT 对中段推理链的裁剪
- 精读:把中间状态的价值估计整体消掉
- 精读:ActObs——把被 mask 掉的那 45% 观察 token 重新纳入损失
- 精读:SP³O——一条响应里只给三个位置价值监督
- 精读:教师引导的课程 RLVR——把解不出的题变成可解的题
- 精读:DataFlex-RL 与均匀采样的替代策略
- 精读:NGU 与 RL 里的马太效应
- 精读:按排序可分辨性做 RLVR 数据联合工程
- 精读:模型与外壳共演化时的同策略校正
- 精读:OPD-then-RL——顺序摆信号胜过同 step 混信号
- 精读:One-Shot OPD 与状态覆盖吸收率
- 精读:Compile by Training——把 LLM 降级为构建期依赖
- 精读:Terminal-Universe——轨迹反向造环境
- 精读:OPSA——无教师的同策略自适应
- 精读:SPADE——把优化对象从轨迹上移到生成器
- 精读:DART-SD——标注单元从轨迹换成状态图