在单轮强化学习中,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 | Turn 1 正确理解需求 |
如果最终 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 | 前期:理解 / 澄清 |
如果直接混在一起,模型可能把”所处阶段不同”误认为”动作质量不同”。
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 | Turn 1: z1 + z2 + z3 + z4 + 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 | (intent, |
但新的风险是:语义相似不一定意味着决策状态等价。
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 | shared prefix |
这样就真正接近:在完全相同的历史状态下,如果换一个 action,最终结果会怎么样?
AT²PO 一类 Tree Credit 方法就沿着这个方向前进。它的 Credit Assignment 更干净,但代价是大量额外 rollout 和更复杂的训练系统。
所以理论上的 Credit 精度和工程成本基本是同时上升的。
9. 我更倾向于怎样理解这条方法演进?
把这些方法放在一起,我认为可以得到一条比较清楚的技术谱系:
1 | Session Broadcast |
越往下,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 到底应该各占多少?”
但调研之后,我越来越觉得,这并不是最重要的问题。真正决定效果的是三个更基础的问题:
- Turn Reward 是否真的和最终成功有关?
- 这些 Turn 是否处于足够可比较的状态?
- 局部 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