banner
NEWS LETTER

多轮 Agent 强化学习中的信用分配:从 Session Reward 到 Turn Advantage

Scroll down

在单轮强化学习中,reward 与 action 之间的关系通常比较直接。但进入多轮 Agent 场景后,问题会迅速复杂起来。

一个 Agent 可能需要先理解用户意图,再进行澄清、调用工具、根据工具结果继续决策,最终经过多轮交互才能完成任务。如果整段对话最后失败,我们真正希望知道的是:

到底是哪一步出了问题?

如果简单地把最终失败的 reward 广播给整条 trajectory,那么前面那些完全正确的动作也会被一起惩罚;但如果给每一轮都设计一个局部 reward,又可能出现另一个问题:模型学会了”每一步看起来都不错”,最终任务却没有真正完成。

这其实就是多轮 Agent 强化学习中的核心问题之一:

Credit Assignment —— 如何把最终结果合理地归因到中间决策。

这篇文章结合近期多轮 Agent RL 的一些工作,尝试从 Session Reward、Turn Advantage、Future Return、Same-State Credit 等几个角度梳理这个问题。

1. 为什么只用 Session Reward 不够?

假设同一个 prompt 下采样多条 trajectory,第 $i$ 条轨迹最终得到一个 Session Reward:

$$R_i$$

在 GRPO 一类方法中,可以在同组 rollout 内进行标准化:

$$A_i^{S} = \frac{R_i-\mu_R}{\sigma_R+\epsilon}$$

然后将同一个 advantage 分配给这条 trajectory 中所有 assistant turn。

这种方法非常稳定,因为它直接优化最终目标:任务有没有完成、答案是否正确、环境最终状态是否正确。

但它的信用粒度很粗。假设某条五轮 trajectory:

1
2
3
4
5
Turn 1  正确理解需求
Turn 2 正确澄清信息
Turn 3 调用了错误工具
Turn 4 基于错误结果继续推理
Turn 5 最终任务失败

如果最终 reward 为负,那么 Turn 1 和 Turn 2 也会获得负 advantage。从优化角度看,这相当于告诉模型:

这条路径上的所有动作都不好。

但真正的问题可能只发生在 Turn 3。因此,多轮 RL 很自然地会产生一个想法:能不能给每个 Turn 单独分配 credit?

2. Turn Reward 和 Turn Advantage 并不是一回事

最简单的方法,是直接给每轮设计一个局部 reward:

$$h_{i,t}$$

例如:

  • 工具是否调用正确;
  • 参数是否正确;
  • 是否推进了任务状态;
  • 回复是否符合流程;
  • 是否产生有效信息;
  • 是否出现重复或无效动作。

然后在某个 comparison group 内进行标准化:

$$A_{i,t}^{\text{imm}} = Z(h_{i,t})$$

这样得到的是一种 Immediate Turn Advantage。它回答的问题是:

“这一轮本身表现得怎么样?”

但它没有回答另一个更重要的问题:

“这一轮 action 对后面的成功到底有什么影响?”

例如一次看起来合理的澄清,也可能让对话变得冗长;一个格式完全正确的工具调用,也可能选错工具。

因此,Turn Reward 更密,并不意味着 Credit Assignment 更准确。这是多轮 Agent RL 中一个很容易混淆的地方。

3. 一个更重要的原则:Session 保方向,Turn 分信用

从目前多轮 Agent RL 的方法设计来看,一个非常稳定的模式是:最终 Session Outcome 通常不会被真正丢掉。区别只是它如何进入每个 Turn。

一种最简单的结构是:

$$A_{i,t} = (1-\beta)A_i^S + \beta A_{i,t}^{T}$$

这里 Session Advantage 提供整个 trajectory 的方向,Turn Advantage 只负责局部修正。

GiGPO 则采用类似:

$$A_{i,t} = A_i^{Episode} + \omega A_{i,t}^{Step}$$

其核心思想其实非常类似:

  • Episode / Session 信号回答”整条策略最后好不好”;
  • Step / Turn 信号回答”局部哪个 action 更值得鼓励”。

这也是我认为理解多轮 Credit Assignment 最重要的一句话:

Session Reward 是全局锚点,Turn Credit 是局部修正。

Turn 信号越可靠,就越可以承担更大的信用分配作用;反之,如果 Turn Reward 来自主观 Judge、复杂启发式规则或者多个异质 Reward Component,贸然增加 Turn 权重反而可能把噪声放进梯度。

因此,并不存在一个普适的”70% Session + 30% Turn”最优比例。真正需要回答的是:Turn Credit 到底有多可信?

4. 从 Immediate Reward 到 Future Return

Immediate Turn Reward 最大的问题是短视。于是一个自然改进是,不再只看当前轮,而是看:从当前 action 开始,后面的 trajectory 最终走得怎么样?

定义 discounted future return:

$$G_{i,t} = \sum_{k=t}^{T_i-1} \gamma^{k-t}h_{i,k} + \gamma^{T_i-t}R_i$$

再计算:

$$A_{i,t}^{Future} = Z(G_{i,t})$$

这样,一个 Turn 的 credit 不再只由当前局部分数决定,而会受到未来行为和最终结果影响。MatchTIR、GTPO、Tau 系工作都可以从这个角度理解。

相比 Immediate Reward,这种方法明显更接近长期 Credit Assignment。但它仍然不是严格的因果归因。因为 $G_{i,t}$ 里面不仅包含当前 action 的影响,还混入了:

  • 后续模型采取的其他 action;
  • 环境随机性;
  • User Simulator 随机性;
  • trajectory 长度差异。

所以 Future Return 回答的是:

“采取这个 action 之后,这条轨迹后来怎么样?”

而不是严格的:

“如果只把这个 action 换掉,结果会怎样?”

后者实际上已经接近反事实 Credit Assignment 了。

5. Turn Advantage 到底应该和谁比较?

计算 Turn Advantage 时,还有一个容易被忽略的问题:Baseline 应该是谁?

所有 Turn 一起比较

最简单的方法是把所有 rollout、所有 Turn 放进同一个 pool。好处是样本量大。

但多轮 Agent 中不同阶段往往承担完全不同的职责:

1
2
3
前期:理解 / 澄清
中期:搜索 / 调用工具
后期:执行 / 确认 / 总结

如果直接混在一起,模型可能把”所处阶段不同”误认为”动作质量不同”。

Same-position

一个低成本解决方案是:

$$A_{i,t} = Z_t(G_{i,t})$$

也就是第 $t$ 个 Turn,只和其他 rollout 的第 $t$ 个 Turn 比较。它至少能够避免把早期和后期完全不同的 reward distribution 混在一起。在多轮 Agent 任务中,这是一个相当实用的工程折中。

但需要强调:Same-position 不等于 Same-state。

两个 trajectory 虽然都走到了第 5 轮,但一个可能正在查询订单,另一个可能已经进入退款流程。因此 Same-position 真正解决的是:

$$\text{长度对齐} \rightarrow \text{统计对齐}$$

而不是:

$$\text{状态对齐} \rightarrow \text{因果对齐}$$

6. 变长轨迹为什么会让问题更复杂?

现实 Agent trajectory 几乎一定是变长的。例如 8 条 rollout:

1
3, 3, 4, 5, 5, 7, 8, 9 turns

计算第 7 个 Turn 的 advantage 时,实际上只有 3 条 trajectory 可以参与比较。正确的处理方式不是把已经结束的 trajectory 补成 0,而是只使用真正到达该位置的 valid rollout。

但这又引出了两个新问题。

Small-N

越往后的 Turn,可比较样本越少。当只剩两三个 rollout 时,一个很小的 reward difference 都可能经过 z-score 被放大。因此后期 TurnAdv 往往比前期更不稳定。

Survivor Bias

能够走到第 8、9 轮的 trajectory 本身也不是随机样本。简单任务可能早就结束了,剩下的可能主要是困难、冗长或已经出现错误的 trajectory。于是”第 8 轮 rollout group”的数据分布已经和原始 rollout group 不一样。

这意味着:Same-position 是一个统计近似,而不是完美的对照实验。

7. Future Return 还有一个隐藏问题:Scaling

假设每轮 Turn Signal 的方差都近似为 1。如果直接累计 future reward:

$$D_{i,t} = \sum_{k=t}^{T_i-1} \gamma^{k-t}z_{i,k}$$

那么越早的 Turn,累积的项越多。因此它的 variance 也会天然更大。直观来看:

1
2
3
Turn 1: z1 + z2 + z3 + z4 + z5
Turn 4: z4 + z5
Turn 5: z5

即使每个 $z_t$ 的尺度一样,Turn 1 的累计 advantage 也可能明显更大。这就是 Horizon Scaling 问题。

一种思路是用:

  • discount factor $\gamma$;
  • same-position normalization;
  • GAE;
  • 独立 whitening;
  • $\sqrt{\text{horizon}}$ rescaling;

控制不同位置的尺度。例如近似写成:

$$\hat D_{i,t} = \frac{D_{i,t}}{\sqrt{\sum_m \gamma^{2m}}}$$

它的直觉是:不让一个 Turn 仅仅因为”距离终点更远、能累计更多 reward”,就在优化中拥有更大的权重。

8. 更精确的 Credit Assignment:Same-state、Critic 和 Tree

如果继续沿着 Credit Assignment 的精度往前走,可以得到一条很自然的方法谱系。

Same-state / Semantic Baseline

GiGPO 的核心思想之一,是尽量比较:相同环境状态下采取不同 action 的结果。这比 Same-position 更接近真正的 advantage:

$$A(s,a) \approx Q(s,a)-V(s)$$

问题在于自然语言 Agent 中,”完全相同的 state”非常稀少。因此还可以进一步使用结构化业务状态或语义近邻,例如:

1
2
3
4
5
(intent,
slots,
workflow stage,
tool state,
resolved)

但新的风险是:语义相似不一定意味着决策状态等价。

Critic / GAE

另一条路线是直接学习 $V(s_t)$,然后利用 TD error:

$$\delta_t = r_t+\gamma V(s_{t+1})-V(s_t)$$

再通过 GAE 估计 Turn Advantage。Turn-PPO、DuCA 等工作可以放在这条路线理解。

优点是不用人为寻找同位置 rollout group,并且能够自然处理长期依赖和变长轨迹。代价也很明显:需要一个足够可靠的 Critic。

Shared-prefix / Tree Rollout

如果希望更接近反事实问题,可以直接从相同 history 分叉:

1
2
3
4
5
6
7
        shared prefix
|
-----------------
| |
action A action B
| |
rollout... rollout...

这样就真正接近:在完全相同的历史状态下,如果换一个 action,最终结果会怎么样?

AT²PO 一类 Tree Credit 方法就沿着这个方向前进。它的 Credit Assignment 更干净,但代价是大量额外 rollout 和更复杂的训练系统。

所以理论上的 Credit 精度和工程成本基本是同时上升的。

9. 我更倾向于怎样理解这条方法演进?

把这些方法放在一起,我认为可以得到一条比较清楚的技术谱系:

1
2
3
4
5
6
7
8
9
10
11
       Session Broadcast

Immediate Turn Advantage

Same-position Future Return

Same-state / Semantic Baseline

Hindsight / Critic

Shared-prefix Tree Credit

越往下,Credit Assignment 越精细,但需要付出的代价也越高:

  • 更可靠的 reward;
  • 更好的 state representation;
  • 更多 rollout;
  • value model / critic;
  • 更复杂的训练系统。

因此实际工程中,并不一定应该直接追求最复杂的方法。

10. 一个更实际的迭代顺序

如果让我为一个真实的多轮 Agent RL 系统设计迭代路线,我现在会更倾向于:

第一步:先验证 Reward 本身是否可信

分析每个 Turn Reward Component:

  • 成功和失败 trajectory 上是否真的有区分度;
  • reward 方向是否稳定;
  • 不同位置是否出现反转;
  • Judge 重复打分是否一致。

这是最容易被忽略、但也最重要的一步。错误的 dense reward 一旦进入 Future Return,只会把错误信用传播到更多 Turn。

第二步:保留 Session Outcome 作为稳定锚点

在局部 credit 尚未充分验证之前,不急着削弱最终 outcome。Session 负责保证模型没有偏离真正的任务目标。

第三步:从低成本 Turn Credit 开始

例如 Same-position Turn Advantage。它虽然不是严格的因果 Credit,但实现简单,而且能够先解决最明显的 position distribution bias。

第四步:再引入 Future Return

让 Turn Credit 从”当前这一轮好不好”,逐渐升级到”从这一轮之后,整个 trajectory 走得怎么样”。

同时监控:

  • valid count;
  • position-wise variance;
  • clipping ratio;
  • survivor bias;
  • horizon scaling。

第五步:对低可信 Turn Credit 做 Reliability Gate

当后期样本太少、variance 太高或者状态可比性不足时,不应该硬算一个 TurnAdv。更合理的策略可能是:没有足够局部证据时,退回 Session Advantage。

第六步:只有前面的近似仍然无法定位关键错误,再升级 Credit 精度

例如:

  • Same-state grouping;
  • semantic state baseline;
  • hindsight evaluator;
  • critic / GAE;
  • targeted shared-prefix tree rollout。

这样做的核心逻辑是:先提高信用信号的可信度,再提高信用分配的精细度。

写在最后

多轮 Agent RL 中,Credit Assignment 很容易被简化成一个问题:

“Session Reward 和 Turn Reward 到底应该各占多少?”

但调研之后,我越来越觉得,这并不是最重要的问题。真正决定效果的是三个更基础的问题:

  1. Turn Reward 是否真的和最终成功有关?
  2. 这些 Turn 是否处于足够可比较的状态?
  3. 局部 Credit 的统计量是否足够可靠?

只有回答完这些问题,讨论权重才真正有意义。

因此,多轮 Agent Credit Assignment 的核心并不是不断设计更复杂的 advantage 公式,而是在最终任务目标与局部学习信号之间建立一条可信的归因链路。

最终可以浓缩成一句话:

Session 决定方向,Turn 决定信用;而真正困难的,是证明这个 Turn Credit 值得相信。

延伸阅读

  • GiGPO — Group-in-Group Policy Optimization for LLM Agent Training
  • IGPO — Information Gain-based Policy Optimization
  • GTPO — Group Turn Policy Optimization
  • MatchTIR — Dual-level Credit Assignment for Tool-Integrated Reasoning
  • Turn-PPO — Turn-level Policy Optimization
  • DuCA — Dual Credit Assignment for Multi-turn Dialogue
  • SALT — 基于 trajectory structure 的局部信用重分配
  • AT²PO — 基于 shared-prefix tree 的 Credit Assignment
其他文章
目录导航 置顶
  1. 1. 1. 为什么只用 Session Reward 不够?
  2. 2. 2. Turn Reward 和 Turn Advantage 并不是一回事
  3. 3. 3. 一个更重要的原则:Session 保方向,Turn 分信用
  4. 4. 4. 从 Immediate Reward 到 Future Return
  5. 5. 5. Turn Advantage 到底应该和谁比较?
    1. 5.1. 所有 Turn 一起比较
    2. 5.2. Same-position
  6. 6. 6. 变长轨迹为什么会让问题更复杂?
    1. 6.1. Small-N
    2. 6.2. Survivor Bias
  7. 7. 7. Future Return 还有一个隐藏问题:Scaling
  8. 8. 8. 更精确的 Credit Assignment:Same-state、Critic 和 Tree
    1. 8.1. Same-state / Semantic Baseline
    2. 8.2. Critic / GAE
    3. 8.3. Shared-prefix / Tree Rollout
  9. 9. 9. 我更倾向于怎样理解这条方法演进?
  10. 10. 10. 一个更实际的迭代顺序
    1. 10.1. 第一步:先验证 Reward 本身是否可信
    2. 10.2. 第二步:保留 Session Outcome 作为稳定锚点
    3. 10.3. 第三步:从低成本 Turn Credit 开始
    4. 10.4. 第四步:再引入 Future Return
    5. 10.5. 第五步:对低可信 Turn Credit 做 Reliability Gate
    6. 10.6. 第六步:只有前面的近似仍然无法定位关键错误,再升级 Credit 精度
  11. 11. 写在最后
  12. 12. 延伸阅读