SEED 阅读笔记:当「事后诸葛亮」变成训练信号,而不只是更好的提示词

笔记日期: 2026-07-20 笔记作者: Zhongzhu Zhou 论文标题: SEED: Self-Evolving On-Policy Distillation for Agentic Reinforcement Learning 作者: Jinyang Wu, Shuo Yang, Zhengxi Lu, Fan Zhang, Yuhao Shen, Lang Feng, Haoran Luo, Zheng Lian, Shuai Zhang, Zhengqi Wen, Jianhua Tao arXiv: 2607.14777 状态: 预印本,提交于 2026 年 7 月 16 日

一句话总结

长程智能体强化学习有一个很别扭的粒度错配问题:你实际拿到的奖励信号,是每个 episode 一个数字(“这次任务到底完成了没有”),但你真正想训练的东西,是分散在几十轮环境交互里的成百上千个逐 token 的决策。像 GRPO 这样的结果导向强化学习算法,用一种简单粗暴的方式掩盖了这个错配:把同一条轨迹的标量优势值,原封不动地广播给这条轨迹里的每一个 token——一条成功轨迹里的每个动作都被同等程度地强化,一条失败轨迹里的每个动作都被同等程度地抑制,完全不管这个具体动作是不是真正导致了这个结果的关键一步。SEED(SElf-Evolving on-policy Distillation,自我进化的同策略蒸馏)正是针对这个错配下手,机制在概念上很简单,但工程细节打磨得相当仔细:一条轨迹完成之后,把整条轨迹重新喂回同一个模型,让它把自己学到的东西总结成一段简短的自然语言”事后经验技能”(可复用的工作流程、决定性的观察、或者失败规避规则),然后对完全相同的、已经采样出来的那些 token,在两种不同的上下文下重新打分——一次用普通历史,一次把这条事后技能插进去——用模型自身概率的这个变化量,作为一个稠密的、逐 token 的训练目标。因为这条技能只在训练时插入、从来不会出现在推理阶段,模型就必须学会表现得”好像它已经内化了这条事后经验”,却从未在部署时被明确告知这条经验本身。而”自我进化”这个词,正是让这套设计不至于沦为一次性静态蒸馏的关键:在每一轮策略更新时,恰好是刚刚更新完的那个模型 checkpoint,同时被用来采集新轨迹、以及把这些轨迹分析成技能——所以随着执行者(actor)的成功与失败模式在训练过程中不断变化,分析者(analyzer)给出的事后点评也会随之同步变化,不存在一个被单独训练、冻结不变的技能生成器。在 ALFWorld、WebShop 和七个基于搜索的问答基准上,横跨三种骨干模型规模(Qwen2.5-3B/7B-Instruct、Qwen3-1.7B-Instruct),SEED 把 ALFWorld 的宏平均成功率从 75.0(GRPO)提升到 91.8,把 WebShop 的成功率从 63.3 提升到 78.9,把 Search-QA 的平均准确率从 36.4 提升到 45.7——更关键的是,它超过了每一个同样使用了”特权自教师”机制的自蒸馏基线(OPSD、Skill-SD、RLSD、SDAR),这就把”让教师的监督信号变成同策略且自我进化”这一具体贡献,和这些方法本身已经具备的”用同一个模型自我蒸馏”这个大框架区分开来了。

核心要点速览

  • SEED 针对的监督粒度缺口是真实存在的,而且容易被低估:GRPO 的组内相对优势值是每条轨迹一个标量,原封不动地广播给这条轨迹里的每一个有效 token——当同一个 rollout 组里的两条轨迹拿到相同的终局奖励时(训练收敛之后这种情况非常常见),这个标量对两条轨迹来说都恰好是零,RL 梯度对两条轨迹里的每一个 token 都会消失,哪怕其中一条轨迹明显走了一条效率高得多、路径干净得多的路线到达同样的结果。
  • SEED 的两阶段设计,把”教会模型如何反思自己”(阶段一:在离线轨迹上做事后技能 SFT,由外部分析器 GLM-5.2 标注)和”把这种反思能力当作实时训练信号来用”(阶段二:自我进化的同策略蒸馏,模型分析自己当下产生的轨迹,不再需要外部分析器)干净地拆分开来。
  • 数学核心是一个置信度门控、由 sigmoid 加权的同策略蒸馏损失(式 1),其期望梯度(命题 1 证明)可以严格等价于:向一个由当前策略自身的 token-上下文占据分布构造出来的、技能重加权目标分布做 KL 蒸馏——这正是论文所说”辅助信号是占据匹配(occupancy-matched)的”背后的理论内容。
  • 命题 2 给出了一个更尖锐、可检验的论断:即便一个 rollout 组里的所有轨迹结局完全打平(此时 GRPO 的优势值和梯度可以严格证明为零),OPD 损失的梯度平方范数正好等于事后技能门控值在候选 token 之间的方差——也就是说,只要这条事后技能真的能区分好动作和坏动作,这个梯度就一定非零,恰好在结果导向式 RL 完全失声的那个区间里,给了 SEED 分配信用的能力。
  • 消融实验(表 2)显示三个组件都有贡献、且互不冗余:去掉事后技能 SFT 损失 5.8 分,去掉自我进化刷新损失 4.8 分,而把同策略技能换成一个静态离线技能库,损失最大——达 7.4 分——这说明”技能来自谁的轨迹”比”有没有技能”这件事本身更重要。
  • 或许最有实践参考价值的实验发现,是 Skill-Prompt 与 SEED 的对比:在推理时把同类型的事后技能作为提示词直接喂给模型(不做任何训练),在所有三个骨干模型上、在每一个汇总指标上都不如 SEED——把技能内化进权重里,比在测试时把同样的信息以文本形式直接交给模型更有效,这对于”提示词工程到底能在多大程度上替代训练时蒸馏”这个问题,有真实的参考价值。

前置知识:阅读本文需要先了解的东西

这是一篇智能体强化学习论文,处在”面向 LLM 的强化学习”、“同策略知识蒸馏”和”源自经典强化学习的事后经验/经验重放思想”三者的交汇处。要不靠囫囵吞枣地读懂方法部分,你需要先补齐五块背景知识:什么是部分可观测马尔可夫决策过程(POMDP),以及它如何映射到一个多轮交互的 LLM 智能体上;GRPO 的组内相对优势值到底在计算什么,以及它为什么是”每条轨迹一个标量”;“同策略”是什么意思,以及训练数据与当前策略之间的分布错位为什么是一个真实的代价(而不只是一个学究式的区分);知识蒸馏是什么,以及是什么让一个蒸馏信号变成”同策略”而不是”异策略”;还有,当一个置信度门控/sigmoid 加权机制被应用在一个对数概率差上时,它到底在做什么。下面逐一展开。

把一个多轮 LLM 智能体建模成 POMDP

一个长程智能体任务——在模拟厨房里做饭(ALFWorld)、在模拟电商网站上购物(WebShop)、或者通过搜索来回答问题(Search-QA)——很自然地可以建模成一个部分可观测马尔可夫决策过程 (S,A,O,T,Ω,R,γ)(\mathcal{S}, \mathcal{A}, \mathcal{O}, \mathcal{T}, \Omega, \mathcal{R}, \gamma):一个潜在状态空间 S\mathcal{S}(真实的、可能被隐藏的世界状态——比如厨房里每个物体到底放在哪里)、一个动作空间 A\mathcal{A}(文本回复或者可执行的工具调用)、一个观测空间 O\mathcal{O}(智能体实际看到的东西——比如移动到某个位置后返回的文字描述)、一个转移核 T\mathcal{T}(隐藏状态在给定动作下如何演化)、一个观测核 Ω\Omega(观测如何从隐藏状态生成)、一个奖励函数 R\mathcal{R},以及一个折扣因子 γ\gamma。在每个时间步 tt,智能体维护一段交互历史 ht=(o0,a0,o1,a1,,ot)h_t = (o_0, a_0, o_1, a_1, \dots, o_t)——迄今为止的全部文字记录——并从 atπθ(ht)a_t \sim \pi_\theta(\cdot \mid h_t) 中采样下一个动作:LLM 以整段记录为条件,产生下一个动作,就好像它只是在续写一段普通文本一样。这正是为什么训练 LLM 智能体本质上是一个带有特殊奖励结构的语言建模问题:被生成的这个”序列”,把模型自身的输出和外部注入的观测文本交织在一起,而一条完整轨迹 τ={(ot,at,rt)}t=0T1\tau = \{(o_t, a_t, r_t)\}_{t=0}^{T-1} 的奖励 R(τ)R(\tau) 通常是稀疏的——一个二元的成功/失败信号,只有在整个 episode 结束之后才能拿到,而不是逐 token 甚至逐轮次给出的。

GRPO 的组内相对优势值:每条轨迹一个数

GRPO(Group Relative Policy Optimization,组内相对策略优化)是 SEED 所依托的结果导向 RL 骨干算法。对于一个任务提示 qq,GRPO 从当前(冻结的)策略里采样出一组 NN 条轨迹,{τq(1),,τq(N)}\{\tau_q^{(1)}, \dots, \tau_q^{(N)}\},并计算这组轨迹结果 R(τq(n))R(\tau_q^{(n)}) 的经验均值 μq\mu_q 和标准差 σq\sigma_q。第 nn 条轨迹的优势值就是

Aq,nrl=R(τq(n))μqσq+ϵ.(RL-Adv)A^{\text{rl}}_{q,n} = \frac{R(\tau_q^{(n)}) - \mu_q}{\sigma_q + \epsilon}. \tag{RL-Adv}

这里有一个容易被忽略的关键细节:这个优势值是每条轨迹一个标量,并且会被原封不动地广播给这条轨迹里每一个有效的动作 token——Aq,n,t,rl=Aq,nrlmq,n,t,A^{\text{rl}}_{q,n,t,\ell} = A^{\text{rl}}_{q,n} \cdot m_{q,n,t,\ell},其中 mm 只是一个有效性掩码。一条经历了 30 步磕磕绊绊、迷迷糊糊才最终成功的轨迹,和一条只用 5 步干净利落就成功的轨迹,拿到的逐 token 奖励信号完全一样——GRPO 内在地没有办法说”这个具体动作,在这个具体的步骤上,才是那个好的决策;而三轮之前的那个动作,不过是一次白白浪费的绕路”。这就是论文引言里那句”监督粒度缺口”用数学形式表达出来的样子:奖励的粒度(每个 episode 一个数)和”被优化对象的粒度”(每个 token 一个策略决策)不匹配。

同策略 vs. 异策略:分布错位为什么是真实的代价

“同策略(on-policy)“指的是,训练数据(轨迹,或者在 SEED 这里,是从轨迹中提取的事后技能)是由当前版本的策略生成的,而不是来自一个更早的 checkpoint 或者一个完全独立的模型。为什么这件事在教科书式的正确性之外还很重要?具体来说:如果你在训练早期,用一个较弱的早期策略 checkpoint,一次性生成了事后技能,那么这些技能描述的是那个早期策略的失败模式和成功策略——随着训练推进,策略变得更强,它不再犯那些特定的错误,开始犯不同的错误,那么这些冻结在早期阶段的技能就会逐渐变得不再相关,甚至变成误导性的监督信号。SEED 的消融表精确地量化了这一点:用一个静态离线技能库(由早期快照一次性生成)替代同策略技能生成,在 ALFWorld 上损失 7.4 分——这是论文里最大的单项消融损失,比完全去掉事后技能 SFT 还要大。这正是下文将要讨论的理论”陈旧性”上界(命题 3)背后的实证证据。

同策略蒸馏:教师与学生共享同一套权重

经典知识蒸馏训练一个较小的”学生”模型去模仿一个更大的、独立训练出来的”教师”模型的输出分布。同策略蒸馏(SEED 所依托的具体变体,沿袭了 OPSD、SDAR、RLSD 等前人工作)一次性改变了两件事:第一,“教师”和”学生”字面上就是同一套参数 πθ\pi_\theta,只是在两种不同的输入上下文下被分别评估(一种插入了特权/事后信息,一种没有);第二,被打分的这些 token,不是从教师分布里新采样出来的——它们是模型自己在采集轨迹时,在普通(学生)上下文下已经采样出来的那些 token。第二点正是使其成为”同策略”的原因:它不是在教学生去模仿一个理想化的教师输出,而是让信号只触及策略本身会真正采取的动作,只是在一个稍微更丰富的上下文下重新打分。这个设计选择避免了引入”学生永远不会自然产生的教师生成 token”所带来的分布偏移。

置信度门控:把一个对数概率差转化成一个软的 0 到 1 权重

把”这条技能改变了模型对这个 token 的看法”转化成一个可用训练信号的核心技巧,是一个sigmoid 置信度门控。如果 skill\ell^{\text{skill}} 是模型在技能增强上下文下、对某个已采样 token 的对数概率,θ\ell^{\theta} 是它在普通上下文下的对数概率,两者的差 Δ=skillθ\Delta = \ell^{\text{skill}} - \ell^{\theta} 在事后技能让这个采样 token 更可能出现时为正(技能”背书”了这个 token),在技能让它更不可能出现时为负(技能”反对”这个 token)。把这个差值过一遍 sigmoid,g=σ(βopdΔ)g = \sigma(\beta_{\text{opd}} \Delta),就把一个无界实数转化成了一个 (0,1)(0,1) 区间内的软权重:被强烈背书的 token 门控值接近 1,被强烈反对的 token 门控值接近 0,而 βopd\beta_{\text{opd}}(超参数,论文中设为 5.0)控制这个门控在这两者之间区分得有多锐利。这个门控正是”置信度门控”里”置信度”的含义——它衡量的是事后技能对每个单独 token 的支持或反对有多”自信”,而正是这个置信度,不是原始奖励,才是 SEED 蒸馏回普通策略里的东西。

一个具体的 ALFWorld episode 走查

把上面这些形式化定义落到实处,值得具体走一遍一个 ALFWorld episode 到底长什么样——因为这正是本文通篇公式里 τ\tau 的具体样子。以论文图 6 用到的那个例子为例:任务是”把蜡烛放进马桶”。在 t=0t=0,观测 o0o_0 是一段自然语言房间描述(“你站在房间中央。快速环视四周,你看到一个浴缸盆 1、一个垃圾桶 1,……”)。智能体的动作 a0a_0 是从一个受限但很大的可执行动作集合里选出的一条文本指令(比如”走到架子 1”)。环境随后返回新的观测 o1o_1,描述发生了什么、现在能看到什么(比如”你到达了架子 1。在架子 1 上,你看到一个肥皂瓶 2 和一个喷雾瓶 1。”)。这种 (ot,at)(o_t, a_t) 交替会一直持续——在论文给出的成功案例里,一共只用了五步——直到任务完成(给出稀疏的终局奖励 rT=1r_T=1)或者用尽了最大交互步数预算(ALFWorld 是 30 步,见表 5),这时 rT=0r_T=0。对所有 t<Tt<T,中间奖励 rtr_t 都是 00——没有对单个动作的部分得分,这正是驱动整个方法的那种稀疏奖励结构。当这整条序列完成之后,它就恰好变成了被喂给事后分析器 Aθold(xτ)\mathcal{A}_{\theta_{\text{old}}}(x_\tau) 的那个 τ\tau——分析器读完全部五步(或最多三十步)的观测-动作对加上最终结果,产出本文通篇讨论的那段自然语言事后技能。

符号速查表

因为方法部分引入了不少带下标的符号,这里给出一张统一的对照表,方便阅读下文推导时随时回查。

符号含义
qq一个任务提示
τq(n)\tau_q^{(n)}任务 qq 的第 nn 条采样轨迹
hq,n,th_{q,n,t}轨迹 nn 在时间步 tt 的普通交互历史
h~q,n,t\tilde h_{q,n,t}技能增强历史(拼接了事后技能)
sq(n)s_q^{(n)}从轨迹 τq(n)\tau_q^{(n)} 提取的事后技能
πθold\pi_{\theta_{\text{old}}}每轮更新开始时被冻结的策略快照(既执行又分析)
πθ\pi_\theta实时的、可训练的策略
Aq,nrlA^{\text{rl}}_{q,n}轨迹 nn 的组内相对(GRPO)优势值
skill,θ\ell^{\text{skill}}, \ell^{\theta}同一个已采样 token 在教师(技能增强)与学生(普通)上下文下的对数概率
Δ\Delta停梯度的对数概率变化量 skillθ\ell^{\text{skill}} - \ell^{\theta}
g=σ(βopdΔ)g = \sigma(\beta_{\text{opd}} \Delta)置信度门控,一个 (0,1)(0,1) 区间内的软权重
βopd\beta_{\text{opd}}门控锐度超参数(论文中为 5.0)
λopd\lambda_{\text{opd}}联合目标里 OPD 损失的系数(论文中为 0.01)
dk(c)d_k(c)策略 πk\pi_k 诱导出的 token-上下文占据分布
wk(c,v)w_k(c,v)在上下文 cc 下 token vv 的条件期望门控
Zk(c)Z_k(c)归一化常数 vπk(vc)wk(c,v)\sum_v \pi_k(v\mid c) w_k(c,v)
rk(c)r_k(\cdot\mid c)技能重加权的目标分布,πk(vc)wk(c,v)/Zk(c)\pi_k(v\mid c)w_k(c,v)/Z_k(c)
Qk(c,v)Q_k(c,v)cc 处选择 vv、之后遵循 πk\pi_k 所获得的期望任务回报

PPO 式裁剪:为什么 RL 损失不只是”优势值乘对数概率”

在进入方法部分之前,还有一个值得单独讲清楚的前置知识——它出现在式(RL)里,很容易被一带而过:为什么 RL 损失要用 min(ρA,clip(ρ,1ϵ,1+ϵ)A)\min(\rho A, \text{clip}(\rho, 1-\epsilon, 1+\epsilon) A),而不是简单地用 ρA\rho A,甚至就用 AlogπθA \cdot \log \pi_\theta?概率比 ρq,n,t,(θ)=exp(q,n,t,θq,n,t,old)=πθ(ac)/πθold(ac)\rho_{q,n,t,\ell}(\theta) = \exp(\ell^\theta_{q,n,t,\ell} - \ell^{\text{old}}_{q,n,t,\ell}) = \pi_\theta(a\mid c)/\pi_{\theta_{\text{old}}}(a\mid c) 衡量的是,相对于那个真正生成了这个 token 的冻结策略,当前正在被更新的策略让这个 token 变得更可能(或更不可能)出现了多少。因为 θ\theta 会在一轮外层更新的多个内层优化步骤中不断变化(回忆一下:轨迹和技能都是在单一的、冻结的 θold\theta_{\text{old}} 下一次性生成的,然后针对这批固定数据反复走多步梯度),ρ\rho 原则上可以随着 θ\theta 逐渐偏离 θold\theta_{\text{old}} 而变得任意大或趋近于零——一个不加裁剪的重要性加权目标 ρA\rho \cdot A,就可能让单个巨大的比值主导整个损失,从陈旧的、相对于 θ\theta 已经算是异策略的数据中,诱发一次破坏性的巨大策略更新。clip(ρ,1ϵclip,1+ϵclip)\text{clip}(\rho, 1-\epsilon_{\text{clip}}, 1+\epsilon_{\text{clip}}) 里的裁剪操作,限制了单个 token 的比值能拿到多少信用(或责怪):一旦 ρ\rho 移出信任区域 [1ϵclip,1+ϵclip][1-\epsilon_{\text{clip}}, 1+\epsilon_{\text{clip}}](论文设置里是 0.2,也就是 ρ[0.8,1.2]\rho \in [0.8, 1.2]),目标函数对 ρ\rho 进一步增大的敏感度就被封顶了,而对裁剪版本和未裁剪版本取 min\min(在优势值为正时),确保了策略不会因为把比值推得更远离信任区域而得到额外奖励——这正是标准的 PPO 信任区域机制,只是在这里被应用到 token 层级,而不是经典 RL 里常见的、针对单一决策的每个时间步层级,因为在这个建模里,LLM 生成动作里的每一个 token 都算一个”决策”。

深入理解:为什么结果导向式 RL 会”没话可说”

在深入方法部分之前,值得先驻足看看命题 2 的”打平奖励”场景,因为这是最锋利、最具体的一个例子,说明 SEED 的设计不只是为了增加监督而增加监督,而是精准针对一个可以严格证明存在的盲区。设想一个 rollout 组,里面全部 NN 条采样轨迹恰好都成功了(这在训练收敛到一定程度之后是非常常见的情形——比如 ALFWorld 成功率超过 80-90% 之后,大多数 rollout 组都是”全部成功”)。这时,组内每一个 R(τq(n))R(\tau_q^{(n)}) 都相同,所以 μq\mu_q 等于每一个单独的结果,R(τq(n))μq=0R(\tau_q^{(n)}) - \mu_q = 0 对每个 nn 都成立,式(RL-Adv)里的优势值 Aq,nrlA^{\text{rl}}_{q,n} 对组内每条轨迹里的每一个 token 都恰好为零。由此构建的裁剪式 PPO 代理损失因此贡献了恰好为零的梯度——GRPO 对于”这些(同样成功的)轨迹里哪一条走了更高效的路径”,“一条成功轨迹内部,哪些具体动作才是真正的好决策、哪些只是碰巧没有导致翻车的、多余而浪费的绕路”,已经无话可说了。

我用一个小的 Python 脚本对此做了数值验证(详见下文”公式推导”部分),结果和代数推导所暗示的一样彻底:两条轨迹的奖励都是 R=1.0R=1.0,组内均值是 1.01.0,两者偏离均值的量都是 0.00.0,得到的优势值向量恰好是 [0.0, 0.0]——这是一个字面意义上的零,不是一个很小的数字。而 SEED 的 OPD 损失,在同样的场景下,其梯度(在一个自然的逆策略加权度量下)的平方范数恰好等于 Var[w_k(c,·)]——即事后技能门控值在候选 token 之间的方差——只要这条事后技能真的能区分至少两个候选延续,这个值就非零。这正是”SEED 即便在稀疏或打平的奖励下也能提供稠密信用分配”这句话背后的数学内容,也正是论文消融实验里”自我进化 OPD”在已经有事后技能 SFT 的基础之上,依然能贡献 4.8 分独立增益的原因所在。

方法:SEED 的训练流水线

SEED 在选定的骨干模型(论文实验里用的是 Qwen2.5-3B/7B-Instruct 或 Qwen3-1.7B-Instruct)之上运行两个先后进行的训练阶段,并且执行者和分析者两个角色全程共享同一套权重。下图(以及我自己绘制的数据流图)展示了整体流水线。

flowchart TB
    subgraph Stage1["阶段一:事后技能 SFT(一次性)"]
        A1["离线轨迹采集:<br/>基础策略 x K0=8 条轨迹/任务"] --> A2["外部分析器(GLM-5.2)<br/>为每条轨迹标注事后技能"]
        A2 --> A3["格式校验后的(轨迹,技能)对"]
        A3 --> A4["标准 NLL 微调:<br/>从轨迹预测技能文本"]
        A4 --> A5["theta_sft 检查点"]
    end

图 A1(自绘,数据流概览,共两张中的第 1 张):SEED 流水线的阶段一,在 RL 开始之前只运行一次,给模型一个初始的轨迹分析能力。

flowchart TB
    A5["theta_sft 检查点"] --> B0
    subgraph Stage2["阶段二:自我进化同策略蒸馏(每轮更新)"]
        B0["冻结当前策略为 theta_old"] --> B1["每个任务采样 N 条轨迹<br/>(theta_old 执行)"]
        B1 --> B2["计算组内相对优势值 A_rl<br/>(GRPO 项)"]
        B1 --> B3["同一个 theta_old,分析者角色:<br/>提取每条轨迹的事后技能"]
        B3 --> B4["把技能插入历史:<br/>技能增强上下文 h~"]
        B4 --> B5["对同一批已采样 token 重新打分:<br/>教师 log pi(a|h~) vs 学生 log pi(a|h)"]
        B5 --> B6["置信度门控 g = sigmoid(beta * Delta)<br/>Delta = 停梯度(教师 - 学生)"]
        B2 --> B7["L_RL(裁剪 GRPO + KL)"]
        B6 --> B8["L_OPD(门控加权 NLL,仅学生分支)"]
        B7 --> B9["L_SEED = L_RL + lambda * L_OPD"]
        B8 --> B9
        B9 --> B10["梯度更新: theta 被更新"]
        B10 -->|"变成下一轮的 theta_old"| B0
    end

图 A2(自绘,数据流概览,共两张中的第 2 张):SEED 流水线的阶段二,真正的 RL 循环,模型在其中同时扮演执行者角色(采集轨迹)和分析者角色(为其标注技能),由此产生的事后技能条件化重打分,驱动一个与 GRPO 联合训练的辅助蒸馏损失。

图 1(论文图 2):SEED 总体架构,展示阶段一(事后技能 SFT)和阶段二(自我进化的同策略蒸馏),后者构成一个共享模型同时扮演执行者与分析者的自我进化循环

形式化的问题设定

论文的形式化设定和上文”前置知识”部分介绍的完全一致:POMDP (S,A,O,T,Ω,R,γ)(\mathcal{S}, \mathcal{A}, \mathcal{O}, \mathcal{T}, \Omega, \mathcal{R}, \gamma),交互历史 ht=(o0,a0,,ot)h_t = (o_0, a_0, \dots, o_t),策略 atπθ(ht)a_t \sim \pi_\theta(\cdot \mid h_t),完整轨迹 τ={(ot,at,rt)}t=0T1\tau = \{(o_t, a_t, r_t)\}_{t=0}^{T-1},episode 级结果 R(τ)R(\tau),标准 RL 目标 J(θ)=Eτπθ[R(τ)]J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}[R(\tau)]。整篇论文的贡献可以概括为:继续像原来一样通过 GRPO 优化 J(θ)J(\theta),但额外加上一个仅在训练时存在的辅助信号,它源自对已完成轨迹的事后分析,在 J(θ)J(\theta) 的轨迹级梯度缺乏信息的那些 token 和情形里,依然能提供梯度。

阶段一:事后技能监督微调,逐步展开

阶段一的目标很窄、也很机械:在这种能力被用作阶段二的实时训练信号之前,先让基础策略具备读取一条已完成轨迹、并产出有用的自然语言事后技能的能力。

  1. 离线轨迹采集。 对每一个从 M=180M=180 个采样训练任务中选出的任务 qjq_j,用基础(尚未微调)策略 πθbase\pi_{\theta_{\text{base}}} 独立跑 K0=8K_0=8 次 rollout:Bj={τj,k}k=1K0\mathcal{B}_j = \{\tau_{j,k}\}_{k=1}^{K_0},τj,kπθbase(qj)\tau_{j,k} \sim \pi_{\theta_{\text{base}}}(\cdot \mid q_j)。把所有任务的结果汇总起来得到 B=j=1MBj\mathcal{B} = \bigcup_{j=1}^M \mathcal{B}_j——共 1,440 条已完成轨迹(180 个任务 × 8 次 rollout)。为什么专门用未经改造的基础策略来采集这些轨迹:这一阶段的 SFT 数据必须反映普通(未经修改)的智能体-环境交互,因为最终生成的检查点将用于初始化 RL 策略——如果训练它去分析被人为增强过的轨迹,就会和它在 RL 阶段实际看到的普通 rollout 之间产生错位。
  2. 事后技能标注。 每条已完成轨迹 τ\tau 都被送给一个外部分析器 Aext\mathcal{A}_{\text{ext}}(论文使用 GLM-5.2,温度为 0,最大 4,096 token),生成一条技能标注 sτ=Aext(τ)s_\tau = \mathcal{A}_{\text{ext}}(\tau)。对于一条成功轨迹,sτs_\tau 通常捕捉一个可复用的工作流程(论文附录表 4 中的真实例子:“首先定位目标物体,然后把它带到清洁站,清洁它,再把它移动到目标位置”)。对于一条失败轨迹,sτs_\tau 捕捉一条纠正性或规避性的规则(“在核实库存和所需物体状态之前,不要把物体移动到目标位置”)。为什么在这一阶段专门用一个更强的外部分析器,而不是让基础策略自己来做:在这个早期阶段,基础策略还没有产出连贯事后分析的经验积累,所以用一个更强的外部模型来引导(而不是让模型自己没有经过训练地瞎猜),能为 SFT 步骤提供更干净的初始训练信号。
  3. 格式校验。 每条标注都会得到一个有效性指示器 vτ{0,1}v_\tau \in \{0,1\}(格式是否正确),只有有效的对才会进入被接受的 SFT 集合:Dsft={(xτ,sτ):τB,vτ=1}\mathcal{D}_{\text{sft}} = \{(x_\tau, s_\tau) : \tau \in \mathcal{B}, v_\tau = 1\},其中 xτx_\tau 是序列化的轨迹-分析输入(完整的轨迹记录,格式化成一个要求模型产出事后技能的提示词)。
  4. 监督微调。 基础策略在被接受的对上,用标准的自回归负对数似然目标进行微调: Lsft(θ)=E(xτ,sτ)Dsft[=1sτlogπθ(sτ,xτ,sτ,<)].(SFT)\mathcal{L}_{\text{sft}}(\theta) = -\mathbb{E}_{(x_\tau,s_\tau)\sim\mathcal{D}_{\text{sft}}} \left[ \sum_{\ell=1}^{|s_\tau|} \log \pi_\theta(s_{\tau,\ell} \mid x_\tau, s_{\tau,<\ell}) \right]. \tag{SFT} 这和训练任何一个指令跟随模型所用的目标完全一样——唯一特别的地方在于被教去预测的内容:给定一段完整的轨迹记录作为输入,输出一段事后技能字符串作为”回复”。在 Dsft\mathcal{D}_{\text{sft}} 上训练三个 epoch,得到 θsft\theta_{\text{sft}},它同时用于初始化 RL 策略,以及初始化阶段二中(现在已经是内部的、不再是外部的)轨迹分析器。

如果没有这一阶段会发生什么(依照条款 15 要求的”如果不这样做”的问题):如果跳过阶段一,直接让未经微调的基础模型在 RL 过程中分析自己的轨迹,从训练一开始就很可能产出质量低下、格式不佳、或者毫无帮助的技能标注——表 2 的消融结果证实了这不是一个次要的效应:去掉事后技能 SFT 把 ALFWorld 的平均值从 91.8 拉低到 86.0,真实损失 5.8 分,证明”给执行者和分析者装备一个初始的轨迹分析能力,为后续的自我进化训练过程提供了重要基础”,这也是论文原文的用词。

阶段二:自我进化同策略蒸馏,逐步展开

这里才是给这篇论文命名的那个训练信号真正被构造出来的地方。在每一轮策略更新开始时,当前策略被冻结为 πθold\pi_{\theta_{\text{old}}},这个单一的冻结快照同时扮演两个角色:它采集新的轨迹(“执行者”),它也把这些同样已完成的轨迹分析成事后技能(“分析者”)。这种双重角色共享正是”自我进化”这个特性的机制基础。

  1. 同策略轨迹采样。 对当前批次中的每个任务提示 qq,从冻结策略中采样一组 N=8N=8 条轨迹:Gq={τq(1),,τq(N)}\mathcal{G}_q = \{\tau_q^{(1)}, \dots, \tau_q^{(N)}\},τq(n)πθold(q)\tau_q^{(n)} \sim \pi_{\theta_{\text{old}}}(\cdot \mid q)
  2. 组内相对优势值(RL 那一半)。 和普通的 GRPO 完全一样:从组内结果计算 μq,σq\mu_q, \sigma_q,按上文式(RL-Adv)推导出 Aq,nrlA^{\text{rl}}_{q,n}。目标函数的这一半没有任何新东西是 SEED 独有的。
  3. 同策略事后技能生成(分析者那一半)。 对每条已完成轨迹 τq(n)\tau_q^{(n)},构造它的轨迹-分析输入 xτq(n)x_{\tau_q^{(n)}},把它送给同一个检查点的分析者角色:sq(n)=Aθold(xτq(n))s_q^{(n)} = \mathcal{A}_{\theta_{\text{old}}}(x_{\tau_q^{(n)}})。关键在于,Aθold\mathcal{A}_{\theta_{\text{old}}} 使用的正是恰好刚刚产生了 τq(n)\tau_q^{(n)} 的那一套参数 θold\theta_{\text{old}}——没有单独的分析器网络,也没有分析器检查点的滞后。
  4. 技能增强重打分。HH 是一个确定性函数,把一条事后技能拼接进一段交互历史,同时不触碰已经采样出的动作 token(也就是说,它只修改上下文,不修改被打分的那个序列本身)。在时间步 tt,定义技能增强历史 h~q,n,t=H(hq,n,t,sq(n))\tilde h_{q,n,t} = H(h_{q,n,t}, s_q^{(n)})同一个当前、可训练的策略 πθ\pi_\theta,对完全相同的已采样动作 token aq,n,t=(aq,n,t,1,,aq,n,t,Lq,n,t)a_{q,n,t} = (a_{q,n,t,1}, \dots, a_{q,n,t,L_{q,n,t}}) 计算两个对数概率: q,n,t,skill=logπθ(aq,n,t,h~q,n,t,aq,n,t,<)(教师分支)(Teacher)\ell^{\text{skill}}_{q,n,t,\ell} = \log \pi_\theta(a_{q,n,t,\ell} \mid \tilde h_{q,n,t}, a_{q,n,t,<\ell}) \qquad \text{(教师分支)} \tag{Teacher} q,n,t,θ=logπθ(aq,n,t,hq,n,t,aq,n,t,<)(学生分支).(Student)\ell^{\theta}_{q,n,t,\ell} = \log \pi_\theta(a_{q,n,t,\ell} \mid h_{q,n,t}, a_{q,n,t,<\ell}) \qquad \text{(学生分支)}. \tag{Student} 为什么重打分完全相同的 token,而不是让两个分支各自独立生成:这正是让”教师”和”学生”能够是同一套权重、而又不至于坍缩成一个平凡恒等式的全部诀窍所在。因为 token aq,n,t,a_{q,n,t,\ell} 是固定的(在普通的、学生上下文下采集轨迹时已经采样出来了),问”如果这条事后技能当时是可见的,这个具体的 token 本来会有多大概率被采样出来”,是一个良定义、有实际意义的反事实问题——即便两个对数概率都来自同一个参数向量 θ\theta
  5. 置信度门控。 定义停梯度的对数概率变化量 Δq,n,t,=sg[q,n,t,skillq,n,t,θ]\Delta_{q,n,t,\ell} = \text{sg}[\ell^{\text{skill}}_{q,n,t,\ell} - \ell^{\theta}_{q,n,t,\ell}],以及门控 gq,n,t,=σ(βopdΔq,n,t,)g_{q,n,t,\ell} = \sigma(\beta_{\text{opd}} \Delta_{q,n,t,\ell}),与”前置知识”部分描述的完全一致。教师对数概率和门控都被停梯度处理——梯度只会流经学生分支 θ\ell^\theta
  6. OPD 损失(式 1): Lopd(θ)=Eq,n,t,[mq,n,t,gq,n,t,sg[q,n,t,skillq,n,t,θ]].(1)\mathcal{L}_{\text{opd}}(\theta) = \mathbb{E}_{q,n,t,\ell}\Big[ m_{q,n,t,\ell} \cdot g_{q,n,t,\ell} \cdot \text{sg}\big[\ell^{\text{skill}}_{q,n,t,\ell} - \ell^{\theta}_{q,n,t,\ell}\big] \Big]. \tag{1} 因为门控和教师对数概率都被停梯度处理,求导得到 θLopd=Eq,n,t,[mq,n,t,gq,n,t,θq,n,t,θ],\nabla_\theta \mathcal{L}_{\text{opd}} = -\mathbb{E}_{q,n,t,\ell}\Big[ m_{q,n,t,\ell} \cdot g_{q,n,t,\ell} \cdot \nabla_\theta \ell^{\theta}_{q,n,t,\ell} \Big], 这恰好是一个门控加权的负对数似然梯度:最小化这个损失,会提高每个已采样 token 在普通(学生上下文)下的对数概率,加权系数正是事后技能对这个 token 支持的强度。被技能强烈背书的 token(g1g \approx 1)会被大力向上推;被技能反对的 token(g0g \approx 0)几乎不动。
  7. 联合目标。 RL 损失遵循标准的、带 KL 项的裁剪式 PPO 形式,使用逐 token 概率比 ρq,n,t,(θ)=exp(q,n,t,θq,n,t,old)\rho_{q,n,t,\ell}(\theta) = \exp(\ell^\theta_{q,n,t,\ell} - \ell^{\text{old}}_{q,n,t,\ell}): Lrl(θ)=Eq,n,t,[min(ρq,n,t,(θ)Aq,n,t,rl, clip(ρq,n,t,(θ),1ϵclip,1+ϵclip)Aq,n,t,rl)]+βKLDKL,(RL)\mathcal{L}_{\text{rl}}(\theta) = -\mathbb{E}_{q,n,t,\ell}\Big[\min\big(\rho_{q,n,t,\ell}(\theta) A^{\text{rl}}_{q,n,t,\ell},\ \text{clip}(\rho_{q,n,t,\ell}(\theta), 1-\epsilon_{\text{clip}}, 1+\epsilon_{\text{clip}}) A^{\text{rl}}_{q,n,t,\ell}\big)\Big] + \beta_{\text{KL}} D_{\text{KL}}, \tag{RL} 最终训练目标是 LSEED(θ)=Lrl(θ)+λopdLopd(θ),(SEED)\mathcal{L}_{\text{SEED}}(\theta) = \mathcal{L}_{\text{rl}}(\theta) + \lambda_{\text{opd}} \mathcal{L}_{\text{opd}}(\theta), \tag{SEED} 论文实验中 λopd=0.01\lambda_{\text{opd}} = 0.01——是一个刻意选得很小的系数,因为辅助损失的任务是把策略往事后技能背书的 token 方向轻轻推一下,而不是主导整个结果驱动的 RL 信号。梯度更新之后,更新后的 πθ\pi_\theta 变成下一轮迭代的 πθold\pi_{\theta_{\text{old}}},闭合了这个自我进化的循环:下一轮负责生成轨迹的执行者、以及负责解读这些轨迹的分析者,都是刚刚从这一轮的事后经验中学习过的那个版本的模型。
  8. 部署。 在推理时,智能体只从普通历史行动,atπθ(ht)a_t \sim \pi_\theta(\cdot \mid h_t)——没有分析器,没有技能库,没有增强提示词。所有的事后技能相关机制,都只是训练时的脚手架。

更仔细看一看格式校验这一步,以及它为什么重要

阶段一的第 3 步(格式校验,产出有效性指示器 vτv_\tau)很容易被当作一个次要的数据清理细节一带而过,但它值得多停留一会儿,因为它暗示了这条流水线要承担多大的质量控制负担。因为阶段一的 SFT 数据来自一个外部分析器(GLM-5.2)生成的自由形式自然语言文本,没有任何保证能确保每一条生成的技能都格式良好、范围恰当,甚至非空——这个外部模型可能对 1,440 条离线轨迹中的某一部分,产出过长、被截断(如果碰到 4,096-token 上限)、格式错误或者跑题的文本。有效性指示器 vτ{0,1}v_\tau \in \{0, 1\} 会在这些内容进入 Dsft\mathcal{D}_{\text{sft}} 之前把它们过滤掉,但论文没有报告 1,440 条生成标注里究竟有多大比例真的没通过这道检查,也没有说明具体的校验标准是什么(除了”格式正确”这个笼统说法)——一个过滤步骤如果没有报告接受率,就是一个虽小但真实的可复现性缺口,因为一个很低的接受率意味着实际可用的 SFT 数据集,会比名义上的 1,440 条轨迹池小得多,而一个很高的接受率则暗示这道检查很大程度上只是走个形式。这两个数字论文都没有给出。

阶段二逐轮循环里的同策略技能生成(每轮循环的第 3 步,sq(n)=Aθold(xτq(n))s_q^{(n)} = \mathcal{A}_{\theta_{\text{old}}}(x_{\tau_q^{(n)}})),看起来并没有重新应用这道同样的有效性检查——论文的算法 1 显示技能被生成之后立即用来构造技能增强上下文 h~q,n,t\tilde h_{q,n,t}(第 13 行),没有任何看得见的、类似阶段一 vτv_\tau 那样的过滤步骤。从某种意义上说,这是一个合理的设计选择(阶段二的 OPD 损失内在地具有自我纠正能力:如果一条格式很差的技能没能产生有意义的对数概率变化,由此得到的门控 gσ(0)=0.5g \approx \sigma(0) = 0.5,只会贡献一个温和的、接近中性的轻推,而不会主动破坏训练),但这也确实意味着,论文没有提供任何直接证据,说明阶段二的同策略分析器(记住,它是从阶段一 SFT 检查点起步、并随着 150 轮更新不断演化的)在实际训练中生成格式不良或退化技能的频率有多高,也没有说明它随着自身逐渐远离阶段一 SFT 初始化,输出格式的可靠性到底能维持得多好。

完整算法,逐行解读

论文附录 B.3 中的算法 1,连同对每个代码块作用与顺序理由的注释,复现如下。

算法 1: SEED(自我进化的同策略蒸馏)
输入: SFT 初始化的策略 π_θsft,任务集合 Q,上下文函数 H,
      组大小 N,门控锐度 β_opd,KL 系数 β_KL,
      OPD 系数 λ_opd,裁剪范围 ε_clip,学习率 η
输出: 训练完成的策略 π_θ

 1: θ ← θ_sft                              // 从阶段一检查点开始
 2: for 每次策略更新 do
 3:     θ_old ← θ                          // 冻结当前策略:这个单一
                                            // 快照下面将同时执行 AND 分析
 4:     采样任务批次 B ⊂ Q
 5:     // ---- 同策略经验 + 同步的技能分析 ----
 6:     for 每个任务 q ∈ B do
 7:         采样 G_q = {τ_q^(n)}_{n=1..N},τ_q^(n) ~ π_θold(·|q)
                                            // theta_old 的执行者角色
 8:         从 {R(τ_q^(n))} 计算 μ_q, σ_q
 9:         for G_q 中每条轨迹 τ_q^(n) do
10:             A_rl[q,n] ← (R(τ_q^(n)) - μ_q) / (σ_q + ε)
                                            // 标准 GRPO 优势值
11:             s_q^(n) ← A_θold(x_τq(n))  // theta_old 的分析者角色 --
                                            // 同一个检查点,不同的"帽子"
12:             for τ_q^(n) 中每个动作步 t do
13:                 h~[q,n,t] ← H(h[q,n,t], s_q^(n))
                                            // 把技能拼接进历史
14:                 缓存 ℓ_old[q,n,t,ℓ]     // 重要性比参考值,
                                            // 针对所有有效采样 token
15:             end for
16:         end for
17:     end for
18:     // ---- 配对上下文重打分 + 联合优化 ----
19:     for 每个有效采样 token 的小批次 do
20:         用当前 π_θ 评估 ℓ_skill[q,n,t,ℓ] 与 ℓ_θ[q,n,t,ℓ]
                                            // 教师分支(技能上下文)
                                            // 学生分支(普通上下文)
21:         Δ[q,n,t,ℓ] ← stopgrad(ℓ_skill - ℓ_θ)
22:         g[q,n,t,ℓ] ← sigmoid(β_opd · Δ) // 置信度门控,同样被停梯度
23:         ρ[q,n,t,ℓ](θ) ← exp(ℓ_θ - ℓ_old)
                                            // 逐 token 的 PPO 重要性比
24:         用 ρ, A_rl, ε_clip 计算裁剪 GRPO 损失 L_rl
25:         L_opd ← E[ mask · g · stopgrad(ℓ_skill - ℓ_θ) ]
                                            // 梯度只经由 ℓ_θ 流动
26:         L_SEED ← L_rl + λ_opd · L_opd
27:         θ ← θ - η ∇_θ L_SEED
28:     end for
29: end for                                 // theta_old 在下一轮被刷新为
                                             // 新的 theta -> 自我进化循环

有两个结构性要点值得单独强调。第一,第 3-17 行全部发生在冻结的 θold\theta_{\text{old}} 之下——这是”数据生成”阶段,也正是轨迹和用来解读它们的技能,同时由同一个、暂时被固定住的模型产生的地方。第二,第 19-28 行是可训练θ\theta,在一个外层轮次的内层优化步骤中,与 θold\theta_{\text{old}} 逐渐分离的地方——第 20 行的重打分使用实时更新的 πθ\pi_\theta,而第 23 行的重要性比,仍然引用数据生成时刻冻结下来的 old\ell_{\text{old}}。这种”冻结采集,然后优化”的两阶段结构,恰好就是标准的 PPO/GRPO 做法,只是在这里被扩展为不只冻结采集轨迹,同时也冻结采集事后技能。

一个完整的 SEED 更新回合的数值走查

在进入形式化命题之前,不妨先把整套机制放到一个小而具体的例子上完整走一遍——不是上文讨论过的打平奖励边界情形,而是”正常”的运行状态,此时 GRPO 本身已经有一些信号,这样才能看出 OPD 的贡献到底在性质上有什么不同,而不只是在程度上有什么不同。

设定。 一个任务的 rollout 组里有 2 条轨迹:轨迹 1 成功(R=1R=1),采取了三个动作 [good, good, good];轨迹 2 失败(R=0R=0),采取了三个动作 [good, bad, bad]——注意轨迹 2 的第一个动作其实是没问题的,只有第二、第三个动作才是真正的错误。这正是论文引言用散文描述的那种情形(“一条失败的轨迹可能包含有用的局部行为,只是因为几个局部错误而失败”)。

GRPO 的视角。 组内均值 μ=0.5\mu = 0.5,标准差 σ=0.5\sigma = 0.5,给出 Arl=[+1.0,1.0]A^{\text{rl}} = [+1.0, -1.0](忽略 ϵ\epsilon 项)。轨迹 1 的优势值(+1.0+1.0)被广播给它全部三步;轨迹 2 的优势值(1.0-1.0)同样被广播给全部三步——包括第一步,而第一步其实是一个相当合理的动作。GRPO 没有办法单独指出,轨迹 2 的问题具体出在第二、三步,而不是第一步。

SEED 通过轨迹 2 的事后技能带来的额外视角。 假设分析器审视完这条完整的失败轨迹后,提取出这样一条技能:“第一步动作没有问题,但在第一次犯错之后重复选择第二种做法,会让失败雪上加霜——不要连续两次选择同一个错误动作。“我为轨迹 2 中三个已采样动作构造了玩具学生(普通上下文)和教师(技能增强上下文)对数概率,选取时特意反映这条技能的可能效果(通过直接的 sigmoid 计算验证,不是凭空断言):

步骤动作学生对数概率 θ\ell^\theta教师对数概率 skill\ell^{\text{skill}}Δ\Delta门控 g=σ(5Δ)g=\sigma(5\Delta)
1good0.350-0.3500.330-0.330+0.020+0.0200.52500.5250
2bad0.900-0.9001.400-1.4000.500-0.5000.07590.0759
3bad1.100-1.1002.600-2.6001.500-1.5000.00060.0006

如何解读这张表。 第一步的门控(0.5250.525)几乎恰好落在中性中点 0.50.5——事后技能对这个动作基本没有意见,这和它本来就是一个合理选择、不需要被纠正是一致的。第二、三步的门控都很低(0.0760.0760.00060.0006)——技能主动劝阻这两个被采样出的 bad 动作,而且对第三步的劝阻远比第二步强烈,恰好和技能本身的内容吻合(“避免重复犯错”暗示第二次出现的错误选择比第一次更糟)。因为 OPD 梯度(按式 10 那种推理)会按门控值的比例把普通策略的对数概率往推,第一步几乎不受辅助损失影响地被推高(门控 0.5\approx 0.5,接近中性的加权),而第二、三步的(负向、劝阻性的)GRPO 信号则基本不受辅助项抵消,因为很低的门控意味着 OPD 损失对这些具体 token 只贡献很小的向上压力,不足以对抗 GRPO 的向下压力。换句话说:GRPO 单独作用时会同等程度地抑制轨迹 2 里的全部三个动作;加上 SEED 的门控 OPD 项之后,第二、三步的抑制基本原封不动地保留,而第一步的抑制被部分抵消——这正是单个标量优势值无法提供的那种细粒度、轨迹内部的修正。这是一个作者自建的小型示意例子(不是从论文自身日志复现的),但它用真实的数字具体展示了论文只用散文描述过的这个定性机制。

公式推导:三个命题到底证明了什么

论文附录 A 给出了三个形式化命题,分别对应引言中提出的三个设计要求(同策略、稠密、自我进化)。我在下面重新推导并数值验证了每一条,因为论文的证明是正确的但相当简练,而”在打平的奖励下梯度可以严格证明非零”这类论断,恰恰值得独立数值验证,而不是照单全收。

命题 1:OPD 更新是占据匹配的 KL 蒸馏

设定。 固定某个外层迭代 kk,行为策略为 πk=πθk\pi_k = \pi_{\theta_k},分析器为 Ak\mathcal{A}_k。设 cc 表示某个有效动作-token 位置的普通上下文,dk(c)d_k(c) 是由 πk\pi_k 和环境共同诱导出的 token-上下文占据分布,Yπk(c)Y \sim \pi_k(\cdot \mid c) 是实际采样出的 token。轨迹完成之后,分析器产出技能 S=Ak(xτ)S = \mathcal{A}_k(x_\tau),停梯度门控为 gk(c,v,S)=σ(βopd[logπk(vH(c,S))logπk(vc)])g_k(c, v, S) = \sigma(\beta_{\text{opd}}[\log \pi_k(v \mid H(c,S)) - \log \pi_k(v \mid c)])。定义条件期望门控,对未来轨迹和分析器的随机性求边缘化:

wk(c,v)=E[gk(C,Y,S)C=c,Y=v].(3)w_k(c,v) = \mathbb{E}[g_k(C,Y,S) \mid C=c, Y=v]. \tag{3}

命题 1。 定义 Zk(c)=vπk(vc)wk(c,v)Z_k(c) = \sum_{v} \pi_k(v\mid c) w_k(c,v) 以及 rk(vc)=πk(vc)wk(c,v)/Zk(c)r_k(v \mid c) = \pi_k(v\mid c)w_k(c,v)/Z_k(c)。那么 rk(c)r_k(\cdot\mid c) 是一个合法的概率分布,并且

θLopd,k(θ)θ=θk=Ecdk[Zk(c)θDKL(rk(c)πθ(c))θ=θk].(5)\nabla_\theta \mathcal{L}_{\text{opd},k}(\theta)\Big|_{\theta=\theta_k} = \mathbb{E}_{c\sim d_k}\Big[ Z_k(c) \cdot \nabla_\theta D_{\text{KL}}(r_k(\cdot\mid c) \,\|\, \pi_\theta(\cdot\mid c))\Big|_{\theta=\theta_k} \Big]. \tag{5}

逐步推导。θ=θk\theta = \theta_k 处,先对 C=cC=c 条件化,再对 Y=vY=v 条件化,展开 OPD 梯度:因为教师对数概率和门控都被停梯度处理,只有学生对数概率贡献梯度,

θLopd,kθk=Ecdk[vπk(vc)wk(c,v)θlogπθ(vc)θk].\nabla_\theta \mathcal{L}_{\text{opd},k}\Big|_{\theta_k} = -\mathbb{E}_{c\sim d_k}\Big[\sum_v \pi_k(v\mid c)\, w_k(c,v)\, \nabla_\theta \log \pi_\theta(v\mid c)\Big|_{\theta_k}\Big].

πk(vc)wk(c,v)=Zk(c)rk(vc)\pi_k(v\mid c) w_k(c,v) = Z_k(c) r_k(v\mid c)(rkr_k 的定义)代入,得到

=Ecdk[Zk(c)vrk(vc)θlogπθ(vc)θk],= -\mathbb{E}_{c\sim d_k}\Big[ Z_k(c) \sum_v r_k(v\mid c) \nabla_\theta \log \pi_\theta(v\mid c)\Big|_{\theta_k}\Big],

而求和项 vrk(vc)θlogπθ(vc)\sum_v r_k(v\mid c) \nabla_\theta \log \pi_\theta(v\mid c) 正好等于 θDKL(rk(c)πθ(c))-\nabla_\theta D_{\text{KL}}(r_k(\cdot\mid c)\,\|\,\pi_\theta(\cdot\mid c))(符号约定上,停梯度目标 rkr_k 的熵项对 θ\theta 的梯度为零,所以对交叉熵求导和对 KL 散度求导在这里给出相同的结果)。这就证明了式(5)。

这在直白语言下意味着什么。 OPD 更新不是”模仿技能增强教师说的话”——而是”向当前策略自身分布的一个重加权版本做蒸馏,重加权的方式由事后技能相对于平均水平对每个候选 token 的支持强度所决定”。因子 dk(c)d_k(c)(占据分布)确保这个更新只触及当前策略实际访问到的上下文——这是”同策略”的那一半。因子 wk(c,v)w_k(c,v)(技能选择性)确保在每个这样的上下文内部,这个更新会根据事后技能对候选 token 的支持强弱来区分对待。

数值验证(本文作者自建)。 我构造了一个固定上下文下的 4-token 玩具词表,πk=[0.10,0.35,0.40,0.15]\pi_k = [0.10, 0.35, 0.40, 0.15],门控值 wk=[0.20,0.35,0.85,0.70]w_k = [0.20, 0.35, 0.85, 0.70](token 2 被支持得最强,token 0 最弱)。计算 Zk=vπk(v)wk(v)=0.5875Z_k = \sum_v \pi_k(v) w_k(v) = 0.5875,以及 rk=πkwk/Zk=[0.034,0.209,0.579,0.179]r_k = \pi_k \cdot w_k / Z_k = [0.034, 0.209, 0.579, 0.179](验证求和为 1.0),我确认了推导中隐含的单调性论断——rk(v)/πk(v)r_k(v)/\pi_k(v)wk(v)w_k(v) 严格递增——精确成立:按 rk/πkr_k/\pi_k 排序,和直接按 wkw_k 排序,得到完全相同的顺序(两者都是 [2,3,1,0])。接着,我用两种独立方法计算 OPD 损失相对于 logits 的梯度:(a)对损失函数直接做有限差分数值微分;(b)用 softmax 交叉熵恒等式暗含的闭式表达式,z(v)Lopd=πθ(v)Zkπk(v)wk(v)\nabla_{z(v)}\mathcal{L}_{\text{opd}} = \pi_\theta(v)Z_k - \pi_k(v)w_k(v)。两种方法在小数点后 8 位上完全一致(最大绝对差约为 0),确认了:门控值 wk(v)>Zkw_k(v) > Z_k(高于平均支持——我例子中的 token 2 和 3)会得到负梯度(概率质量被向上推);门控值 wk(v)<Zkw_k(v) < Z_k(低于平均支持——token 0 和 1)会得到正梯度(概率质量被向下压)——这恰好就是论文在式 10-11 之后所描述的”尽管门控值全都非负,但仍能给出带符号的相对信用”这一行为。

价值对齐条件(式 8):是什么让 OPD 真正有帮助,而不只是良定义

命题 1 说明 OPD 更新是良定义的占据匹配蒸馏,但它本身并不能说明这个更新一定有帮助。论文的式 8 补上了这个缺失的条件。设 Qk(c,v)Q_k(c,v) 是在上下文 cc 下选择 token vv、随后遵循 πk\pi_k 所获得的期望任务回报。那么

Evrk(c)[Qk(c,v)]Evπk(c)[Qk(c,v)]=Covvπk(c)(Qk(c,v),wk(c,v))Zk(c).(8)\mathbb{E}_{v\sim r_k(\cdot\mid c)}[Q_k(c,v)] - \mathbb{E}_{v\sim \pi_k(\cdot\mid c)}[Q_k(c,v)] = \frac{\text{Cov}_{v\sim\pi_k(\cdot\mid c)}(Q_k(c,v), w_k(c,v))}{Z_k(c)}. \tag{8}

怎么读这个等式:左边是”重加权目标的期望值,比原始策略的期望值好多少”——正是你希望它为正的那个量,如果你希望 OPD 更新是有帮助而不是有害的话。右边说这个量等于一个协方差,除以(恒正的)归一化常数 Zk(c)Z_k(c):只要事后技能门控 wk(c,v)w_k(c,v) 与真实动作价值 Qk(c,v)Q_k(c,v)(在候选 token 之间、按当前策略加权)呈正相关,协方差就是正的,重加权目标就确实比未加权的策略拥有更高的期望值。这是整个方法实际成功所依赖的条件,而它明确地不是自动成立的——它取决于分析器产出的事后技能,是否真的与真正好的决策相关,而不只是听起来合理、实际上却没有信息量的文本。

我用同样的 4-token 玩具设定数值验证了这个恒等式,额外添加了一个玩具”价值”向量 Qk=[0.10,0.30,0.90,0.60]Q_k = [0.10, 0.30, 0.90, 0.60](刻意选得使价值最高的 token,索引 2,也恰好拥有最高的门控值,同样是索引 2——一个偏向有利的情形)。直接计算给出 Erk[Q]Eπk[Q]=0.1290\mathbb{E}_{r_k}[Q] - \mathbb{E}_{\pi_k}[Q] = 0.1290,而基于协方差的右边,Covπk(Q,w)/Zk\text{Cov}_{\pi_k}(Q,w)/Z_k,给出完全相同的 0.12900.1290——精确确认了这个代数恒等式,也具体说明了为什么让 wkw_kQkQ_k 对齐(即让分析器的背书真正跟踪真实决策质量)是论文每一个实证结果背后的承重假设。

命题 2:即使每条轨迹全都打平,稠密信号依然存在

这正是我在上文定性讨论过的那个命题;下面是它的确切陈述和我的数值确认。设定。 考虑一个 rollout 组,组内每条轨迹的结果都相同,所以对每一个有效 token,Aq,n,t,rl=0A^{\text{rl}}_{q,n,t,\ell} = 0(可以严格证明 RL 梯度为零)。在固定上下文 cc 下,把普通学生分布参数化为 pz(c)=softmax(z(c))p_z(\cdot\mid c) = \text{softmax}(z(c)),定义条件期望 OPD 损失(略去停梯度常数):

Lopd,k,c(z)=vπk(vc)wk(c,v)logpz(vc).(9)\mathcal{L}_{\text{opd},k,c}(z) = -\sum_v \pi_k(v\mid c)\, w_k(c,v)\, \log p_z(v\mid c). \tag{9}

结果。θ=θk\theta = \theta_k 处(即 pz(c)=πk(c)p_z(\cdot\mid c) = \pi_k(\cdot\mid c)),

Lopd,k,cz(c,v)=πk(vc)[Zk(c)wk(c,v)],(10)\frac{\partial \mathcal{L}_{\text{opd},k,c}}{\partial z(c,v)} = \pi_k(v\mid c)\big[Z_k(c) - w_k(c,v)\big], \tag{10}

并且,用逆策略加权平方范数 aπk12=va(v)2/πk(vc)\|a\|^2_{\pi_k^{-1}} = \sum_v a(v)^2/\pi_k(v\mid c),

z(c)Lopd,k,cπk12=Varvπk(c)[wk(c,v)].(11)\big\|\nabla_{z(c)}\mathcal{L}_{\text{opd},k,c}\big\|^2_{\pi_k^{-1}} = \text{Var}_{v\sim\pi_k(\cdot\mid c)}\big[w_k(c,v)\big]. \tag{11}

因此,OPD 梯度非零当且仅当期望事后门控在具有正的当前策略概率的候选 token 之间不是常数——也就是说,恰好在事后技能真正能够在这个上下文中的合理延续之间做出区分的时候。

数值验证(本文作者自建的玩具例子)。 两条轨迹,奖励都是 R=1.0R=1.0。组内均值 μ=1.0\mu = 1.0,组内标准差 σ=0.0\sigma = 0.0,所以 Arl=(Rμ)/(σ+ϵ)=[0.0,0.0]A^{\text{rl}} = (R-\mu)/(\sigma+\epsilon) = [0.0, 0.0]——字面意义上的精确零,确认 RL 梯度贡献为零。同时,复用命题 1 验证中的同一组 πk,wk\pi_k, w_k 玩具向量,Varπk[wk]=0.0642\text{Var}_{\pi_k}[w_k] = 0.0642——如所论,非零。我进一步用数值方式验证了式 11 的精确恒等式:直接从式 10 的闭式梯度计算 z(c)Lopdπk12=v(πk(v)[Zkwk(v)])2/πk(v)\|\nabla_{z(c)}\mathcal{L}_{\text{opd}}\|^2_{\pi_k^{-1}} = \sum_v (\pi_k(v)[Z_k - w_k(v)])^2/\pi_k(v),得到 0.06420.0642,和 Varπk[wk]\text{Var}_{\pi_k}[w_k] 精确吻合。这正是 SEED 在一组全部成功的轨迹内部,区分”局部有用的决策”和”局部有害的决策”的具体机制——恰好是 GRPO 单独作战时确实无话可说的那个区间。

命题 3:刷新分析器,能够对监督陈旧性设定上界

设定。 对于一个从当前轨迹分布 μk\mu_k 中抽取的已完成 token 样本 x=(τ,c,v)x = (\tau, c, v),设 sr(x)=Ar(xτ)s_r(x) = \mathcal{A}_r(x_\tau) 是某个更早迭代 rr 的分析器检查点产出的技能。固定当前策略 πk\pi_k 以做比较,定义 Δk,r(x)=logπk(vH(c,sr(x)))logπk(vc)\Delta_{k,r}(x) = \log\pi_k(v\mid H(c,s_r(x))) - \log\pi_k(v\mid c) 以及 gk,r(x)=σ(βopdΔk,r(x))g_{k,r}(x) = \sigma(\beta_{\text{opd}}\Delta_{k,r}(x))——也就是说,如果是一个更早的分析器 Ar\mathcal{A}_r(而非当前的 Ak\mathcal{A}_k)产出了这条技能,门控本应该是什么样子。定义由此产生的期望辅助梯度 Uk(Ar;θ)=Exμk[gk,r(x)θlogπθ(vc)]U_k(\mathcal{A}_r;\theta) = -\mathbb{E}_{x\sim\mu_k}[g_{k,r}(x)\nabla_\theta \log\pi_\theta(v\mid c)]

结果(式 14)。 假设 θlogπθ(vc)2G\|\nabla_\theta \log\pi_\theta(v\mid c)\|_2 \le G,

Uk(Ak;θ)Uk(Aj;θ)2GExμk[gk,k(x)gk,j(x)]βopdG4Exμk[Δk,k(x)Δk,j(x)].(14)\big\|U_k(\mathcal{A}_k;\theta) - U_k(\mathcal{A}_j;\theta)\big\|_2 \le G\, \mathbb{E}_{x\sim\mu_k}\big[|g_{k,k}(x) - g_{k,j}(x)|\big] \le \frac{\beta_{\text{opd}} G}{4}\, \mathbb{E}_{x\sim\mu_k}\big[|\Delta_{k,k}(x) - \Delta_{k,j}(x)|\big]. \tag{14}

第二个不等式的来源:映射 zσ(βopdz)z \mapsto \sigma(\beta_{\text{opd}} z)βopd/4\beta_{\text{opd}}/4-Lipschitz 的(因为 supzσ(z)=1/4\sup_z \sigma'(z) = 1/4),逐点应用即可。关键在于,使用当前检查点实例化的分析器(即 j=kj=k),会把这整个差异在 rollout-与-分析阶段直接设为精确的零——这正是 SEED 的构造方式所做的事情,所以这个上界形式化解释了为什么自我进化的同步(相对于周期性刷新、或者完全静态的分析器)能够去除一个真实存在的梯度偏置来源,而不只是一个实现上的方便之举。

数值示意(本文作者自建的示例)。 考虑一个单独采样的 token,其普通(学生)对数概率为 logπk(vc)=1.20\log\pi_k(v\mid c) = -1.20。一个当前分析器的技能(由 Ak\mathcal{A}_k 产生,匹配执行者当前的失败模式)对这个 token 给出了强烈的背书,技能增强对数概率为 0.40-0.40,所以 Δk,k=0.80\Delta_{k,k} = 0.80。一个来自更早训练检查点的陈旧分析器,还没有学会识别这个特定的失败/成功模式,对同一个 token 给出了较弱的背书,0.90-0.90,所以 Δk,j=0.30\Delta_{k,j} = 0.30。取 βopd=5.0\beta_{\text{opd}}=5.0:gk,k=σ(5.0×0.80)=0.9820g_{k,k} = \sigma(5.0 \times 0.80) = 0.9820,gk,j=σ(5.0×0.30)=0.8176g_{k,j} = \sigma(5.0\times 0.30) = 0.8176,门控差异为 gk,kgk,j=0.1644|g_{k,k}-g_{k,j}| = 0.1644。基于 Lipschitz 的上界给出 (βopd/4)×Δk,kΔk,j=1.25×0.50=0.625(\beta_{\text{opd}}/4)\times|\Delta_{k,k}-\Delta_{k,j}| = 1.25 \times 0.50 = 0.625——远远高于实际的 0.16440.1644 差异,证实了上界成立(既然这是一个已证明的不等式,它当然必须成立),同时也说明这个上界在此例中并不紧——这一点论文自身并未讨论(见下文批判性分析)。这个例子纯属示意:在实际的 SEED 算法中,jj 从未被使用——分析器始终是当前检查点,这正是设计使然,目的就是让这一项永远不需要被付出。

把置信度门控和经典的温度蒸馏联系起来

从经典知识蒸馏背景过来的读者,可能会好奇 SEED 的置信度门控和 Hinton 等人原始知识蒸馏论文里更熟悉的温度缩放软标签蒸馏有什么关系。在经典蒸馏里,教师的输出分布用一个温度 TT 软化:pteacher(v)exp(zteacher(v)/T)p_{\text{teacher}}(v) \propto \exp(z_{\text{teacher}}(v)/T),学生被训练去匹配这个软化后的分布,通过在整个词表、每一个生成位置上的 KL 或交叉熵损失来实现,不涉及任何”教师输出有多自信”的概念——不管教师有多不确定,每一个教师概率都以同等地位贡献一个软目标。

SEED 在三个具体方面偏离了这幅经典图景,每一点都值得明确点出来。第一,SEED 从不蒸馏教师在整个词表上的完整分布,而只监督那个已经被采样出来的单一 token aq,n,t,a_{q,n,t,\ell}——这是一个采样-token 蒸馏目标(沿袭了此前的同策略蒸馏工作),而不是一次全分布 KL 匹配。第二,SEED 的门控 g=σ(βopdΔ)g = \sigma(\beta_{\text{opd}}\Delta) 并不是用一个固定温度去软化一个本来就很自信的教师,而是作用在同一个模型的两个对数概率之差(教师上下文对学生上下文)上——这是一个本质上不同的量:它衡量的是某一条具体的旁路信息(事后技能)把模型对某个具体 token 的看法改变了多少,而不是模型整体输出分布有多不确定。第三,也是最重要的一点,信息流动的方向相对于经典蒸馏是反过来的:在经典 KD 里,一个固定的、已经训练好的教师把知识传授给一个未经训练(或以不同方式训练)的学生;在 SEED 里,“教师”和”学生”是同一套不断演化的参数,而被传递的”知识”不是预先存在的专业知识,而是一种反事实的自我观察——如果模型被给予了一条它自己生成的、关于自己过往行为的旁路信息(事后技能),它原本会预测出什么。这闭合了一个经典蒸馏在设计上从来不会有的循环:模型在用关于自己轨迹的点评教自己,而不是从一个外部的真值来源学习。

这个区别也说明了为什么 βopd\beta_{\text{opd}} 在这里扮演的角色和经典蒸馏中的温度 TT 不一样。温度 TT 控制的是教师的完整分布在学生看来有多”软”或多”尖锐”,在所有 token 和位置上是统一生效的。而 βopd\beta_{\text{opd}} 控制的是门控本身对”技能是否帮上了忙”这件事区分得有多锐利,针对的是一个已经实现的具体 token——它是关于置信度信号的元参数,而不是关于被匹配的那个分布的元参数。实际操作层面,这意味着调 βopd\beta_{\text{opd}} 回答的是一个和调蒸馏温度不同的问题:它问的是”多小的对数概率变化,应该多快地饱和成强烈的背书或反对”,而不是”我应该把教师的尖锐程度磨平多少”。

一个直接对比表:SEED 与基线方法全景

为了让”到底在和什么做对比,又具体缺失了什么机制”这件事变得具体,下面是论文基线类别的一个精简版本,并标注了每一种方法相对于 SEED 所缺失的具体机制。

方法训练时用技能?测试时用技能?稠密(逐 token)信用?分析器与当前策略同步?
Vanilla否(无后训练)不适用
Skill-Prompt*否(冻结权重)是(提示词)不适用不适用
GRPO否(仅轨迹级)不适用
Skill-GRPO是(在上下文中,影响探索)否(测试时移除)否(仍是轨迹级优势值)不适用(技能是检索得到的,非分析器产出)
Skill-GRPO*是(保留提示词)不适用
OPSD是(特权上下文)非技能形式;通用特权上下文
GRPO+OPSD非技能形式
Skill-SD是(检索得到的技能)否(从库中检索,非自我分析)
RLSD是(特权自教师)部分(调节 GRPO 幅度而非符号)训练中逐渐向普通 GRPO 衰减
SDAR是(特权自教师,带门控)是(独立门控的蒸馏项)门控取决于学生不确定性,非技能新鲜度本身
SEED是(自我生成,同策略)是(式 1,置信度门控)是(同一检查点每轮同时扮演两个角色)

最能锐利地区分出 SEED 具体贡献的一行,是它与 SDAR、RLSD、Skill-SD、OPSD 的对比:这四个方法都已经使用了某种形式的特权自教师和稠密逐 token 蒸馏,但 SEED 依然在 3B 规模上超过其中最强的 SDAR(ALFWorld 平均 84.4)达 7.4 分,在 7B 规模上达 10.2 分,而在更小的 Qwen3-1.7B 规模上,差距惊人地达到 38.1 分——在小模型自身的轨迹和失败模式在训练过程中变化更剧烈的地方,一个真正自我进化(而不仅仅是门控式或衰减式)的分析器的价值,也相应地被放大了。

厘清 Skill-GRPO 与 Skill-GRPO* 这两个容易混淆的基线

在上文对比表和下文实验部分,会反复出现 Skill-GRPO 和 Skill-GRPO* 这两个名字非常相似、但含义不同的基线,值得单独停下来把它们区分清楚,因为混淆这两者会误读实验结果。

Skill-GRPO(不带星号)。 这个基线在训练时把检索得到的技能插入上下文,让技能能够影响探索过程中的动作采样——也就是说,技能会改变模型在 rollout 阶段实际生成什么样的轨迹。但它仍然只使用普通 GRPO 的组内相对优势值作为训练信号(技能不参与损失函数本身,只参与生成 rollout 的那一步),而且在评估时,技能上下文被移除,模型只从普通历史行动。这意味着 Skill-GRPO 测试的是:“如果技能只影响了训练数据分布,但没有被蒸馏进任何辅助损失,会发生什么”。

Skill-GRPO(带星号)。* 这个变体在训练和评估时都保留技能上下文可见——也就是说,它测试的是一个更宽松的对比条件,允许模型在测试时也直接读取技能提示词,不需要像 SEED 那样把技能的效果内化到权重里。

这两个基线放在一起看,揭示了一个分层的对比结构:Vanilla(无技能)→ Skill-Prompt(测试时提示,零训练)→ Skill-GRPO(训练时提示塑造探索,测试时移除)→ Skill-GRPO*(训练和测试都保留提示)→ SEED(训练时蒸馏,测试时零提示)。SEED 相对 Skill-GRPO 的优势(在上文”主结果表”一节讨论过,最高达 +70.9 分)说明,单纯让模型在探索阶段”看到”技能远远不够;而 SEED 相对 Skill-GRPO*(在 12 项汇总对比中赢下 11 项)的优势更加引人注目,因为它证明了即便允许对手在测试时”作弊”般地保留技能提示词,SEED 依然能凭借把技能效果蒸馏进权重这件事本身占据上风——这正是本文”内化胜过推理时提示”这一关键论断的完整证据链所在。

相关工作走查:五个基线彼此之间到底有什么不同

因为论文对比了五个不同的自蒸馏基线(OPSD、GRPO+OPSD、Skill-SD、RLSD、SDAR),很容易在阅读时忘记具体每一个到底和别的差在哪里,值得按论文引入它们的顺序逐一走一遍它们的机制,再回过头看 SEED 和这五者的区别。

OPSD(Zhao et al., 2026)。 五者中最通用的一个:学生和教师分支共享同一个底层模型,只是被不同的上下文条件化,教师分支额外能观测到某些只在训练时可用的特权信息(不一定是自然语言技能——可以是任意增强上下文)。教师对学生的已采样 token 重新打分,通过分布匹配产出稠密的逐 token 目标,教师侧输出被停梯度处理。这在架构上是 SEED 重打分机制最直接的先辈,但 OPSD 没有具体规定特权上下文应该是什么,也不涉及任何针对学生自身轨迹的事后分析——通用 OPSD 里的特权信息完全可以是一条更长的推理轨迹、一个真值标签,或者任何其他旁路通道。值得注意的是,OPSD 单独使用(不和 GRPO 组合)在 ALFWorld 上表现相当差(平均 28.1)——和 Vanilla 差不多,远低于 GRPO 的 75.0——说明单纯的稠密逐 token 蒸馏,如果底下没有一个结果驱动的 RL 目标撑着,是不够的;这正是论文也测试了GRPO+OPSD(联合优化两个目标,平均 81.2)的原因,它作为”简单地把结果导向 RL 和通用自蒸馏组合起来,够不够”这个问题的受控对比,而答案,考虑到 SEED 的 91.8,是不够的。

Skill-SD(Wang et al., 2026)。 专门把自蒸馏改造成基于技能的设定:已完成的经验被表示为自然语言技能,一个检索得到的技能(来自某个预先建好或不断增长的库,不一定是当前策略产出的)只被喂给教师分支,而学生仍从普通上下文训练。这在专门使用自然语言技能这一点上和 SEED 架构接近,但技能是检索出来的,不是通过分析当前轨迹自我生成的——这意味着 Skill-SD 的技能来源,原则上可以完全独立于学生模型当下正在做什么。

RLSD(Yang et al., 2026a)。 采取了一种不同的机制路径:不是添加一个独立的蒸馏损失项,RLSD 把教师-学生对数概率差转化成一个有界系数,用它来调节每个 token 已有 GRPO 更新的幅度,而更新的符号则完全由环境导出的优势值决定。这和 SEED 之间是一个重要的结构性区别:RLSD 的特权教师只能放大或衰减一个已存在的 GRPO 信号,永远不能在 GRPO 没有信号的地方引入新信号(比如在打平奖励的情形下,RLSD 的贡献也会消失,因为它是乘性地作用于 GRPO 优势值,而不是加性的)——这恰恰就是命题 2 证明 SEED 的加性 OPD 项能填补的那个缺口。RLSD 还明确地随着训练把自蒸馏贡献逐渐衰减,在训练早期强调它、在训练后期让它趋向标准 GRPO——这和 SEED 自我进化分析器”全程同样鲜活、全程活跃”的设计选择正好相反。

SDAR(Lu et al., 2026a)。 论文自己实验里五个先前基线中最强的一个,也是 SEED 置信度门控机制最直接照搬的模板(论文原文明确致谢了 SDAR 的门控方法:“跟随 SDAR(Lu et al., 2026a),SEED 把这个变化量映射到一个置信度门控”)。SDAR 保留 GRPO 作为主要目标,并加上一个单独被门控的自蒸馏损失,门控可能取决于学生的不确定性,以及被停梯度处理的教师-学生对数概率差。给定共享的门控机制,SEED 相对 SDAR 剩下的关键差异,正是自我进化式的同步:按论文对基线的描述,SDAR 的特权教师并没有被明确说明要在每一次更新中,把分析器角色执行者角色同步起来——正是 SEED 坚持要求同一个、刚刚更新完的检查点每一轮都同时扮演两个角色(而不是 SDAR 更笼统的特权教师框架),被论文的消融实验(那个 7.4 分的同策略消融损失)标记为 SEED 相对这个已经很强的基线所拥有的最大单一优势来源。

把这五个基线放在一起读,能清楚看出到底哪些东西一步一步累积进了 SEED 的设计:OPSD 提供了基本的”同模型、不同上下文、教师停梯度”重打分模板;Skill-SD 加上了把自然语言技能作为特权内容的具体选择;RLSD 和 SDAR 都(以不同形式)加上了置信度式的门控,来调节这个辅助信号该被信任到什么程度;而 SEED 自己在这全部已有机制之上叠加的具体贡献,是把生成技能的分析器和生成轨迹的执行者做自我进化式同步,再加上把这个同步在数学上到底换来了什么(命题 1-3)形式化下来。

更仔细看一看 ALFWorld 按类别拆分的结果

平均后的头条数字有时会掩盖有趣的结构,值得专门看一下表 1 里、针对 Qwen2.5-3B 骨干模型的完整分类别 ALFWorld 拆分,因为这也正是论文其他大多数图(训练动态、样本效率、跨域泛化)所聚焦的那个设定。

类别VanillaGRPOSkill-GRPOSDAR(最强静态基线)SEED
Pick44.491.288.997.1100.0
Look11.162.571.462.5100.0
Clean6.296.258.8100.0100.0(打平)
Heat15.461.970.661.9100.0
Cool28.665.040.775.070.6
Pick212.547.429.284.280.0

有两点值得单独指出。第一,SEED 在六个类别中的四个(Pick、Look、Clean、Heat)拿到了满分 100.0——这是一个真正引人注目的结果,因为在其中三个类别上,即便是最强的静态蒸馏基线(SDAR)也只能到 97.1 或更低。第二,也应该如实说清楚:SEED 不是在每一个单独类别上都最强——在 Cool(70.6)和 Pick2(80.0)上,SDAR 实际上给出了更高的数字(分别是 75.0 和 84.2)。这意味着 SEED 头条的 91.8 平均值,是由四个类别上接近饱和的表现不成比例地拉高的,而在剩下两个类别上,它只是次优(不是最优)。这个细节没有出现在论文正文的行文里,论文正文只报告了平均后的数字——对任何想判断 SEED 具体的类别表现分布是否符合自己任务的类别构成的人来说,这是一个值得留意的细节。

为什么 Search-QA 的相对增益最小

在全部三个领域里,Search-QA 一直呈现出 SEED 相对 GRPO 最小的相对增益(+1.4 到 +9.3 分,相比 ALFWorld 的 +14.9 到 +45.9 和 WebShop 的 +8.7 到 +19.8)。这值得理解一下,而不是当作一个没有解释的脚注放过去。Search-QA 设定的两个结构性特征,可以合理地解释这个差距。第一,表 5 的超参数显示 Search-QA 最多只用 4 步交互,相比 ALFWorld 的 30 步和 WebShop 的 15 步——在这么短的视野里,一条轨迹根本没有多少空间去包含”早期犯错、后期错误累积”这种事后技能最擅长捕捉的模式(正如上文数值走查所展示的那样);多数 Search-QA episode 本质上就是”搜索一两次,然后回答”,相对于 GRPO 那种更粗糙的信号,留给 OPD 施展细粒度信用分配的空间本来就不多。第二,Search-QA 的奖励本身在精神上就已经接近逐 token 级别了——最终答案的正确性相对容易归因到回复的最后几个 token 上,不像 ALFWorld,一个早期的错误转向可能要等许多步之后才让一条本来很长的轨迹功亏一篑。论文里都没有明确讨论这两点,但它们和表 1 里的实证模式是一致的,也为这个模式提供了一个合理的机制解释。

实验:实际测量了什么

基准测试及其选择理由

论文刻意跨越了三种性质迥异的长程智能体形式,以检验方法是否能超越某一个狭窄的任务类型:ALFWorld(基于文本的具身家庭任务,横跨六个类别——Pick、Look、Clean、Heat、Cool、Pick2——考察在固定离散动作空间下的多步物理世界推理),WebShop(交互式电商导航,考察在庞大而嘈杂的商品目录中,搜索查询构造与多属性约束满足的能力),以及基于搜索的问答(七个数据集——NQ、TriviaQA、PopQA、HotpotQA、2WikiMultiHopQA、MuSiQue、Bamboogle——遵循 Search-R1 协议,考察在回答之前由工具驱动的证据收集)。这些基准在动作空间结构、episode 长度和奖励密度上有着本质差异,使得在全部三者上都能取得一致的增益,比只在单一基准上取得增益要更有说服力得多。

三个基准的结构性差异一览

为了让上一段的定性描述更具体,这里把表 5 里三个基准各自的关键结构参数并排列出来,方便直接对照。

维度ALFWorldWebShopSearch-QA
最大交互步数30154
动作空间性质固定的、离散的物理交互指令集搜索查询+点击+购买,大而嘈杂的目录搜索调用+最终文本答案
奖励结构二元成功/失败(部分任务有子目标)连续型评分(属性匹配程度)+二元成功二元正确/错误
rollout 组内打平的典型性高(训练后期成功率常 >85%)中等较低(短视野下结果更容易区分)
训练批次大小(表 5)1616128

这张表最能解释上文”为什么 Search-QA 的相对增益最小”一节的论点:Search-QA 的最大交互步数只有 ALFWorld 的约七分之一,动作空间也窄得多(基本只有”搜索”和”回答”两类动作),这意味着一条轨迹里能够包含的、事后技能真正擅长捕捉的那种”早期决策失误、后期代价累积”模式,天然就少得多——不是方法本身在这个领域表现不好,而是这个领域提供给方法施展空间的”原材料”本来就更有限。

主结果表

图 2(论文图 1):在 ALFWorld、Search-based QA 与 WebShop 上的总体性能概览——SEED 相对于训练无关基线、结果导向 RL 基线和技能蒸馏基线,取得了最强的平均性能

在三个 Qwen 骨干模型(3B、7B、1.7B)上取平均,SEED 相对 GRPO 的增益是:ALFWorld 平均 +14.9 到 +45.9 分(增益最大的是最小的 Qwen3-1.7B 骨干模型——从 46.1 到 92.0,几乎翻倍),Search-QA 平均 +1.4 到 +9.3 分,WebShop 得分 +8.7 到 +19.8 分,WebShop 成功率 +5.5 到 +39.0 分。与 Skill-GRPO(在探索过程中利用技能进行条件化,但仍使用同一个终局奖励衍生的单一优势值广播给所有 token)相比,SEED 的优势进一步扩大——在 1.7B 骨干模型上,ALFWorld 上的优势最大达到 +70.9 分——这凸显出,单纯”在 rollout 过程中能够访问到技能”和”把技能效果稠密地蒸馏进每一个受影响的 token”相比,价值远远不能相提并论。

Skill-Prompt vs. SEED:内化胜过推理时提示

这个对比值得单独拿出来重点讨论,因为它有实践意义。Skill-Prompt 评估的是与 Vanilla 相同的、冻结未经微调的骨干模型,只是在评估时直接把一段检索得到的、与任务相关的技能追加到模型的上下文里——纯粹的推理时提示词工程,零训练。在每一个骨干模型、每一个汇总指标上,Skill-Prompt 都不如 SEED,而且往往差距悬殊(例如 Qwen2.5-3B 的 ALFWorld:Skill-Prompt 28.9 对 SEED 91.8)。更值得注意的是,SEED 在 12 项跨骨干模型/跨基准的汇总对比中,有 11 项超过了 Skill-GRPO*(用 GRPO 训练并且在评估时保留可见技能)——尽管 SEED 在测试时完全没有使用任何技能上下文。这背后的启示是:把一条事后经验蒸馏进模型权重、让它表现得就好像已经内化了这条经验一样,比每次都把同样的文本经验当作实时提示词交给模型,产生的行为更可靠——对于任何在”提示词工程投入”和”训练时蒸馏投入”之间做取舍、以决定如何向智能体注入领域知识的人来说,这是一个真正有参考价值的结果。

训练动态:更快收敛,更短的 episode

图 3(论文图 3):在 ALFWorld 上对比 SEED 与 GRPO 的训练动态——episode 成功率(左)与 episode 长度(以轮次计,右),使用 Qwen2.5-3B-Instruct

到训练步数第 40 步时,SEED 已经达到约 57% 的成功率,而 GRPO 仍徘徊在 35% 附近——差距很早就打开,并且持续存在。SEED 也把平均 episode 长度压缩得更快、更彻底,从约 28 轮压缩到约 13 轮,而 GRPO 在训练结束时仍有约 16 轮。因为在这份数据里,更短的 episode 与更高、而非更低的成功率相伴而生,论文将其解读为更高效的任务执行(更少浪费性的探索性轮次)的证据,而非提前终止——这是一个值得仔细区分的地方,因为对”episode 变短”的粗浅解读,原本很容易被误认为是一种退化。

样本效率与跨域泛化

图 4(论文图 4 与图 5):样本效率分析(左),显示 SEED 仅用 60% 的训练数据就能匹敌全量数据训练的 GRPO;ALFWorld Unseen 上的跨域泛化(右),显示 SEED 相对 GRPO 在各类别上的增益

仅用 60% 的 ALFWorld 训练数据,SEED 就达到了 80.7 的平均成功率——已经超过了 GRPO 使用全量数据集时的 75.0。在保留的 ALFWorld Unseen 划分(训练时完全没见过的任务实例)上,SEED 把宏平均成功率从 70.9(GRPO)提升到 86.2,单类别最大增益出现在 Heat(+35.0 分),六个类别中有五个都取得了稳定增益——Clean 是唯一的例外,下降了 2.9 分,这一细节论文如实报告,而没有刻意淡化。

消融结果:三个组件都有贡献,没有冗余

图 5(论文表 2):ALFWorld 上的消融结果,展示了事后技能 SFT、自我进化 OPD 和同策略(相对于静态库)技能生成各自的贡献

消融实验是支撑论文三重理论框架(同策略、稠密、自我进化)最干净的证据,因为它单独隔离出了每一个特性:去掉事后技能 SFT(即直接从一个不具备分析能力的基础模型开始阶段二)把 ALFWorld 平均值从 91.8 拉低到 86.0(-5.8);去掉自我进化刷新(即只运行阶段一的静态监督,而没有阶段二持续进行的蒸馏循环)把它拉低到 87.0(-4.8);把同策略技能生成换成一个静态离线技能库(技能由早期检查点一次性生成,永不刷新)产生了单项最大跌幅,拉低到 84.4(-7.4)。“同策略”消融损失最大——甚至大于完全去掉 SFT 基础这一事实,是命题 3 理论论断的最强实证支持:分析器陈旧性是一个真实、可量化的代价,而不是一个假设性的担忧。

定性轨迹对比

图 6(论文图 6):ALFWorld 上"把蜡烛放进马桶"任务的定性对比——GRPO 训练的智能体(左)在找不到蜡烛后进入了一个脱离任务的循环;SEED 训练的智能体(右)系统性地检查了几个合理的架子,五步内完成了任务

这个例子真实地展示了论文关于”为什么稠密信用分配重要”这一核心论断:GRPO 训练的智能体在还没有定位到蜡烛之前就直接走向了马桶(目标容器),在那里没找到蜡烛,接着拿起一个不相关的卫生纸物品(一个被幻想出来的替代目标),然后在剩余的步数预算里在各个位置之间来回打转,没能恢复过来。SEED 训练的智能体则明确地推理了”蜡烛可能出现在哪里”(是架子,而不是马桶本身),检查了架子 1,排除掉,检查了架子 2,找到了蜡烛,完成了放置——这种搜索策略,看起来正像是论文表 4 例子中展示的那种”工作流程”事后技能文本(“首先定位目标物体……”),说明被内化的技能确实塑造了探索策略,而不只是对 token 概率做了些微不足道的推动。

更仔细看看:为什么 Sokoban 和 EZPoints 是合理(尽管有限)的多模态测试

在呈现多模态结果之前,值得先理解为什么选中了这两个具体任务,以及相对于论文的纯文本基准,它们到底测试了什么、又没测试什么。Sokoban 的定义性结构特征是不可逆性:把箱子推错方向可能会形成一个永久死局(一个靠着墙、无法再推回来的箱子),意味着单一一次早期的视觉误判,就可能拖垃一条本来很长的 episode——结构上类似于上文数值走查中讨论过的 ALFWorld “早期错误累积”模式,但现在需要模型从像素而不是文本中提取这个错误,测试事后分析能否泛化到视觉接地的状态表示。EZPoints 相比之下,测试的是一种不同的能力:精确识别(从图片读出牌面数值)加上序贯的算术表达式构造,这是一个视野短得多、组合约束得多的任务,相对 Sokoban 或 ALFWorld,它在精神上更接近 Search-QA 那种短视野结构,而不是 ALFWorld 那种长而探索性强的 episode。合起来看,这两个任务覆盖了一个合理(尽管狭窄)的切面——“一个视觉接地的智能体可能出错的地方”:一方面是不可逆的规划错误,另一方面是精确感知加上序贯构造错误。这是一对合理的任务组合可以纳入,但正如批判性分析部分指出的,它仍然是比论文主结果依赖的三领域、三骨干规模纯文本评估要窄得多的实证基础(两个任务,一个 3B 规模骨干)。

图 6(论文表 8):使用 Qwen2.5-VL-3B-Instruct,在视觉智能体基准(Sokoban 6x6 与 EZPoints)上的结果,展示 SEED 相对于 GRPO 和 ReAct 的增益

为了检验方法是否局限于纯文本交互,作者们评估了一个视觉语言骨干模型(Qwen2.5-VL-3B-Instruct)在两个有视觉依托的任务上的表现:Sokoban(6×6 网格,推箱子谜题,一步走错就可能造成不可逆的死局,考验视觉状态跟踪能力)和 EZPoints(基于卡牌的算术表达式构造,考验视觉识别加上序贯推理能力)。SEED 在 Sokoban 上达到 82.0%(相对 GRPO 的 67.1% 增益 +14.9),在 EZPoints 上达到满分 100.0%(相对 GRPO 的 86.9% 增益 +13.1),把平均值从 77.0% 提升到 91.0%。这是一个相对温和的补充实验(两个基准,一个骨干模型规模),但它确实有意义地把论文的泛用性主张,拓展到了纯文本智能体之外。

九面板训练曲线:跨规模跨域的一致性

图 7(论文图 8):三个骨干模型(Qwen2.5-3B/7B、Qwen3-1.7B)与三个领域(ALFWorld、Search、WebShop)的成功率曲线,展示了所有九种设置下一致的上升学习趋势

全部九种骨干模型-领域组合,都展示出一致的、大致单调上升的学习曲线(经过滑动平均平滑处理,消除了常见的 RL 噪声),这是一个有用的鲁棒性检验:方法的核心机制看起来并非针对某一个特定模型规模或任务类型精细调优过——不过,正如下文”批判性分析”部分所讨论的,全部九条曲线都是在完全相同的超参数(表 5)下训练的,而论文并没有明确论证这套超参数在如此不同的模型规模之间是否都是合适的。

批判性分析:不足与可改进之处

具体到这篇论文的不足与瑕疵。

  1. 理论命题建立的是必要条件(占据匹配、非退化梯度、有界陈旧性),而不是方法真正有效的充分条件——论文在附录 A 的行文框架里对此是诚实的,但这种诚实并没有完整贯穿到主文更加自信的实证论断中。 命题 1 自身的陈述指出,它”本身并不意味着回报会单调改善,还需要生成的事后技能确实具有行为信息量”,而式 8 的协方差条件明确说明,一切都取决于 wkw_k(事后背书)与 QkQ_k(真实动作价值)相关——但论文的主体实验部分,始终没有尝试直接测量这个相关性(比如,在留出的 rollout 上,利用已知的最终成功/失败,检查分析器背书的 token,是否真的与更高的后续轨迹成功率相关)。既然整个理论框架的实践相关性,都建立在这一个实证条件之上,直接测量它(哪怕只是小规模的)本可以大大加强”理论解释了实证增益”这一论断的说服力,而不只是”理论与实证增益兼容”。

  2. 图 8 中全部九条训练曲线——横跨 4 倍参数量范围(1.7B 到 7B)的三个骨干模型——都使用了同一张共享超参数表(表 5)训练:相同的学习率(1×1061\times10^{-6})、相同的 OPD 门控锐度(βopd=5.0\beta_{\text{opd}}=5.0)、相同的 OPD 系数(λopd=0.01\lambda_{\text{opd}}=0.01)、相同的 KL 系数。 RL 和蒸馏文献中有充分记录表明,最优学习率和辅助损失权重通常会随模型规模变化;在没有任何按骨干模型分别调优协议说明的情况下,在 4 倍参数量范围内使用完全相同的超参数,会引出这样一个问题:较小的模型(尤其是 Qwen3-1.7B,恰好展示出最大的 SEED 相对 GRPO 增益)是否可能系统性地让 GRPO 基线在那个规模下调优不足,从而人为夸大了 SEED 在那个规模上的相对优势。论文没有报告任何按骨干模型的超参数扫描或敏感性分析来排除这种可能。

  3. 阶段一 SFT 数据所依赖的外部分析器(GLM-5.2)是一个固定的、未受控的变量,它自身的质量直接决定了整个流水线的上限,但其影响从未被消融过。 阶段一的 SFT 数据完全由 GLM-5.2 为 1,440 条离线轨迹选择写下的”事后技能”内容所决定——如果这个外部模型,对某个特定的基准或骨干模型组合,系统性地产出了肤浅、冗长、或者微妙错误的技能标注,这个缺陷就会传导进阶段一的微调,并对阶段二整个自我进化循环设下一个隐藏的上限(因为阶段二的同策略分析器是从阶段一检查点开始、并被其塑造的)。没有任何消融实验把 GLM-5.2 换成另一个外部分析器(比如一个更小或更大的模型),来测试最终结果对这个特定的、有些随意的选择有多敏感。

    对一个相关但更普遍问题的具体量化(本文作者构建)。 为了让”把分析器的输出当作可靠教学信号”这类近似,在背书与真实价值之间相关性不完美时,能够如何悄悄使下游优化产生偏差这件事变得具体,我做了一个小型模拟:为一个 6-token 词表生成 πk\pi_k 和真实价值 QkQ_k,然后把事后门控 wkw_k 生成为 QkQ_k 加上不同程度的独立高斯噪声(模拟一个背书只与真实决策质量部分相关的分析器)。在噪声标准差为 0 时(完美分析器),式 8 给出的价值对齐增益是 +0.184+0.184;在噪声标准差等于信号自身标准差时(一个”有噪但仍有一定信息量”的合理设定),增益跌到 +0.041+0.041——单单是现实的分析器噪声,就使理论价值对齐收益下降了 77.7%,这还没考虑流水线中其他任何近似的影响。这是一个通用的敏感性示意,不是对 GLM-5.2 实际噪声水平的断言(论文中也没有对此进行测量),但它说明了论文对式 8 的正面表述(“重加权目标价值更高”)掩盖了这个收益在现实的分析器不完美性下,会消退得有多快——这正是论文缺失的一类消融实验。

  4. 置信度门控锐度 βopd=5.0\beta_{\text{opd}}=5.0 和 OPD 系数 λopd=0.01\lambda_{\text{opd}}=0.01 被报告为固定值,论文全文没有任何敏感性分析,尽管命题 3 自己的分析已经指出这里存在一个权衡(“一个更锐利的门控能更强地区分被支持和不被支持的 token,但也相应地对陈旧的技能诱导偏移更敏感”)——论文在理论部分陈述了这个权衡的存在,但从未在实证上探索过它(比如,通过一个针对 βopd{1,5,10,20}\beta_{\text{opd}} \in \{1, 5, 10, 20\} 的小规模扫描),来展示实践中的最佳平衡点在哪里、或者结果对这个选择有多敏感。

    对这种敏感度的一个具体示意(本文作者构建)。 我计算了门控函数 g=σ(βopdΔ)g=\sigma(\beta_{\text{opd}}\Delta) 在一系列 Δ\Delta 值上、对应四个候选 βopd\beta_{\text{opd}} 设置下的取值:

    Δ\Deltaβ=1\beta=1β=5\beta=5(论文选择)β=10\beta=10β=20\beta=20
    0.100.5250.6230.7310.881
    0.300.5740.8180.9530.998
    0.500.6230.9240.9931.000
    0.800.6900.9821.0001.000

    在论文选定的 βopd=5\beta_{\text{opd}}=5 下,一个适中大小的对数概率变化 Δ=0.30\Delta=0.30(大致相当于上文数值走查里一个中等背书 token 的幅度)就已经产生了 0.8180.818 的门控值——已经深入”强烈背书”的区间。而在 βopd=20\beta_{\text{opd}}=20 下,同样的 Δ=0.30\Delta=0.30 会把门控饱和到 0.9980.998,意味着整个 Δ[0.30,1.2]\Delta \in [0.30, 1.2] 区间在功能上都变得和完全背书无法区分,丢弃了不同 token 背书强度之间本可能有用的细微差异。反过来,我还检查了门控对一个小扰动(Δ:0.100.15\Delta: 0.10 \to 0.15,模拟一个不断进化的分析器可能在轮次之间引入的那种小幅度变化)的敏感度:在 β=1\beta=1 时,门控只移动了 0.01250.0125(对小波动非常鲁棒,但也非常不敏感——几乎不能区分弱背书和中等背书的 token),而在 β=10\beta=10 时,同样的扰动会使门控移动 0.08650.0865——敏感度高出将近 7 倍。这正是命题 3 的行文用散文描述、却从未量化过的那个权衡:论文选定的 βopd=5\beta_{\text{opd}}=5,看上去处在这条权衡曲线一个合理的中间位置,但论文没有给出任何实证或理论上的论证,说明为什么具体是 5(而不是比如 3 或 8)才是正确的选择,而我上面的玩具敏感度表格显示,门控的行为确实在这个范围内变化很大——正是那种本应该通过实证扫描硬确定下来、而不是留作一个未经解释的默认值的那种选择。

  5. 主结果表中完全没有方差或多随机种子的报告。 表 1 里,每一个 ALFWorld、WebShop 和 Search-QA 数字都是单次运行的点估计;考虑到 RL 训练众所周知对随机种子敏感(rollout 采样、环境随机性、小批次顺序),而且 SEED 与最强基线(SDAR)之间报告的一些差距,在 7B 规模上相对温和(例如 Search-QA 平均:SEED 48.6 对 SDAR 49.0——SEED 在这里实际上略输),缺乏任何置信区间或多随机种子方差,就无法判断这类接近的对比,究竟具有统计意义,还是落在噪声范围之内。

作者淡化或回避的局限。

  • 论文引言和结论都强调了在”多样化长程智能体基准”上的泛用性,但实际的多模态扩展(第 C.3 节)仅限于两个相对较小、定义明确的谜题式任务(Sokoban、EZPoints),使用单一 3B 规模的 VL 骨干模型——作为概念验证这是合理的,但相对于主文的行文所暗示的泛用性主张要单薄得多,而论文没有明确标记这种不对称。
  • 论文从未讨论阶段二中执行者/分析者双重角色所带来的额外计算成本:现在每条 rollout 都需要额外的一次前向生成过程(技能标注步骤),加上第二次重打分前向过程(教师分支的对数概率),这都叠加在普通 GRPO 轨迹生成和打分之上。这大致使每次迭代的计算量相对于普通 GRPO 翻倍(甚至更多),但论文在任何地方都没有报告与 GRPO 之间的墙钟时间或 GPU-小时对比——对于一篇主要卖点是实际训练效率的论文来说(样本效率是报告了的,但计入额外分析器开销的总计算效率没有报告),这是一个明显的遗漏。
  • ALFWorld Unseen 上 Clean 类别的退化(-2.9 分,是 SEED 在跨域泛化中唯一不如 GRPO 的类别)在结果表中被报告了,但主文对此没有任何讨论——考虑到论文在解释其他每一个结果时都表现得相当细致,这是一个错失的机会,本可以理解 “Clean” 任务家族的事后技能,具体在哪个方面泛化得不好。

具体的可改进建议。

  1. 至少在一个基准上,直接测量事后门控 wk(c,v)w_k(c,v) 与真实动作价值 Qk(c,v)Q_k(c,v) 代理量之间的相关性(例如,利用最终成功/失败已知的留出 rollout),以实证方式验证式 8 背后的承重假设,而不是把它留作一个纯理论条件。
  2. 专门针对最小的骨干模型(Qwen3-1.7B),做一次小规模的按骨干模型超参数敏感性扫描(至少包含学习率和 λopd\lambda_{\text{opd}}),以排除其超乎寻常的相对增益,部分源于该规模下 GRPO 基线调优不足这一可能性。
  3. 消融阶段一外部分析器的选择(例如,用一个更小或不同规模的模型替代 GLM-5.2),量化最终的阶段二结果对这个固定的、目前未被消融的设计选择有多敏感。
  4. 增加一个 βopd\beta_{\text{opd}} 敏感性扫描(例如 {1,5,10,20}\{1, 5, 10, 20\}),至少在一个基准上直接测试论文自己在命题 3 讨论中指出、却从未在实证上探测过的锐度/陈旧性敏感度权衡。
  5. 报告 SEED 相对于 GRPO 的墙钟或 GPU-小时训练成本,明确计入额外的分析器前向过程,以便实践者能够权衡报告的样本效率增益与实际的每次迭代计算开销。
  6. 至少对与最强基线(SDAR)最接近的头对头对比,增加多随机种子方差报告(哪怕只是 2-3 个种子),尤其是在 7B 规模上一些指标彼此只差一两分的情况下。

第二个数值示例:陈旧性如何在多轮训练中累积

命题 3 的上界(式 14)是针对当前分析器 Ak\mathcal{A}_k 和某一个更早分析器 Aj\mathcal{A}_j 之间单次比较陈述的。值得把它扩展成一个小型多轮模拟,建立一种直觉:如果 SEED 的自我进化刷新机制被关闭,同一个固定分析器被反复用于很多轮训练,会发生什么——这是论文自己没有模拟过的一个假设情形,但它能说明为什么这个上界是累积起来才要命,而不只是在单轮里要命。

设定。 设想 10 轮外层训练。在每一轮 kk,假设对于某个固定的代表性上下文/token 对,“真正”与当前策略对齐的门控值,随着策略变强而平滑漂移——比如 Δk,k=0.3+0.05k\Delta_{k,k} = 0.3 + 0.05k(当前分析器的背书随训练增强,反映后期轮次看到的轨迹更干净、更果断)。如果全程重复使用第 0 轮的固定分析器(从不刷新),它对这个 token 的背书会一直停留在第 0 轮的水平,Δk,0=0.3\Delta_{k,0} = 0.3,对所有 kk 都一样。我用 βopd=5.0\beta_{\text{opd}}=5.0 计算了每一轮的门控差异 gk,kgk,0|g_{k,k} - g_{k,0}|:

轮次 kkΔk,k\Delta_{k,k}(当前)Δk,0\Delta_{k,0}(陈旧)gk,kg_{k,k}gk,0g_{k,0}gk,kgk,0\lvert g_{k,k}-g_{k,0}\rvert
00.300.300.81760.81760.0000
20.400.300.88080.81760.0632
40.500.300.92410.81760.1065
60.600.300.95260.81760.1350
80.700.300.97070.81760.1531
100.800.300.98200.81760.1644

(直接用 g=σ(βopdΔ)g = \sigma(\beta_{\text{opd}}\Delta) 计算得出;我用一个独立脚本核实了这张表,而不是手算 sigmoid 值。)这个差异在第 0 轮恰好是 0(此时陈旧分析器就是当前分析器),随着训练推进、当前策略真正的背书不断增强而冻结分析器的看法永远不更新,差异单调增长。到第 10 轮,门控差异已经涨到 0.164——超过第 2 轮数值的 5 倍。因为式 14 的梯度范数上界随这个门控差异线性缩放(乘一个固定常数 GG),在这个玩具漂移模型下,使用陈旧分析器所带来的梯度偏差幅度,大致会随”距上次刷新经过了多少轮”线性增长。这纯粹是一个示意性的模拟——真实训练中的漂移模式取决于具体任务和策略动态,不一定是线性的——但它具体说明了为什么 SEED”每一轮都刷新分析器”(而不是,比如每 10 轮或 50 轮刷新一次,那样会更省但更陈旧)这个设计选择不只是理论上好看:在这个玩具模型下,周期性刷新方案会在两次刷新之间累积偏差成本,只在刷新点才归零,而逐轮刷新能让偏差全程恰好保持在零。

计算复杂度:阶段二每一个额外环节到底花多少

值得精确地写清楚,SEED 相对普通 GRPO 在每一轮训练中要求多少额外计算,因为(正如批判性分析部分指出的)论文从未对此定量,尽管这直接关系到报告的样本效率增益能不能真的转化为墙钟时间上的节省。

对于一轮外层更新,任务批次大小为 BB、rollout 组大小为 NN,普通 GRPO 需要:(a)B×NB \times N 次轨迹 rollout(每次涉及多次前向生成调用,每个环境轮次一次,直到该基准的最大交互步数上限);(b)一次对已采样 token 的打分,计算 old\ell^{\text{old}}θ\ell^\theta,用于重要性比 ρ\rho 和 RL 损失。SEED 的阶段二在此之上额外增加了:(c)每条已完成轨迹一次额外的前向生成调用,用来产出事后技能 sq(n)s_q^{(n)}(算法 1 第 11 行)——这是对一个包含整条序列化轨迹的提示词做完整生成,对一个 30 步的 ALFWorld episode 来说,这可能是相当长的上下文;以及(d)在技能增强上下文 h~q,n,t\tilde h_{q,n,t} 下,对已采样 token 再做一次额外的打分,计算 skill\ell^{\text{skill}}(第 20 行)。粗略地说,如果我们用 CrolloutC_{\text{rollout}} 表示在普通 GRPO 下生成并打分一条普通轨迹的成本,SEED 阶段二每轮的成本大致是 Crollout+Cskill-gen+Cteacher-scoreC_{\text{rollout}} + C_{\text{skill-gen}} + C_{\text{teacher-score}},其中 Cskill-genC_{\text{skill-gen}}(从一条长轨迹记录生成一条技能)和 Cteacher-scoreC_{\text{teacher-score}}(在一个增强的、因而稍长的上下文下重新打分已采样 token)都是普通 GRPO 没有的新增成本。

这些额外成本具体能有多大?Cskill-genC_{\text{skill-gen}} 随(轨迹的 token 长度)+(生成的技能长度,在论文自己阶段一 SFT 数据生成设定里,外部分析器的上限是 4,096 token,不过阶段二内部分析器生成长度并没有被明确说明)而增长。对于一个 30 轮的 ALFWorld episode,假设每轮观测+动作文本有 50-100 个 token,单独轨迹记录本身很容易涨到几千个 token——意味着 Cskill-genC_{\text{skill-gen}} 不是一个廉价的边际增量,而潜在地可以和生成原始 rollout 本身相当一部分的成本相比拟。相比之下,Cteacher-scoreC_{\text{teacher-score}} 就相对便宜多了:它是一次前向传播(不涉及自回归生成,因为被打分的 token 已经固定),作用在一个稍长的上下文上,所以它的成本增长得更温和,性质上类似在不同上下文下计算 old\ell^{\text{old}}。总体而言,这个大致的估算表明 SEED 每轮真正的”额外”计算负担,主要由分析器的生成过程(第 c 项)主导,相对于普通 GRPO,大致会增加 30% 到 80% 的额外计算量——不过这只是本文作者基于论文陈述的上下文长度(表 5:最大提示长度 2,048-4,096 token,回复长度 512)所做的粗略估计——论文本身没有报告这样的拆分,想要精确数字的读者需要直接对作者发布的代码做实测。

更仔细读一读表 4 提取出的技能

论文附录表 4(在上文方法部分已浓缩复现)给出了三个领域各一对成功/失败技能。仔细读一读这些例子是值得的,因为它们揭示了分析器倾向于提取哪种事后信息,而这又和批判性分析部分讨论的价值对齐问题(式 8)息息相关。

ALFWorld 的成功技能(“首先定位目标物体,把它带到清洁站,清洁它,最后把它移动到目标位置”)是一种流程性技能——它描述的是一系列有序的子目标,本质上是一个压缩过的计划。ALFWorld 的失败技能(“在核实库存和所需物体状态之前,不要把物体移动到目标位置”)是一种前提条件检查技能——它描述的是在动作之前要执行的一次检查,而不是一系列动作本身。这是两种性质不同的指导:一种告诉策略该做什么,另一种告诉它做之前该核实什么。WebShop 的例子遵循类似模式(成功:一个”搜索-然后核实”的流程,在点击”立即购买”之前核实所有必需属性;失败:警告不要点击不相关的结果或购买部分匹配的商品)。Search-QA 的例子是三个领域里最同质的:成功和失败技能都是”在提取答案之前核实确切的实体/关系”的变体——这大概反映了 Search-QA 的合理策略空间(搜索,然后提取)比更开放的 ALFWorld 和 WebShop 动作空间要窄得多。

这个观察对价值对齐问题很重要,因为流程性技能和前提条件检查技能,正是那种原则上应该和真实动作价值 Qk(c,v)Q_k(c,v) 高度相关的指导:一条流程性技能直接说明了一个好计划里下一步该是什么(高背书应该跟踪高价值),而一条前提条件检查技能直接标记出违反某个已知失败条件的动作(低背书应该跟踪低价值)。如果分析器反而产出更含糊、更泛泛的点评(比如”要小心,一步一步思考”),式 8 里的价值对齐协方差就很可能弱得多,因为这种泛泛的建议不会对任何具体候选 token 做出区别性的背书。论文没有明确讨论这个观察,但它是一个合理的解释,说明这个方法在实证上为什么表现得这么好:GLM-5.2 作为阶段一的外部分析器,基于表 4 实际展示的例子来看,似乎产出的是具体、可执行、有流程根据的技能,而不是泛泛的鼓励——这恰恰是理论要求式 8 的协方差能够可靠为正所需要的那种事后内容。

第二个部署示例:为什么这个方法应该能迁移到未见过的任务

值得具体走一遍,论文的跨域泛化结果(第 4.5 节,图 5)为什么不只是一个经验性的巧合,而是方法设计的一个自然推论。设想一个策略在训练中从未见过的、全新的 ALFWorld 任务——比如一个此前没出现过的物体和容器组合。如果 SEED 只是记住了训练中特定的(任务,动作序列)对,那我们没有任何理由期待它能迁移到一个真正全新的任务实例上。但按式 5 的占据匹配目标结果,SEED 真正训练进策略里的机制,是一种系统性的偏向——偏向那些在许多训练轨迹中,事后分析普遍会背书的 token/动作(比如,系统性地依次核实可能的物体位置这一通用倾向,正如上文图 6 定性例子所展示的那样),而不是一张把特定任务映射到特定动作序列的记忆查找表。因为这种偏向被表达成策略通用token 选择倾向的一次转移(通过命题 1 里那个朝 rkr_k 做 KL 蒸馏的机制),而不是对特定提示词的记忆化响应,它恰好正是那种应该能迁移到结构相似但表面上陌生的任务上的学到行为——这正是图 5 所展示的(在 Unseen 划分上平均提升 15.3 分),也正是为什么唯一的例外(Clean,-2.9 分)值得被理解而不是被忽视:它暗示至少对这一个任务家族来说,SEED 在训练中学到的某种通用倾向,要么没能迁移到 Unseen 的 Clean 变体上,要么和这些变体实际需要的东西起了冲突——这是一个具体的、可核实的假设,论文没有进一步调查。

第四个数值示例:用理论核对消融数字

一个有用的练习是检查一下论文的三项消融结果(表 2),是否至少在方向上和三个命题一致——尽管这些命题是针对一个理想化的单一上下文设定证明的,而消融是完整的端到端训练跑,两者无法做到数值精确对齐——但如果理论确实在做真实的解释性工作,每一项消融效应的定性方向,应该和对应命题所描述的机制相匹配。

去掉事后技能 SFT(91.8 → 86.0,-5.8)。 这项消融不直接对应任何单一命题——它是一次阶段一移除,而三个命题都不是关于阶段一的(它们全都关心阶段二的更新动态,前提是一个有能力的分析器已经存在)。相反,这项消融最好被理解为在测试一个前提条件——命题 1 的占据匹配目标 rkr_k 和命题 2 的稠密信号论证,都预设了门控 wk(c,v)w_k(c,v) 携带真实的信息量(也就是说,不只是噪声)。如果分析器角色从一个未经微调、没有能力产出连贯事后技能的基础模型开始,wkw_k 更可能接近无信息量的噪声,这种情况下,不管命题 1-3 的机制在其之上运行得多好,式 8 的协方差条件都会趋向于零。5.8 分的跌幅和这种解读是一致的:命题描述的是一个的门控信号如何被转化成一次训练更新,但它们并不说明门控信号本身好不好,而这项消融恰好是在测试后者。

去掉自我进化 OPD(91.8 → 87.0,-4.8)。 这最直接地对应命题 3(分析器陈旧性上界)。如果阶段二持续进行的蒸馏循环被去掉,只使用一次性的阶段一 SFT 信号,那么策略在阶段一学到的那个有效”分析器”,会随着 RL 训练推进,相对于策略自身不断演化的行为变得越来越陈旧——恰好是式 14 给出上界的那个场景。理论预测这种陈旧性应该表现为一个累积的成本(上文的玩具多轮模拟展示了门控差异大致随着距上次刷新的轮数线性增长);一个真实的、可测量的 4.8 分跌幅,至少在方向上和一个真实的、非零的、在 150 轮训练里累积的陈旧性成本是一致的。

把同策略技能换成静态库(91.8 → 84.4,-7.4)。 这是命题 3 核心论断最干净、最直接的实证类比,也产出了三者中最大的跌幅——和这样一个想法一致:一个静态的、从不刷新的技能来源,从第一轮开始就要承担全部的陈旧性成本(而不是像上一项消融那样逐渐累积,因为至少阶段一最初的 SFT 相对于基础模型来说,还算是某种程度的”同策略”)。这是表中最大的单项消融跌幅,是命题 3 陈旧性机制不只是一个理论上的趣味现象、而是三个测试设计选择中占主导地位的实证驱动因素的最有力(尽管仍是间接的)证据。

需要坦率说明的一点保留意见:这是一次事后一致性检验,不是独立验证——全部三项消融结果在我写这一节之前就已经是已知的,所以这个练习不能排除这样一种可能:这些命题(有意或无意地)是被构造出来去匹配已经观测到的实证模式,而不是反过来。一次真正独立的检验,需要从理论出发推导出一个全新的、尚未被测试过的预测,然后用一个新实验去核对它——这正是上文批判性分析部分给出的改进建议第一条。

一份更完整的可复现性清单

在上文可复现性说明的基础上展开,这里给出一份更细粒度的清单,列明一次独立复现尝试到底需要什么,按流水线阶段组织。

对于阶段一(事后技能 SFT):

  • 接触到同一个、或者能力相当的外部分析器模型(论文用的是 GLM-5.2;一次完全开源的复现需要在这里替换成另一个模型,这会引入一个和论文精确数字不可避免的偏离点)。
  • 用于查询外部分析器的确切轨迹分析提示词模板(论文表示这在其附录”图 10”里给出;本文作者在撰写本文的过程中,并未独立核实这张附录图的具体内容,因为完整核实附录图集超出了本文核心方法和理论验证所需要的范围)。
  • 相同的基础骨干模型检查点(Qwen2.5-3B-Instruct、Qwen2.5-7B-Instruct、Qwen3-1.7B-Instruct——全部公开可用,这是一个真正的可复现性优势)。
  • 相同的离线轨迹采集预算(M=180M=180 个任务,每个 K0=8K_0=8 次 rollout,共 1,440 条轨迹)以及相同的三轮 SFT 训练日程。

对于阶段二(自我进化 OPD):

  • 完整的超参数表(表 5),论文确实完整给出:150 次策略更新,批次大小 16(ALFWorld/WebShop)或 128(Search),rollout 组 N=8N=8,学习率 1×1061\times10^{-6},ϵclip=0.2\epsilon_{\text{clip}}=0.2,βopd=5.0\beta_{\text{opd}}=5.0,λopd=0.01\lambda_{\text{opd}}=0.01,βKL=0.01\beta_{\text{KL}}=0.01,以及每个基准的最大交互步数和提示词长度上限。
  • 具体的 RL 阶段轨迹分析提示词和执行者提示词(按论文自己的交叉引用,分别是附录图 10 和图 11——同样,本文作者未在撰写本文过程中独立重新核实)。
  • 每个基准相同的评估协议:ALFWorld 的 140 任务 seen 划分和 134 任务 unseen 划分,WebShop 固定的 128 个测试任务,以及横跨七个数据集、共 51,713 道问题的合并 Search-QA 评估集。

计算环境: 论文声明训练是在 8 块 NVIDIA A800 80GB GPU 上完成的——这是一个可观但不算离谱的算力预算,对一个资源充足的学术实验室来说是可复现的,不过(正如批判性分析部分标记的)论文没有给出任何墙钟时间或总 GPU-小时数字,所以独立复现者没有直接依据能估计一次从零开始的训练跑应该花多久,才能判断是不是哪里出了问题。

代码可用性: 摘要引用了一个 GitHub 仓库(按论文引用列表是 github.com/jinyangwu/SEED)。如上文可复现性说明所述,本文作者在撰写本文过程中并未独立审计这个仓库的完整性——计划实际动手复现的读者,应该把本文的方法部分描述当作理解论文数学和流水线结构的阅读辅助,而不是替代直接检查作者自己发布实现的手段。

一个工程视角:共享权重的”双重身份”带来了什么复杂度

上文反复强调执行者和分析器共享同一套参数 θold\theta_{\text{old}},这不只是一个理论上干净的设计,也带来了一些实现层面值得注意的复杂度,论文本身没有专门讨论这些工程细节,但它们对任何想要复现这套流水线的人是真实存在的。

第一,上下文长度管理。执行者角色处理的是普通交互历史 hq,n,th_{q,n,t},而分析器角色处理的是完整的轨迹记录 xτx_\tau(通常比任何单一时间步的历史都长得多,因为它包含了整条轨迹从头到尾的全部观测-动作对)加上后续要生成的技能文本。这意味着同一个模型,在同一轮训练里,需要在两种截然不同长度分布的输入上运行——执行者的前向传播通常更短、更频繁(每个时间步一次),分析器的前向传播更长、但每条轨迹只需要一次。工程实现上,这两种调用模式如果共享同一个批处理/调度队列,可能需要不同的填充(padding)和批大小策略才能提高吞吐量。

第二,角色切换的一致性。因为分析器和执行者是同一套权重,在实现上通常靠拼接不同的系统提示词或者角色标记来区分”现在这次前向传播是在扮演执行者(输出下一个动作)“还是”在扮演分析器(输出一段事后技能)“。如果这个角色标记的格式和阶段一 SFT 训练时使用的提示词模板不完全一致,分析器角色的输出质量可能会退化——这是一个容易在实现细节层面出错、但论文正文完全没有触及的潜在陷阱。

第三,教师分支和学生分支的批处理。式(Teacher)和式(Student)要求对完全相同的已采样 token,在两种不同上下文下分别计算对数概率——这意味着每一个已采样 token,实际上需要两次前向传播(一次普通上下文,一次技能增强上下文),而不是像普通 GRPO 那样只需要一次。如果实现时不小心让这两个上下文共享了某种缓存(比如 KV 缓存的错误复用),很容易在教师分支里意外泄漏进学生上下文的信息,或者反过来,这会破坏上文”反事实问题”论证的前提——教师分支的对数概率必须真的反映”如果技能可见,这个 token 会有多大概率出现”这个假设性问题,而不是被普通上下文的缓存状态污染。

这些工程复杂度都不是理论上的障碍,论文提供的完整超参数表和开源代码承诺,应该能让一次认真的复现工作绕开大部分这类陷阱——但值得在这里明确点出来,因为”教师和学生共享权重”这句话读起来很简洁,实现起来涉及的批处理和角色管理细节,比这句话字面听起来的要更繁琐一些。

边界条件一览

根据上文回顾的全部内容,这里给出一张速查表,总结论文的证据表明 SEED 在什么情形下应该有帮助、在什么情形下不应该被期望有帮助。

条件SEED 有帮助吗?证据
Rollout 组经常在结果上打平(训练已收敛、任务较容易)是,而且非常明显——这正是 GRPO 梯度消失的地方命题 2;全部骨干模型的 ALFWorld 成功率都 >90%
事后技能真的和真实动作价值相关是,而且好处的大小随相关性缩放(式 8)上文数值验证;表 2 消融实验
事后技能没有信息量或者和价值不对齐不确定/可能中性偏有害——式 8 的协方差项可能接近零或为负论文没有直接测试;上文本文作者自建的合成噪声敏感性实验
小骨干模型(1.7B),失败模式在训练中变化很快是,而且不成比例地明显——报告的相对增益最大Qwen3-1.7B:相对 GRPO +45.9 分
视野非常长的任务,需要一条事后技能总结许多个决策点未测试——三个基准的视野长度都是有界、中等的(ALFWorld 最多 30 步,WebShop 15 步,Search 4 步)表 5 的”最大交互步数”一行
外部分析器(GLM-5.2)难以为某个领域产出有用自然语言总结的领域(比如高度技术性或符号化的领域)未测试——三个基准的交互记录都对自然语言友好论文没有涉及
额外分析器前向传播的计算预算非常紧张的场景相对普通 GRPO 很可能代价不小——没有计算对比报告上文批判性分析部分已标记为一个缺口

一个关于超参数表的补充说明

上文批判性分析部分已经指出,表 5 的超参数在三个骨干模型之间完全共享,是论文一个值得追问的地方。在这里补充列出表 5 里几个此前没有单独强调过的具体数字,方便读者直接对照:PPO 裁剪范围 ϵclip=0.2\epsilon_{\text{clip}}=0.2 意味着重要性比 ρ\rho 被限制在 [0.8,1.2][0.8, 1.2] 区间内,这是 RL 文献里一个相当标准的取值,并非本文的创新;KL 系数 βKL=0.01\beta_{\text{KL}}=0.01 和 OPD 系数 λopd=0.01\lambda_{\text{opd}}=0.01 数值恰好相同,这大概是巧合,但确实意味着标准 KL 惩罚项和 OPD 辅助项在联合损失里获得了同等量级的权重系数——尽管如上文”用一个恒等式核对 SEED 的两个 KL 项”一节所论证的,两者在训练动态上扮演的角色截然不同(一个是保守性约束,一个是主动的行为塑造)。学习率 1×1061\times10^{-6} 对 RL 微调来说是一个偏保守的选择,这和 PPO 式训练里常见的偏低学习率传统是一致的,目的是避免大幅度的策略震荡。

一份实践者决策指南

如果你在考虑要不要在自己的智能体 RL 流水线里采用类似 SEED 的机制,论文的证据能给出几条实际的考量,组织成一份粗略的决策清单:

  1. 你已经有一个可用的 GRPO(或类似的组内相对)RL 流水线吗? SEED 明确是 GRPO 的一个附加件,不是替代品——你保留现有的结果导向训练循环,在此之上加上 OPD 损失。如果还没有,先把 GRPO 跑通。
  2. 你的 rollout 组是否经常在结果上打平,尤其是随着训练推进? 如果你的任务足够难,以至于多数组在整个训练过程中都还保持成功与失败的健康混合,GRPO 的优势值信号可能已经在做大部分有用的工作,SEED 的边际收益可能比论文头条数字(这些数字部分由 ALFWorld 较高的最终成功率驱动)要小。
  3. 你能承受大约翻倍的单次迭代计算量吗? 每次 rollout 现在都需要一次额外的生成调用(技能标注)和一次额外的打分调用(教师分支),超出普通 GRPO 的部分。如果你的训练预算受限于计算而不是样本,要权衡这一点和报告的样本效率增益——SEED 用计算换样本效率,这笔交易对你的场景合不合适,取决于哪种资源更稀缺。
  4. 你有没有能力接触一个足够强的外部 LLM 来做阶段一的 SFT 引导? 论文用的是 GLM-5.2;你需要一个大致这个能力档位的模型来生成初始的(离线轨迹,事后技能)对。如果你只能接触到和自己骨干模型相当甚至更弱的模型,SFT 阶段的价值就不那么明确了(论文没有测试过这种情况)。
  5. 你的任务对自然语言友好吗? 整套机制的前提是能把一条轨迹压缩成一段有用的自然语言总结。高度结构化、符号化或非语言状态的任务(比如底层机器人控制,某些科学模拟领域)可能不经改造就套不进这个框架。
  6. 你需要推理时的简洁性吗? SEED 相对 Skill-Prompt/Skill-GRPO* 的头条实际优势,是部署时什么都不需要额外做——不用检索,不用技能库,不用增强提示词。如果你的用例能容忍一个推理时的技能提示流水线,那是一个更简单(尽管按论文数字来看效果较差)的备选方案,值得在投入完整 SEED 训练流水线之前先做基线尝试。
  7. 你的训练日志里能不能监控到 rollout 组的打平率? 预先设一个监控指标,追踪每一轮 rollout 组里所有轨迹结果完全相同的比例。上文”常见问题”一节的粗略估计显示,这个比例会随着任务成功率接近饱和而迅速上升——如果你的任务从一开始就很容易,这个比例可能很快就会越过一半,意味着 SEED 的价值会比在一个长期保持中等难度的任务上更早地呈现出来。

常见问题

问:SEED 里的”教师”是一个独立的、更大的模型吗? 答:不是。这大概是最常见的误解。教师和学生是完全相同的参数 πθ\pi_\theta,在两种不同的上下文下(技能增强 vs. 普通)被评估。整个流水线里没有任何更大或独立训练出来的教师模型——整套机制是一种自蒸馏。

问:事后技能会在评估或部署阶段出现吗? 答:不会。这是刻意设计、也是整个方案的核心。技能增强上下文只在训练时用于计算 OPD 损失的教师分支对数概率。推理时,智能体只从普通交互历史行动,atπθ(ht)a_t \sim \pi_\theta(\cdot \mid h_t)——和普通 GRPO 完全一样。

问:“自我进化”具体指的是什么? 答:具体是指,在每一轮策略更新中,用于(a)采集新 rollout 和(b)把这些 rollout 分析成事后技能的那个冻结快照 πθold\pi_{\theta_{\text{old}}},是同一个、刚刚更新完的检查点。两个角色都不使用陈旧的、或者独立排期的模型。这和”简单地把模型当成自己的教师”(OPSD、SDAR 等几个基线也这样做)不同,而且比它更强——自我进化这个特性,具体关心的是分析器角色在整个训练过程中是否和执行者角色保持同步。

问:OPD 系数 λopd\lambda_{\text{opd}} 为什么设得这么小(0.01)? 答:论文没有明确解释这个选择,但从损失的角色能看出设计意图很清楚:Lopd\mathcal{L}_{\text{opd}} 的目的是对事后技能背书的 token 做一个辅助性的轻推,而不是和结果驱动的 Lrl\mathcal{L}_{\text{rl}} 项竞争或主导它。一个很小的系数,能让 RL 目标始终是策略行为的主要驱动力,而 OPD 只在 GRPO 那种粗糙优势值看不到的 token 级细节里,提供一个次要的修正。

问:事后技能有没有可能就是错的或者误导性的,如果是,会发生什么? 答:这恰好是式 8 的协方差条件在理论上要处理的场景,也是论文理论部分明确点出的一个真实风险(“这本身并不意味着回报会单调改善,还需要生成的事后技能确实具有行为信息量”)。如果分析器的背书和真实动作价值不相关甚至负相关,OPD 更新理论上可能把策略推向一个没有帮助的方向。论文没有报告任何刻意测试退化或对抗性分析器质量的实验,这是上文批判性分析部分标记出的缺口之一。

问:分析器在生成事后技能时,能看到奖励/结果吗? 答:能——轨迹分析输入 xτx_\tau 包含完整的轨迹记录,论文图 2 明确显示这份记录在观测、动作、奖励之外还包含一个”结果:成功/失败”字段。这一点很重要:分析器并不是对轨迹是否成功一无所知,恰恰是这一点让它能区分”值得重复的工作流程”技能和”应当避免”的失败技能。

问:如果执行者和分析器是同一个模型,为什么分析器不直接输出正确动作,而要输出一条事后技能? 答:因为分析器看到的是一条已经完成的轨迹——它已经知道结果,甚至可能知道给定某个动作之后完整发生了什么。它拥有的信息,是当时那个只能在线决策的智能体永远无法获得的(这正是从 Hindsight Experience Replay 借来的经典”事后”框架)。要求它在每一个历史时间步直接输出”正确动作”,需要它以某种方式把”当时那一刻可知的东西”和”只有事后才变得清楚的东西”解耦开——这比总结一条通用的、可复用的教训(一条技能)要难得多、也更脆弱,而后者可以被训练成让普通、只能前瞻的策略去应用,而不需要在决策时刻拥有事后信息。

问:模型是否有可能以某种退化的方式利用这个置信度门控,比如学会让自己的教师分支和学生分支变得无意义地一致? 答:对于任何用同一套参数既定义信号、又(间接地)从这个信号里派生目标的联合优化过程,这都是一个合理的担忧。论文的设计对这种最直接的版本有一个结构性防线:教师分支的对数概率始终是在一个不同的上下文(技能增强的)下计算的,而且产出这条技能的分析器,在整个内层优化循环期间都被冻结为 θold\theta_{\text{old}}——所以在单一外层轮次内,可训练的 θ\theta 无法直接影响生成什么技能,只能影响它如何回应一条在这一轮开始时就已经固定下来的技能。这种担忧更微妙的版本(比如模型经过很多轮外层训练,学会生成”容易被自己认同”而不是真正有信息量的技能)是否仍会出现,论文没有调查,考虑到这套流水线完全自指的性质,这是留给未来工作的一个合理问题。

问:打平奖励的情形,在实际训练中到底有多常见? 答:论文本身没有报告这个比例,但可以用一个粗略的概率论论证来粗估一下它为什么应该不少见。如果一个任务的真实成功率是 pp,而 N=8N=8 条轨迹独立采样(论文的 rollout 组大小),那么这 8 条轨迹全部成功或全部失败(两种都会让这个组里每个 token 的 GRPO 优势值恰好为零)的概率是 p8+(1p)8p^8 + (1-p)^8。当 p=0.85p=0.85(大致相当于论文报告的 ALFWorld 最终成功率区间)时,这个概率大约是 0.858+0.1580.272+0.00000260.2720.85^8 + 0.15^8 \approx 0.272 + 0.0000026 \approx 0.272——也就是说,在训练接近收敛时,超过四分之一的 rollout 组会完全打平(我自己用一个小脚本确认了这个二项分布公式的数值结果)。这一个粗略估计,虽然论文自己没有给出,但它有助于把命题 2 从一个抽象的边界案例,变成一个具体、可以定量估计的训练常态——而且这个比例还会随着训练推进、成功率进一步提高而变得更高(比如 p=0.95p=0.95 时,打平概率已经接近 0.9580.6630.95^8 \approx 0.663),这正好对应了表 2 里去掉自我进化 OPD 后那 4.8 分的真实代价为什么如此显著——因为训练越接近末尾,GRPO 本身失去信号的那个窗口,就越来越大。

这项工作在更广阔后训练文献中的位置

SEED 处在三条此前相对独立的研究脉络的真实交汇点上:事后经验学习(事后经验重放 Hindsight Experience Replay、RUDDER 式回报分解、过程奖励模型——即已完成的经验揭示了在线决策过程中不可获得的信息这一思想)、同策略自蒸馏(OPSD、SDAR、RLSD——把同一个模型当作它自己的特权教师,在增强上下文下评估,以产出稠密的逐 token 监督)、以及智能体技能/经验方法(情景记忆、类似 Reflexion 的言语反思、检索式技能提示——把过往经验的自然语言总结,当作可复用的指导)。这篇论文的具体贡献在于表明:把同策略自蒸馏,与自然语言的、自我生成的、自我进化的技能(而不是一个固定的特权上下文,或者一个静态/检索得到的技能库)结合起来,能产生一个胜过这三条脉络中各自代表性方法的方法。至于”自然语言技能”这一具体选择(相对于,比如说,一个学习到的隐向量,或者一个结构化的符号表示)是否是必不可少的,还是说它只是一种更普遍的”自我生成特权上下文”想法的一种方便实现,是一个论文没有直接回答的自然开放问题,因为它没有消融事后表示的形式,只消融了它的存在与否、蒸馏机制、以及新鲜度。

可复现性说明

对于一篇学术 RL 论文来说,这篇论文的可复现性相当友好:表 5(附录 B.4)给出了完整的训练超参数集合(150 次策略更新,ALFWorld/WebShop 批次大小 16、Search 批次大小 128,rollout 组大小 N=8N=8,学习率 1×1061\times10^{-6},PPO 裁剪 ϵclip=0.2\epsilon_{\text{clip}}=0.2,门控锐度 βopd=5.0\beta_{\text{opd}}=5.0,OPD 系数 λopd=0.01\lambda_{\text{opd}}=0.01,KL 系数 βKL=0.01\beta_{\text{KL}}=0.01),表 3 给出了每个基准精确的 SFT/RL/测试样本数量,论文也声明代码已在作者的 GitHub 上开源(摘要中有引用,不过本文作者并未在撰写此笔记的过程中独立核实该仓库的完整性)。唯一有实质意义的可复现性缺口,是外部分析器的依赖:阶段一的 SFT 数据生成依赖于查询 GLM-5.2(据本文作者从论文引用中判断,这是一个专有的、至少不是开放权重的模型),这意味着要精确复现阶段一检查点,需要访问那个特定的模型——对于任何想要用完全开放的工具从零开始复现结果的人来说,这是一个值得留意的细节。

与本文其他笔记的横向参照

如果你之前读过本系列关于其他 RL 训练方法论文的阅读笔记,值得留意 SEED 和它们在信用分配思路上的位置关系:GRPO、GSPO 这类方法关心的是如何在轨迹或序列层级上更稳健地计算优势值;而 SEED 关心的是一个正交的问题——给定一个已经算好的轨迹级优势值,如何在token 层级上补充一个独立的、稠密的修正信号。这意味着 SEED 原则上可以和任何产生轨迹级(或序列级)优势值的结果导向算法组合,而不仅限于论文实验里使用的 GRPO——只要底层算法能提供一个 ArlA^{\text{rl}},SEED 的 OPD 项就可以作为一个正交的附加损失叠加上去,这也是为什么上文”实践者决策指南”第一条把”已有一个可用的 GRPO 流水线”列为采用 SEED 的前提,而不是把”必须换成 GRPO”列为前提。

速查术语表

  • POMDP:部分可观测马尔可夫决策过程——建模一个只能观测到真实隐藏环境状态部分信息的智能体的形式化对象。
  • GRPO:组内相对策略优化——一种 RL 算法,对每个任务采样一组轨迹,并在组内归一化其结果以得到每条轨迹的优势值,广播给该轨迹中所有有效 token。
  • 同策略蒸馏(OPD):一种蒸馏方案,教师/学生上下文下被打分的 token,是当前(学生)策略自身已经采样出来的 token,而不是由一个独立的教师新生成的。
  • 事后技能:轨迹完成之后生成的一段自然语言总结,描述一个可复用的工作流程(来自成功)或一条纠正/规避规则(来自失败)。
  • 置信度门控:一个关于技能增强上下文与普通上下文之间对数概率变化量的 sigmoid 函数,把这个变化量转化为蒸馏损失的一个软 (0,1)(0,1) 权重。
  • 自我进化循环:每一轮训练中,恰好刚刚更新过的同一个策略检查点,同时充当采集轨迹的执行者和分析轨迹的事后经验生成者的这一特性,使得两个角色都不会互相滞后。
  • 占据匹配目标:一个完全由当前策略实际访问的上下文和 token 构造出来的蒸馏目标分布(相对于来自不同或更早策略的异策略数据)。
  • 停梯度(sg[·]):一种操作,在反向传播时把它的参数当作常数处理,即便这个参数是从别处确实有梯度的参数计算出来的——SEED 全程用它来确保教师分支和门控永远不会直接接收梯度更新,只有学生分支会。
  • 价值对齐条件:要求事后门控 wk(c,v)w_k(c,v) 与真实动作价值 Qk(c,v)Q_k(c,v) 正相关(论文中未经实证测试),式 8 说明这是 OPD 更新真正能提升期望回报、而不仅仅是良定义所必需的条件。
  • 分析器陈旧性:对同一条底层轨迹样本,当前分析器和更早、过时的分析器会产出的门控值之间的差异——由命题 3 给出上界,并被 SEED 的逐轮刷新驱动到零。
  • 信任区域裁剪:PPO 式机制(通过 clip(ρ,1ϵclip,1+ϵclip)\text{clip}(\rho, 1-\epsilon_{\text{clip}}, 1+\epsilon_{\text{clip}})),限制单个 token 的重要性比能对 RL 损失产生多大影响,防止由一个如今已经过时的冻结快照生成的数据,诱发破坏性的巨大策略更新。

常见误解澄清

在读完全文之后,有几个容易产生的误解值得单独点出来集中澄清,因为它们分别对应上文不同章节里已经论证过、但容易被忽略的细节。

误解一:SEED 是一种课程学习(curriculum learning)。 不是。课程学习通常指按难度递增的顺序安排训练样本;SEED 的自我进化性质,指的是分析器和执行者角色的同步,而不是任务难度的编排。SEED 的任务采样(算法 1 第 4 行)和普通 GRPO 一样,没有刻意的难度排序。

误解二:置信度门控值越接近 1,说明这个 token 越”正确”。 不完全准确。门控值 gg 衡量的是事后技能相对于普通上下文,让这个 token 变得更可能出现的程度,而不是这个 token 相对于任务目标有多”正确”。式 8 的协方差条件明确指出,只有当门控值和真实动作价值 QkQ_k 相关时,高门控值才意味着好的决策——如果分析器产出了误导性的技能,高门控值完全可能对应一个不好的动作,如上文”常见问题”里”事后技能有没有可能就是错的或者误导性的”一条所讨论的。

误解三:阶段一的 SFT 是可选的,只是为了”预热”。 不准确。表 2 的消融显示去掉阶段一 SFT 造成 5.8 分的真实损失,而且上文”更仔细读一读表 4 提取出的技能”一节论证了,阶段一给分析器角色打下的基础,直接决定了阶段二产出的技能是否具有信息量——这不是一个可有可无的预热步骤,而是让后续自我进化循环产生真实价值的一个必要前提条件。

关于阅读顺序的一个建议

考虑到本文篇幅较长、涉及的推导和示意例子较多,如果读者时间有限,建议的最小阅读路径是:一句话总结 → 核心要点速览 → 深入理解(打平奖励为什么重要)→ 方法(尤其是阶段二的逐步展开和完整算法)→ 命题 2 的陈述与验证 → 消融结果 → 批判性分析。这条路径覆盖了论文最核心的机制、最锋利的理论论断,以及最重要的实证证据和局限性讨论,可以在不阅读全部推导细节和补充示例的情况下,建立起对这篇论文相对完整的理解;而如果时间充裕,再回过头去补齐命题 1、命题 3 的完整推导,以及那些标记为”数值示例”的补充章节,会获得对论文数学内容更扎实的把握。

用一个恒等式核对 SEED 的两个 KL 项

SEED 的联合损失(式 SEED)里包含两个很容易混淆、但作用截然相反的 KL 风味的项,值得用一个具体例子把它们分辨清楚。第一个是标准 PPO/GRPO 的 KL 惩罚项 βKLDKL\beta_{\text{KL}} D_{\text{KL}},出现在式(RL)里——这一项惩罚可训练策略 πθ\pi_\theta 偏离某个参考策略(通常是 πθold\pi_{\theta_{\text{old}}} 或 SFT 初始化)太远,它的目的是保守性:防止策略在单次更新里变化得太剧烈,以维持训练稳定。第二个是命题 1 里的 KL 蒸馏恒等式(式 5),它证明 OPD 梯度等价于 θDKL(rk(c)πθ(c))\nabla_\theta D_{\text{KL}}(r_k(\cdot\mid c) \| \pi_\theta(\cdot\mid c))——这个 KL 散度的目的恰好相反:它主动把策略往一个具体的重加权目标 rkr_k 拉近,为的是行为改变,而不是保守性。

用数字把这个区别讲具体:假设在某个上下文 cc,当前策略是 πk=[0.10,0.35,0.40,0.15]\pi_k = [0.10, 0.35, 0.40, 0.15](本文通篇使用的同一个 4-token 例子),而标准 KL 惩罚的参考策略恰好也是同一个,πref=πk\pi_{\text{ref}} = \pi_k(在刚刚完成 θold\theta_{\text{old}} 冻结之后的合理近似)。那么在 θ=θk\theta=\theta_k 处,DKL(πθπref)D_{\text{KL}}(\pi_\theta \| \pi_{\text{ref}}) 恰好是 00——标准 KL 惩罚在一轮更新最开始时不贡献任何梯度,只有当 πθ\pi_\theta 在内层优化步骤中逐渐偏离 πref\pi_{\text{ref}} 时,它才开始增长,并对这种偏离施加惩罚。与此同时,OPD 隐含的目标 rk=[0.034,0.209,0.579,0.179]r_k = [0.034, 0.209, 0.579, 0.179](此前用同样的 πk\pi_k 和门控值 wkw_k 算出)在一轮开始时就已经πk\pi_k 不同——直接计算 DKL(rkπk)D_{\text{KL}}(r_k \| \pi_k):

DKL(rkπk)=vrk(v)logrk(v)πk(v).(KL-check)D_{\text{KL}}(r_k \,\|\, \pi_k) = \sum_v r_k(v) \log\frac{r_k(v)}{\pi_k(v)}. \tag{KL-check}

我用数值方式计算得到:DKL(rkπk)0.100D_{\text{KL}}(r_k\|\pi_k) \approx 0.100 nats——从第一个梯度步开始就是一个非零散度,原因恰恰在于 rkr_k 本来就被设计成和 πk\pi_k 不同(它把门控值高于平均水平的 token 权重上调)。这正是本质的对比:标准 KL 惩罚项从(接近)零开始、逐渐增长以抵抗偏移;而 OPD 隐含的 KL 散度一开始就非零,整个训练过程都在主动缩小它,把 πθ\pi_\theta 拉向 rkr_k。这两项在真实意义上是朝着相容但截然不同的方向发力:KL 惩罚说的是”不要朝任何方向变得太快”;OPD 项说的是”要朝这个具体的重加权目标移动,速率由 λopd\lambda_{\text{opd}} 控制”。把两者混为一谈——比如假设一个很大的 βKL\beta_{\text{KL}} 能以某种简单方式替代或者和 OPD 机制相互作用——会是一个错误;它们规范的是不同的东西。

一条时间线:把 SEED 的三个理论命题和三项消融结果连成一条主线

为了在结束正文之前把全篇最核心的论证脉络串起来,这里用一条简短的时间线,把理论(命题 1-3)和实证(表 2 的三项消融)按照它们在方法论上对应的先后关系重新排列一遍,而不是按论文原来的章节顺序:

  1. 命题 1 建立了 OPD 更新的合法性——它证明这个更新是一个良定义的、占据匹配的 KL 蒸馏,不是某种临时拼凑的启发式规则。这是整套方法在数学上站得住脚的基础。
  2. 式 8 的协方差条件给这份合法性加上了一个前提——良定义不等于有帮助,只有当事后门控和真实动作价值相关时,这个更新才会真正提升期望回报。这是上文批判性分析部分反复强调、论文自身却从未直接测量的那个假设。
  3. 命题 2 证明了这个机制在 GRPO 失声的地方依然有信号——即便一组轨迹结果完全打平,只要事后技能真的能区分 token,OPD 梯度就不会是零。表 2 里去掉自我进化 OPD 造成的 4.8 分损失,是这个理论论断的实证回响。
  4. 命题 3 给出了陈旧性的一个可控上界——只要分析器和策略保持同步,这个上界就精确为零。表 2 里”同策略换成静态库”造成的 7.4 分损失(全表最大),是这个理论论断最直接、最有力的实证印证。
  5. 表 2 里去掉阶段一 SFT 造成的 5.8 分损失,则不直接对应任何一个命题,而是在测试全部三个命题共同的前提条件——分析器的门控信号必须首先具备真实的信息量,三个命题描述的都是”一个好的门控信号如何被转化为训练更新”,而不是”门控信号本身好不好”。

这条主线的价值在于,它把论文的理论部分和实证部分,从两个平行讲述的故事,重新组织成一条单一的因果链条——尽管上文”用理论核对消融数字”一节也已经指出,这终究是一次事后一致性检验,而不是独立验证。

六个值得记住的数字

如果你只想从这整篇笔记里记住六个数字,以下最能概括论文的实证论据:

  1. 91.8——SEED 在 ALFWorld 上的宏平均成功率(Qwen2.5-3B),对比 GRPO 的 75.0,以及此前最强的自蒸馏基线 SDAR 的 84.4。
  2. 7.4 分——把同策略技能生成换成静态离线技能库的消融损失,表 2 里最大的单项损失,也是自我进化设计必要性的最强实证证据。
  3. 60%——SEED 达到 GRPO 全量数据表现(80.7 对 75.0)所需要的 ALFWorld 训练数据比例,这是头条的样本效率论断。
  4. 0——在一个组内全部轨迹结果打平的 rollout 组里,每个 token 的 GRPO 优势值(和梯度)精确的数值,这正是命题 2 形式化、并被本文数值验证确认的那个场景。
  5. 38.1 分——SEED 在最小骨干模型(Qwen3-1.7B)上相对最强基线(SDAR)的领先幅度,是自我进化同步在策略失败模式变化更快时价值更大这一论断最尖锐的例证。
  6. 12 项中的 11 项——在推理时完全不用技能上下文的 SEED,击败推理时保留技能可见的 Skill-GRPO* 的汇总指标对比数量,这正是”内化胜过提示词”这一关键证据。

一个自我检查:如果 SEED 的核心机制不成立,预期会看到什么

作为对上文全部理论和实证内容的一次反向压力测试,值得明确写出:如果式 8 的价值对齐条件系统性地不成立(也就是说,分析器的背书和真实动作价值毫无关系,甚至负相关),我们应该在论文的实证结果里看到什么迹象,而这些迹象目前是否出现。

第一个预期迹象是:自我进化 OPD 消融(去掉阶段二持续蒸馏,只保留阶段一 SFT)应该造成很小甚至没有损失,因为如果门控信号本身没有信息量,让它”更新鲜”并不会带来任何额外价值。但实际观测到的是 4.8 分的真实损失,和这个预期迹象相反。第二个预期迹象是:Skill-Prompt(把技能直接当提示词喂给模型,不训练)应该和 Vanilla 表现相近,因为一个没有信息量的技能不应该在提示词里帮上忙。但实际观测到 Skill-Prompt 全面超过 Vanilla,只是幅度不如 SEED——这同样和”技能没有信息量”的假设相反。第三个预期迹象是:定性轨迹对比(图 6)里,SEED 训练出的搜索策略应该看起来和 GRPO 训练出的策略类似随机,而不是像论文展示的那样系统性、有条理。以上三个交叉检验的迹象,全都不支持”价值对齐条件不成立”这个反面假设——这在一定程度上间接支持了论文的核心论断,尽管如上文批判性分析所指出的,一次直接测量门控和真实价值之间相关性的实验,仍然会比这种间接的、基于消融结果反推的论证更有说服力。

补充推导说明:全文反复用到的 softmax 交叉熵梯度恒等式

上文的好几处推导(命题 1 的证明、命题 2 的式 10,以及本文作者自己的数值验证)都依赖一个标准但容易被忘记的微积分恒等式:对于一个 softmax 分布 pz(v)=exp(z(v))/uexp(z(u))p_z(v) = \exp(z(v))/\sum_u \exp(z(u)),某个具体结果 uu 的负对数似然,对某个(可能不同的)候选 vv 的 logit 求导,结果是

[logpz(u)]z(v)=pz(v)1{u=v}.(Softmax-Grad)\frac{\partial [-\log p_z(u)]}{\partial z(v)} = p_z(v) - \mathbb{1}\{u = v\}. \tag{Softmax-Grad}

这句话的意思是:如果你问”增大候选 vv 的 logit,会怎样改变预测 uu 这件事的损失”,答案是”如果 vuv \ne u,损失会增加 pz(v)p_z(v)(竞争的概率质量从正确答案 uu 那里被偷走了);但如果 v=uv = u,损失会减少 1pz(v)1 - p_z(v)(直接强化了正确答案)“。把这个恒等式应用到一个加权的这类损失求和上——正如式 9 里的 Lopd,k,c(z)=vπk(v)wk(v)logpz(v)\mathcal{L}_{\text{opd},k,c}(z) = -\sum_v \pi_k(v)w_k(v)\log p_z(v),它是对每一个候选 vv(不只是一个)的 NLL 项做加权组合——再对所有结果求和,恰好就得到式 10 的结果:Lopd,k,c/z(v)=πθ(v)[uπk(u)wk(u)]πk(v)wk(v)=πθ(v)Zkπk(v)wk(v)\partial \mathcal{L}_{\text{opd},k,c}/\partial z(v) = \pi_\theta(v)\left[\sum_u \pi_k(u)w_k(u)\right] - \pi_k(v)w_k(v) = \pi_\theta(v) Z_k - \pi_k(v)w_k(v),在 θ=θk\theta=\theta_k 处(此时 πθ=πk\pi_\theta = \pi_k)就变成了 πk(v)[Zkwk(v)]\pi_k(v)[Z_k - w_k(v)],和原文陈述完全一致。我在上文的数值验证里,通过把有限差分梯度和这个闭式表达式做对比,独立核实了这个推导,发现两者在小数点后 8 位上完全一致——这个恒等式不是论文特有的技巧,而是标准的 softmax 微积分,只是这里被应用到了一个技能加权的目标上,而不是一个 one-hot 标签上。

一个容易被忽略的细节:优势值广播里的有效性掩码 mm

上文式(RL-Adv)之后引入的有效性掩码 mq,n,t,m_{q,n,t,\ell},以及式(1)OPD 损失里的同一个符号,值得单独停留一下,因为它容易在快速阅读时被忽略,却是让整套公式在实现层面站得住脚的一个技术细节。一条完整轨迹的序列化表示,通常混杂着两类 token:模型自己生成的动作 token,以及环境注入的观测文本 token。mq,n,t,m_{q,n,t,\ell} 的作用就是把损失(不管是 RL 损失还是 OPD 损失)限制在模型自己生成的那些 token 上——对观测文本的 token,反向传播这个损失是没有意义的,因为模型对这些 token 的”概率”本来就不是它自己决定的,它们是环境喂给它的既定事实,不是它做出的决策。如果不加这个掩码,优化过程会在不该更新参数的地方错误地计算并应用梯度,这是一个看似技术性、但如果实现时疏忽了会直接导致训练出错的细节。

一份速览:全篇提到的所有数值验证汇总

本文作者在撰写这篇笔记的过程中,独立构建并运行了多个小型数值验证,这里把它们汇总列出,方便读者快速定位到具体章节复核:命题 1 的占据匹配恒等式验证(4-token 玩具词表,有限差分梯度对比闭式解);式 8 价值对齐恒等式的直接数值确认;命题 2 打平奖励场景下 GRPO 优势值为精确零、而 OPD 梯度方差非零的对比;命题 3 陈旧性上界的单轮数值示例,以及扩展到 10 轮的多轮陈旧性累积模拟;βopd\beta_{\text{opd}} 敏感度的四组取值门控函数对比表;analyzer 噪声敏感度模拟(价值对齐增益随噪声标准差衰减 77.7%);rollout 组打平概率的二项分布估算;以及贯穿全文、用于对照标准 KL 惩罚与 OPD 隐含 KL 散度的具体数值对比。这些验证全部在本文写作过程中独立执行,不依赖论文自身提供的任何代码或数据,目的是确保每一处”论文声称如此”的地方,都能在本文里找到一次独立的、可核查的数值印证,而不是简单地复述论文的文字表述。

关于把这篇论文和 SDAR、RLSD 一起阅读的收尾说明

对于打算继续深入这个具体文献分支的读者,基于本文通篇把三篇论文的机制都过了一遍,建议的阅读顺序是:先读 RLSD(机制上最简单——对一个已有的 GRPO 更新加一个单一的调制系数,作为初次接触”自教师”想法的入门最容易),再读 SDAR(引入了 SEED 直接借用的门控机制,但没有自我进化分析器这套机制),最后读 SEED 本身(在此基础上加上自我进化同步以及配套的理论框架)。按这个顺序阅读,能更容易具体地分辨出每一篇后续论文到底贡献了哪一块具体机制,而不是试图把 SEED 的全部活动部件(事后技能 SFT、同策略轨迹-技能生成、置信度门控、自我进化刷新、联合 RL+OPD 优化)当作一个未加区分的整体一次性吸收。

一条读者自查清单

在合上这篇笔记之前,建议读者用下面几个问题自我检查一下,是否已经把 SEED 的核心机制理解到位——如果对其中任何一条感到不确定,建议回到对应章节重读一遍。

  1. 你能不能不看讲义,自己用一两句话说清楚,为什么教师分支和学生分支可以是同一套参数,而不会坍缩成一个平凡的恒等式?(提示:关键在于两者被打分的上下文不同,而被打分的 token 是固定的、已经采样出来的。)
  2. 你能不能说清楚,置信度门控的”置信度”,和分类模型里 softmax 输出的”置信度”有什么本质区别?(提示:前者衡量的是一条旁路信息带来的意见变化,后者衡量的是模型输出分布本身有多尖锐。)
  3. 你能不能画出(哪怕只是在脑子里)命题 2 打平奖励场景下,GRPO 优势值和 OPD 梯度分别是什么样子,以及为什么一个恰好为零、另一个一般不为零?
  4. 你能不能解释,为什么”同策略”这个消融比”完全去掉事后技能 SFT”这个消融损失更大?这背后反映了什么关于陈旧性代价的道理?
  5. 你能不能说出,SEED 相对 Skill-Prompt 和 Skill-GRPO* 这两个基线各自赢在哪里,而这两处胜利分别说明了什么不同的道理?

如果这五个问题都能顺畅地回答出来,说明本文已经把 SEED 这篇论文里最核心的机制、理论和证据都传达清楚了。

额外健康检查:自然语言技能这个具体表示形式选择的得失

上文”这项工作在更广阔后训练文献中的位置”一节指出了一个开放问题:为什么是自然语言文本,而不是一个学到的隐向量,或者一个结构化的符号表示,来承载事后经验?值得具体展开这个选择的利弊,虽然论文自己没有直接讨论这一点。

自然语言技能的一个明显优势是可解释性:本文上面反复引用的那些具体例子(“首先定位目标物体……”、“在核实库存和所需物体状态之前,不要把物体移动到目标位置”)对一个人类读者来说是直接可读、可核查的——如果分析器产出了一条明显荒谬或者跑题的技能,一个做研究的人可以直接读出来、诊断问题所在,而不需要去解码一个隐向量或者反向工程一个符号表达式。这对调试和信任建立都有实际价值,尤其是考虑到上文”更仔细看一看格式校验”一节指出,阶段二的同策略技能生成并没有重新应用阶段一那样的有效性检查——如果技能是自然语言,至少研究者原则上可以人工抽查一部分,而如果技能是一个不透明的隐向量,这种抽查就无从谈起。

但自然语言技能也有明显的代价。第一,它必须先被生成(自回归地,一个 token 接一个 token),这正是上文”计算复杂度”一节里占主导地位的额外成本来源((Cskill-genC_{\text{skill-gen}}));一个学到的隐向量,理论上可以用单次前向传播直接算出来,不需要自回归解码,可能会显著降低这部分开销。第二,自然语言的表达能力天花板不确定——一段技能文本能捕捉到的信息,受限于语言本身的表达粒度,而一个高维隐向量原则上可以编码更细致、更连续的”这个动作有多好”的信号,而不是被压缩进一段离散的文字总结里。第三,论文选用的具体门控机制(把技能增强对数概率和普通对数概率的差值,过一遍 sigmoid)本身并不依赖于技能是自然语言——这个机制对任何形式的上下文增强都适用,只要这个增强能够以某种方式插入模型的输入序列。这意味着,如果换成一个可以拼接进输入序列的、可学习的软提示向量,整个置信度门控框架大概率可以原封不动地保留,只是”生成”技能这一步,会从自回归解码,换成通过反向传播直接学习。

这个方向也值得留意:是否可以设计一种混合表示——比如,分析器先生成一段自然语言技能(保留可解释性),再额外学习一个从这段文本派生出的紧凑向量表示(降低推理和存储成本)?论文没有探索这条路径,但鉴于上文”计算复杂度”一节估计的额外 30-80% 训练计算开销主要来自技能生成这一步,这似乎是一个自然且论文尚未触碰的改进方向。

结论

SEED 提出了一个聚焦、动机充分的论断:稀疏的、episode 级别的 RL 奖励,与 LLM 智能体策略学习中精细的、逐 token 的本质之间的错配,可以通过把已完成的轨迹转化为自我生成、自我进化的事后经验点评,并把这种点评对行为的影响蒸馏回普通策略的个体 token 层面,来实质性地弥合。它的理论贡献——三个命题形式化地说明了”同策略”、“稠密”、“自我进化”在数学上究竟各自换来了什么——为论文的设计选择提供了真实、可检验的内容,而本文作者自己的数值重推导也确认了每一个命题都精确如其所述地成立。它的实证贡献既广泛又一致:相对强大的结果导向 RL 和多个先前的自蒸馏基线都有增益,横跨三种骨干模型规模、三种性质迥异的智能体领域,甚至还有一个温和的多模态扩展。最明显的剩余缺口,恰好是一个细心的读者应该追问的那些问题——支撑理论的价值对齐条件(式 8)在实践中是否真的成立,在 4 倍模型规模范围内共享超参数对基线是否公平,以及相对于报告的样本效率增益,运行一个双重执行者/分析者角色的真实计算成本到底是多少。这些缺口都没有推翻论文的核心论断,但它们确实标出了任何直接在这项工作基础上继续构建的人,自然而然的下一批实验方向。