AGENTIC RL · REWARD CREDIT ASSIGNMENT · 2026-08-31

7 轮交互失败了,
该怪谁?

多轮轨迹的奖励归因,怎么进 GRPO / GSPO

单轮 RL 里整个 response 共享一个 advantage,"全对全错"天经地义。到了多轮 agentic RL:第 1 轮搜索做对了、第 2 轮 query 跑偏、最后答错——环境只回一个数。这个数该怎么分摊到每一轮,变成一个真实的设计决策。本报告沿形式化层、对照实验、归因谱系拆到 GSPO-token 为 multi-turn 留的那个口子。

ORM 零信号:失败 → 每轮 credit 全是 0.000,全员沉默(0 × γ = 0,零信号反向传播)。点击上方胶囊切换归因口径。

证据分级:论文一手 > 教材 > 教材转引 > 推断 [标注] · 全部论点忠实转写自 blog · 原文《7 轮交互失败了该怪谁》

§0 · 执行摘要

一个单轮训练里不存在的难题

单一 trajectory reward 落在整条序列上——把它拆成每一轮的得分,是多轮 agentic RL 的第一个真实设计决策。

看一条五轮交互的轨迹:第 1 轮搜索命中了关键证据,第 2 轮改写 query 时跑偏带回了无关内容,第 3 轮纠错找回一半,第 4 轮计算出错,第 5 轮给出错误答案。环境只回了一个数:失败,reward = 0。

单轮 RL 里没有这个问题——整个 response 共享一个 advantage,"全对全错"天经地义。多轮下这个粗暴逻辑立刻出问题:第 1 轮明明做对了,凭什么和第 4 轮一起被罚?而且工程上还另有一层:轨迹里混着两类 token,模型自己生成的(思考、工具调用参数、最终答案)和环境返回的(搜索结果、代码输出),后者根本不该进梯度。所以"turn 级 reward 怎么进 GRPO/GSPO"实际是三个问题的合体:哪些 token 算动作、每个 turn 分多少 advantage、这个 advantage 乘到谁的头上。本报告按这个顺序拆。

三层信号:reward 怎么从轨迹走到权重

教材把信号流拆成三层,这个分层是理解所有方案谱系的地图:

R(τ)

TRAJECTORY REWARD

环境给的原始标量——"这一局成没成"。

多轮下它在轨迹末端才出现一次,稀疏且延迟:5 轮交互里前 4 轮做对了,最后答错,它就只说一句"失败"。

悬停展开

Ai,t

STEP ADVANTAGE

把最终结果拆成每轮的得分——"第 t 轮该不该被奖励"。

信用分配(credit assignment)的主战场。ORM/PRM/折扣/IGPO 全都发生在这一层;"turn 级 reward 进 GRPO"的落点也是这里。

悬停展开

∇log π

TOKEN GRADIENT

A 乘到该轮 action token 的 log-prob 上,进权重。

Δθ = Ai,t · Σk∈a(i,t) ∇ log πθ(yk | ·)。只有 action mask 标 1 的 token 参与求和。

悬停展开

所谓"turn 级 reward 进 GRPO",落点在第 2 层:GRPO 的组内比较天然工作在 trajectory 层(同一道题的多条轨迹比优劣),要落到 turn 级,就得自定义 Ai,t 再喂进去。下面的读数全部来自教材的对照实验与示例,逐项可下钻。

19×
PRM 区分度是 ORM 的倍数(Mini Agent Loop 对照实验)
+30pp
同等步数下 PRM 的任务成功率高出约 30 个百分点
−0.857
ORM 连坐:失败改判 −1 时,正确的第 1 步搜索拿到的惩罚
0.000
ORM 零信号:失败时所有步骤的 credit(0 × γ = 0)
0.531
γ=0.9 反向折扣下,第 1 轮从最终 reward 1.0 分到的回报
+2.5
IGPO 的 turn reward:log-prob 从 −4.0 升到 −1.5 的增量

六项关键读数 · 点击任意一格下钻口径与出处 · 金额无涉,全部为实验读数或教材示例

§1 · 先把对象说清楚

轨迹概率与 action mask

连乘只在模型生成的 token 位置上进行——这一条先把"环境 token 该不该进梯度"永远钉死。

多轮轨迹的形式化(教材采用 AppWorld 论文的 POMDP 写法 )里,完整状态是 zt = [s0, c, x1:t]:s0 是隐藏的初始环境状态(数据库快照、REPL 状态),c 是任务上下文,x1:t 是到当前为止的全部 token 历史——包括模型生成的,也包括环境返回的。模型只看到文本部分,所以叫部分可观测。

轨迹概率的链式分解有一个关键细节,点公式里的每个符号看拆解:

ρθ(x | s0, c) = 𝕀(s0, x) · Π t ∈ a(x) pθ(xt | c, x1:t−1)
公式拆解 · 点任意符号
整条轨迹在给定初始状态与任务上下文下的概率。它是后面一切 loss 与梯度推导的对象:归因的前提是先认清概率连乘在哪里进行。

翻译成 loss 就是 action mask:与轨迹等长的 0/1 向量,模型 token 标 1、prompt 和工具返回标 0。SearchR1 的实现把这件事做得非常直白:<think> 和 <search> 的内容参与训练,检索器返回的 <information> 段整体 mask 。如果让环境 token 也参与梯度,等于逼模型"学习预测搜索引擎返回什么网页",策略梯度被污染。把下面这条示意轨迹的每一段悬停或点开:

一条两轮轨迹的 action mask:模型段标 1,环境段标 0

段宽 ∝ token 数(示意)· 实线框 = 模型生成 · 虚线斜纹 = 环境返回 · 点击任一段下钻

Source · 教材转引 SearchR1 实现(blog 2026-08-31 转述,K8)

答案骨架。这一点决定了今天的答案骨架:turn 级 reward 进入训练的方式,不是给环境 token 加权,而是给每个 turn 的模型 token 构造各自的 advantage。后面的所有方案——ORM/PRM 对照、三条中间路线、反向折扣、GSPO-token——都只是给这句话填不同的实现。

§2 · 朴素方案为什么会失效

一个对照实验:只有第 2 步错的坏计划

ORM 要么全员沉默、要么错怪好人;PRM 逐步独立评分,把"谁错了"讲清楚——代价是每一步都要评估。

教材的 Mini Agent Loop 实验给了最有说服力的一组数字 。任务:查地球半径 → 算赤道周长 → 验证 → 作答。构造一条"坏"轨迹:只有第 2 步错了(把 π 取成 3),第 1、3 步都正确,最终答案错。两种朴素口径的分轮 credit 对比如下,切换 ORM 口径看两种失败方式:

步骤对错ORM · 零信号ORM · 失败给 −1PRM · 逐步评分
1 · 查地球半径✓ 正确0.000−0.8570.656
2 · 算赤道周长(π 取 3)✗ 错误0.000−0.8570.376
3 · 验证✓ 正确0.000−0.8570.170
4 · 作答✗ 最终错0.000−0.857−0.500

Mini Agent Loop 坏轨迹分轮 credit · 教材实验读数,blog 转述(K1)· 点击上图柱子可下钻单步口径

ORM(只看最终结果):失败时所有步骤的 credit 全是 0——因为 0 × γ = 0,零信号反向传播后每一步都"无信号";如果改成"失败给 −1",正确的第 1 步搜索会拿到 −0.857 的惩罚。错怪好人,或者干脆全员沉默。PRM(每步独立评分):正确步骤正分、错误步骤负分,区分度是 ORM 的 19 倍,同等步数下任务成功率高约 30 个百分点。代价是每步都要评估——真实场景意味着标注成本或再训一个打分模型。

PRM 太贵,ORM 太糙。2025–2026 年的中间路线按"信号从哪来"分成三类,本质都是在两者之间找折中。

谱系的起点 · 归因实验的读法

context 上面这组数字是全部中间路线的动机:不付 PRM 的评估成本,又不接受 ORM 的两种失败方式。why it matters 下文三条路线各自回答了"step advantage 从哪来"的同一个问题。

§3 · 归因谱系

ORM 和 PRM 之间的三条路

别人改 Ai,t 从哪来;step-aligned 改优化的基本单元。两股正交的力量。

路线一 · STATE-ANCHORED

同状态下比较动作

GiGPO · HGPO

组内多条 rollout 若在某个状态 s 汇合,就比较"同一局面下不同动作各自的后续回报",组内相对得分就是 step advantage。修正版 HGPO 指出同页面不等于同上下文(前面漏没漏约束,同一个"加入购物车"含义完全不同),用 k-step 历史把比较组分层,各层加权融合。

不需要任何额外标注 · 但依赖状态可碰撞——网页类任务天然友好,开放对话类几乎碰不上。

路线二 · PROGRESS 分摊

把最终 reward 摊回每步

SPA-RL · IGPO

SPA-RL 训一个 progress estimator,要求每步贡献之和还原最终 reward(R̂ = Σ ĉt ≈ R),成功轨迹贡献和近 1、失败近 0。IGPO 更便宜:直接拿"模型对 ground-truth 答案的 log 概率增量"当 turn 级 reward——第 t 轮交互后更确信就记正,被带偏就记负,给出现成的 turn 级标量,可直接进折扣累积,不需要 Monte Carlo 估值。

IGPO 代价:依赖高质量标准答案,多答案问题会被误伤。

路线三 · STEP-ALIGNED

换优化粒度:turn 级 advantage

TURN-PPO · STEPPO

Turn-PPO 用 PPO 取代 GRPO 做多轮,理由是 trajectory 级组内 advantage 方差太大,改用 turn 级 advantage 估计——每个 turn 有自己的 advantage,在 turn 内部 token 间共享。和前面所有方法正交:别人改 Ai,t 从哪来,它改优化的基本单元。

观察窗口:turn 级 advantage 的方差应显著低于 trajectory 级组内 advantage——这是该路线的立足读数。

范式卡 · GRANULARITY MISMATCH

token-centric 与 turn 决策的错位

STEPPO 的核心论点

现有算法继承了 RLHF 的 token-centric 范式,但 agent 的决策天然是 turn 粒度的:一次搜索、一次改写、一次作答。token 级优化和 turn 级决策之间存在 granularity mismatch——优化单位比决策单位细了若干个量级,归因信息在这一层被摊薄。

这条诊断与 GSPO"优化单位应匹配奖励单位"的原则同源;它给 §5 的 GSPO-token 变体埋下了伏笔。

Source · 教材转引(SALT / GiGPO·HGPO / SPA-RL / IGPO / Turn-PPO / StepPO,arXiv 编号见 K7,未逐一核对一手)· 机制描述忠实 blog §归因谱系

无论走哪条路,多轮 RL 还多一个纯时间维度的问题:越早犯的错责任越大(第 1 步走错,后面每步都在错误上展开)。教材和工程实现都用反向折扣处理——这就是下一节。

§4 · TURN-LEVEL DISCOUNTING

从最终结果往回推:越早,折扣越大

7 轮交互只有最后一轮有 reward 1.0,γ = 0.9 时各轮分到的回报是 [0.531 … 1.000]。拖动 γ 看数列怎么变。

反向折扣的方向是从最终结果往回推:离结果越近的轮次拿到的回报越完整,越早的步骤折扣越大。教材示例:7 轮交互、γ = 0.9 时,各轮分到的回报为 [0.531, 0.590, 0.656, 0.729, 0.810, 0.900, 1.000] 。教材同时注明:γ 取 0.9 来自传统 RL 惯例,没有系统性消融——这是 §6 的未决问题之一。

读法。这根时间轴上"第 1 轮犯的错"会被 γ6 压到 0.531,而第 7 轮自己犯的错拿到全额 1.000——责任按与结果的距离分摊。但注意方向性:它回答的是结果回传,不是错误前传;前传要靠 §2 的逐步评分或 §3 的贡献分摊。

§5 · GRPO / GSPO 家族在这张地图上的位置

GSPO-token 留的那个口子

数值上恒等于序列级比率——梯度结构里却出现一个"逐 token 可定制的 advantage 位"。

上周 GSPO 那篇留下的尾巴今天兑现(姊妹报告:比率用错了单位:GSPO 把重要性采样提到序列级)。GSPO 的"优化单位应匹配奖励单位"原则在多轮场景会遇到真实张力:GSPO 的目标函数把整条 response 当一个 action,适合 outcome 级奖励;多轮 RL 想要 turn 级归因,等于要求比序列更细的粒度。GSPO 论文 §4.3 为此设计的 GSPO-token 变体 ,公式很能说明问题,逐项点:

si,t(θ) = sg[si(θ)] · πθ(yi,t | x, yi,<t) / sg[πθ(yi,t | x, yi,<t)]
公式拆解 · 点任意符号
第 i 条序列第 t 个 token 的重要性比率。妙处在它的构造:数值上恒等于序列级比率 si,所以目标、裁剪条件、理论梯度与 GSPO 完全等价。

sg[·] 是 stop-gradient(只取数值、不回传梯度)。这个构造的妙处:数值上 si,t 恒等于序列级比率 si,所以目标、裁剪条件、理论梯度与 GSPO 完全等价;但梯度表达式里出现了一个"逐 token 可定制的 advantage 位"。把同一 turn 的所有 token 设成同一个 Ai,t,就精确得到 turn 级归因——这是算法层为多轮留的正式口子,而不是工程 hack。下面用一组 token 直观看三种 advantage 粒度:

GRPO 家族:对称的另一条路

GRPO 家族走对称的另一条路:组内比较多条轨迹的机制不动,把 Ai,t 的构造外包出去——你给它 trajectory 级比较(默认)还是 turn 级分数(ORM + 折扣 / PRM / IGPO / SALT),它照乘不误。所以"turn 级 reward 进 GRPO"在实现上不是改算法,是改 advantage 构造器 + 确认 action mask 干净。

实在的空白。两条路线在论文层面的组合——GSPO-token × turn 级 Ai,t——目前没有公开消融,是个实在的空白(Qwen 内部是否验证过无从得知)。姊妹报告 GRPO 组大小的取舍 处理的则是同一族算法在 trajectory 层的另一个旋钮。

§6 · 我的三个判断

三个判断,三个未决

分档比单项技术重要;熵是归因质量的早期报警器;四类 reward 混归因无人拆开。

判断一

轮数决定档位,算法决定不了

教材的选型建议按轮数分档:3–5 轮纯 ORM/GRPO 就够(episode 短,稀疏性不致命);5–15 轮上里程碑奖励或 SALT/GiGPO 这类无标注方法;15 轮以上必须 PRM 或 progress reward 加树搜索。这个分档比任何单项技术都重要——reward 密度撑不起学习时,换更强的 RL 算法收益为零。

依据:教材选型分档(K2)· 今天那条 5 轮轨迹,正处在第一档和第二档的边界上。

判断二

归因质量和熵的关系,比想象中直接

ORM 下失败轨迹全员受罚,模型学到的最省事的对策是降低行为多样性(少做动作、早点给答案)——熵坍缩在多轮下不是副产品,是错误归因的直接后果。反过来,PRM 或 IGPO 这类细粒度信号允许模型"保住对的步骤、只改错的",探索才得以保留。

依据:教材对熵坍缩机制的分析(K2)· 观察 turn 数分布与工具调用多样性,比看 reward 曲线更早暴露归因问题。

判断三

"能跑"和"归因对"之间,隔着四个 reward 类型

教材把 agentic reward 分四类:Outcome(最终对不对)、Format(动作能否被解析执行)、Cost(轮数、API 花费)、Process(步骤是否推进任务)。入门时通常只实现前两类保证训练跑通,Process 正是归因层要 dense 化的对象。但很多工程把 Format 惩罚也混进 outcome 信号里一起归因——格式错误的 turn 和推理错误的 turn 在轨迹里承担同样的 blame,这类混淆在公开报告里几乎无人拆开分析。

依据:教材四类 reward 分类(K2)· 混归因缺公开对照实验(K10)。

未决问题

三个还没人回答的问题

  1. GSPO-token × turn 级 Ai,t 的组合在多轮 agentic 任务上的效果,没有公开消融——Qwen 内部是否验证过无从得知。
  2. turn-level discounting 的 γ 在多轮 LLM 训练里没有系统性扫描(教材示例取 0.9,来源是传统 RL 惯例而非消融)。
  3. 四类 reward(outcome / format / cost / process)在归因层的配比与隔离,缺公开的对照实验——大多数报告只报最终指标,不报归因结构。