研究周报 · 2026.04.12–04.18 · Credit Assignment Survey、SHARP 精读与 Q&A

字数 3,555 预计阅读 9 分钟

精读 Pignatelli temporal CA survey、SHARP Shapley 信用分解、LangMARL 补充对比;回答上周关于 GRPO vs PPO、CAD-GRPO 岭回归、RLHF reward model 的追问;系统整理 policy gradient 方法演进与 GAE。

作者 Yoyo_Lee 发表于

本周聚焦 credit assignment——Pignatelli survey、SHARP、LangMARL 对比;
把上周周报被追问的几个点补清楚(GRPO vs PPO / CAD-GRPO 岭回归 / RLHF reward model);
顺手把 policy gradient 方法的演进时间线梳了一遍。

本周清单

  1. 阅读信用分解的 survey
  2. 上周周报内容的 Q&A
  3. 一些概念的理解
  4. to-do

1. 阅读 survey

让 claude code 推荐了几篇围绕 credit assignment / credit decomposition 的论文进行精读。因为最近申报书定的方向就是 CAD-GRPO,所以这周读的论文基本都是围绕"多智能体场景下如何把 team reward 拆回给每个 agent"这个问题展开的。

主要挑了三篇:一篇是之前 3.15-3.21 读过的 Pignatelli 的 survey,一篇是 SHARP(用 Shapley 值做 marginal credit,是 CAD-GRPO 关键竞品之一),还有一篇是上周已经精读过的 LangMARL(这里主要是把它和 SHARP 放在一起做一个对比)。

1.1 Pignatelli et al., A Survey of Temporal Credit Assignment in Deep Reinforcement Learning (TMLR 2024)

专门讲 credit assignment 的数学本质的 survey。temporal CA 在 single-agent 里面的三个挑战:

  • Depth(延迟效应,reward 离 action 越远越难归因)
  • Density(稀疏奖励,trajectory 里几乎没有中间信号)
  • Breadth(credit 稀释,joint action space 里每个 action 的贡献都被"平均"掉了)

还把 credit assignment 形式化成了一个赋值函数

K:C×A×GYK: \mathcal{C} \times \mathcal{A} \times \mathcal{G} \to \mathcal{Y}

其中 C\mathcal{C} 是 context,A\mathcal{A} 是 action,G\mathcal{G} 是 goal/outcome,Y\mathcal{Y} 是分配给该 (context, action) 的 credit 值。

对我现在做 CAD-GRPO 的启发:

  • Breadth challenge 就是 MARL 场景下 credit contamination 的另一个说法。
  • CAD-GRPO 用观察性因果推断去解决 breadth 这个问题,从 survey 的分类来看确实是一个没被系统讨论过的新路径。

1.2 SHARP: Who Deserves the Reward? Shapley Credit-based Optimization for Multi-Agent System

这篇是 CAD-GRPO 申报书里直接对标的 baseline,所以这次精读主要是想搞清楚它到底怎么做的信用分解的,以及开销到底有多大。

核心 idea: 把 Shapley 值从合作博弈搬到 multi-agent LLM RL 里,用反事实 mask来近似每个 agent 的 marginal contribution。具体来说,给定一条轨迹 τi\tau_i 和 worker agent mm

crediti,mRacc(τi)Racc(τim)\text{credit}_{i,m} \triangleq R_{\text{acc}}(\tau_i) - R_{\text{acc}}(\tau_i^{\setminus m})

其中 τim\tau_i^{\setminus m} 是把 agent mm"mask 掉"之后重新跑出来的 trajectory。对 planner agent,它用所有正向贡献的 worker credit 取平均作为 planner 的 credit:

Ri,0mcλ1MimMimax(crediti,m,0)R_{i,0}^{\text{mc}} \triangleq \lambda \cdot \frac{1}{|\mathcal{M}_i|} \sum_{m \in \mathcal{M}_i} \max(\text{credit}_{i,m}, 0)

最后把这个 marginal credit 和 broadcast accuracy reward、tool process reward 加权合成一个 tripartite reward(也是 SHARP 名字里的那个 “tripartite”)来做 GRPO 的 policy update。

启发:

SHARP 本质上是一个介入性方法,必须显式地生成反事实轨迹 τim\tau_i^{\setminus m} 来估计 credit。论文里的 cost analysis(附录 D)显示,当完全开启 Shapley 分配(p=1p=1)时,per-batch 训练时间从 684s 涨到 1345s,几乎翻了一倍。这个开销和我们申报书里写的 “~2x” 是吻合的。

但 SHARP 的优势在于,它的 credit 估计是基于反事实 mask 的无偏估计,只要 counterfactual trajectory 本身可靠,理论上没有 observation-based 方法(区别于 interventional)的"质量指标 qiq_i 充分性"的假设依赖。

CAD-GRPO 其实可以把 SHARP 的 Shapley 估计当成一个 oracle 上界——在合成环境里,如果 CAD-GRPO 的 β^i\hat{\beta}_i 在零开销下能逼近 SHARP 的 Shapley ϕi\phi_i 到一定水平,就是一个比较有说服力的结果。

同时 SHARP 的 reward decomposition 是加性的Rˉi,m=αRb+βRmc+γRtool\bar{R}_{i,m} = \alpha R^b + \beta R^{mc} + \gamma R^{tool}),这一假设和 CAD-GRPO 的线性可加性 assumption 是同一个 family 的。也就是说如果 SHARP 能 work,那 CAD-GRPO 在这种场景下大概率同样 work。

1.3 LangMARL 补充

上周精读 LangMARL 的时候主要写了 framework overview,这次关注和 SHARP 的对比。SHARP 用的是数值空间里的 Shapley 反事实,LangMARL 用的是语言空间里的 critic LLM 做因果归因,二者其实都是介入性方法的变体。

所以它们的共同问题就是开销大且依赖一个额外的机制(反事实采样 or critic LLM)。CAD-GRPO 的优势位置就是不生成反事实、不调额外的 LLM,纯用 batch data 里的自然变异做统计分解。但是目前还处于空想阶段,肯定不可能是一个普通的 linear regression 就能解决的问题。


2. 上周的 Q&A

2.1 关于 GRPO vs PPO,以及 CAD-GRPO 的岭回归

Q: GRPO 里面的 adv 和 PPO 里面的 value 有什么区别?为什么能够通过 group 的方式去掉了 PPO 里面的 critic network,还能达到其效果?GRPO 的 adv 是如何分配的,或者说它的 credit 是如何分配的?为什么 group 后 agent 较难感知自己的贡献?CAD-GRPO 里面的岭回归的目标是啥,为什么能让 agent 知道自己的贡献?MAS 下是需要在 single-agent credit 之外多一步 per-agent credit 吗?那岭回归为什么能跨越两次回传到 agent 本身进行更新呢?

A:

(1)PPO 的 value vs GRPO 的 advantage

PPO 的 value 是从状态 ss 出发、按当前 policy 走下去能拿到多少期望回报。PPO 的 advantage 是把这个绝对 value 作为 baseline 来算的:

APPO(st,at)=Q(st,at)V(st)A^{\text{PPO}}(s_t, a_t) = Q(s_t, a_t) - V(s_t)

本质上 V(st)V(s_t) 是由一个 critic network 学出来的。

GRPO 的 advantage 是:给定一个 prompt qq,采样 KK 个 rollout {τ1,,τK}\{\tau_1, \ldots, \tau_K\},得到 KK 个 reward {r1,,rK}\{r_1, \ldots, r_K\},然后做组内归一化:

AGRPO(τi)=riμGσG,μG=1Kkrk, σG=std({rk})A^{\text{GRPO}}(\tau_i) = \frac{r_i - \mu_G}{\sigma_G}, \quad \mu_G = \frac{1}{K}\sum_k r_k, \ \sigma_G = \text{std}(\{r_k\})

这里的 baseline 就是这个 prompt 下其他 K1K-1 个 rollout 的平均奖励。

(2)为什么 group 能去掉 critic 还 work?

我的理解是:PPO 中的 critic 本来就是在估一个 baseline 来降低 policy gradient 的方差。GRPO 相当于用更多的 rollout(每个 prompt KK 条而不是 1 条)换掉了 critic 那部分计算。因为它的方差随 KK 增大而减小,只要 KK 够大(DeepSeek R1 用的是 K=16K=16 或者更大),variance 是可接受的。

本质是 Monte Carlo vs TD bootstrapping 的 tradeoff。在 LLM RL 场景下,rollout 相对便宜、critic 训练相对麻烦(long horizon、sparse reward),所以 MC 的性价比更高。

(3)GRPO 的 credit 怎么分配?

在 single-agent GRPO 里,credit 分配主要是轨迹粒度和 token 粒度:

  • Trajectory level: 一条轨迹 τi\tau_i 内所有 token 都共享同一个 advantage A(τi)A(\tau_i)
  • Token level: policy gradient 的时候是 logπ(atst)A(τi)\nabla \log \pi(a_t | s_t) \cdot A(\tau_i),对每个 token ata_t 用的都是同一个 A(τi)A(\tau_i)

(4)为什么 group 后 multi-agent 下单个 agent 难感知自己的贡献?

多智能体场景下,一条轨迹是 NN 个 agent 联合生成的:

τ=(τ(1),τ(2),,τ(N))\tau = (\tau^{(1)}, \tau^{(2)}, \ldots, \tau^{(N)})

team reward R(τ)R(\tau) 同时取决于所有 NN 个 agent。如果直接套 standard GRPO:

A(τi)=R(τi)μGσGA(\tau_i) = \frac{R(\tau_i) - \mu_G}{\sigma_G}

然后把这个 A(τi)A(\tau_i) 同时赋给 agent 1 到 agent N 的所有 token,就会出现"agent 1 明明输出很好,但队友 agent 2 出了 bug 把 task 搞砸了,结果 agent 1 也收到负的 advantage 信号"——体现为 agent 1 的处理效果被 agent 2 的行动混淆了。

(5)CAD-GRPO 的岭回归目标是啥?

假设在一个 batch 内部,团队奖励可以近似线性分解为各 agent 质量指标的加权和:

R(τ)μ+αb+i=1Nβiqi(τ)+ϵR(\tau) \approx \mu + \alpha_b + \sum_{i=1}^N \beta_i \cdot q_i(\tau) + \epsilon

其中:

  • μ\mu 是常数项
  • αb\alpha_b 是 prompt bb 的固定效应(控制不同问题难度带来的 baseline 差异)
  • qi(τ)q_i(\tau) 是 agent ii可验证质量指标(比如编译成功率、单元测试通过率、格式合规性等)
  • βi\beta_i 是我们要估计的 agent ii 对团队奖励的边际贡献系数
  • ϵ\epsilon 是残差

岭回归的目的就是用批次内样本去拟合这个线性模型,得到 β^\hat{\beta}。然后每个 agent 的去混淆优势定义为:

A^i(τ)=β^i(qi(τ)qˉi)baselinei\hat{A}_i(\tau) = \hat{\beta}_i \cdot (q_i(\tau) - \bar{q}_i) - \text{baseline}_i

β^i\hat{\beta}_i 捕获的是"当 agent ii 的质量 qiq_i 变化一个单位时,团队奖励平均变化多少"。这个信号扣除了其他 agent 贡献带来的污染,因为回归里已经把 qj (ji)q_j \ (j \neq i) 作为控制变量放进去了。

(6)“MAS 下是需要在 single-agent credit 之外多一步 per-agent credit 吗?岭回归怎么跨越两次回传?”

这是这个问题里最关键的一层,我想了好一会。我觉得其实有两个 credit assignment 是正交的问题:

我认为 CAD-GRPO 解决的只是 agent-level 的 credit,而没有讨论 action-level 或者说 token-level 的 credit。只是给每个 agent 单独估一个去混淆后的 advantage A^i\hat{A}_i,然后这个 A^i\hat{A}_i 在 policy update 的时候只作用于 agent ii 自己的 token 序列:

θiJ=E[tθilogπi(at(i)st)A^i(τ)]\nabla_{\theta_i} J = \mathbb{E}\left[\sum_{t} \nabla_{\theta_i} \log \pi_i(a_t^{(i)} | s_t) \cdot \hat{A}_i(\tau)\right]

因为每个 agent 有自己的 policy πi\pi_i(或者猜测可以共享参数但用 role-specific prompt),它只对自己那一段 token {at(i)}\{a_t^{(i)}\} 的概率做微分。所以 A^i\hat{A}_i 只会通过 θilogπi()\nabla_{\theta_i} \log \pi_i(\cdot) 这一条路径更新到 agent ii 的参数上,不会跨 agent 进行回传。policy update 就是标准的 per-agent policy gradient,每个 agent 只看自己的 A^i\hat{A}_i 和自己的 logπi\log \pi_i

(这里我也不完全确定"每个 agent 有独立 policy 还是 share parameters"这个细节在不同工作里的处理方式,SHARP 和 MHGPO 都是 shared policy + role prompt,下周可以再系统看一下。)

2.2 关于 RLHF 里的 reward model 表述

Q: RLHF 里面的 reward model 应该是通过构造的人类偏好数据集来学习对应的偏好,"先训一个 reward model 来捕获人类偏好"这个好像有点反了。这里可以思考 RL 里面的 value 和 reward 的区别,从而就知道为什么会有 reward hacking 了。

A: 上周周报里确实写得不够精确。当时写的是:

“RLHF 则高度依赖于迭代式、可扩展的人类评估和偏好数据,先训一个 reward model 来捕获人类偏好,然后用 PPO/GRPO 这类策略优化方法去最大化这个 reward”

严格来说应该是这样:

  1. 先构造人类偏好数据集 D={(x,y+,y)}\mathcal{D} = \{(x, y^+, y^-)\},其中 y+y^+ 是人类偏好的 response,yy^- 是较差的 response
  2. 再用这个数据集训一个 reward model rϕ(x,y)r_\phi(x, y),通常用 Bradley-Terry 损失:logσ(rϕ(x,y+)rϕ(x,y))-\log \sigma(r_\phi(x, y^+) - r_\phi(x, y^-))
  3. 最后用训好的 rϕr_\phi 当成 RL 的 reward signal,跑 PPO/GRPO 最大化 Eπ[rϕ(x,y)]\mathbb{E}_\pi[r_\phi(x, y)]

然后就是 value 和 reward 的本质区别。reward rtr_t 是环境在单步给出的即时信号,是外部定义的一个静态标量。value V(s)V(s)Q(s,a)Q(s, a) 是从状态 ss 出发按某个 policy 走下去能拿到的期望,是 policy-dependent 的:

Vπ(s)=Eπ[t=0γtrts0=s]V^\pi(s) = \mathbb{E}_\pi\left[\sum_{t=0}^{\infty} \gamma^t r_t \mid s_0 = s\right]

reward 是目标的局部信号,value 是 policy 真正在优化的东西。

为什么会 reward hacking?

rϕr_\phi 只是人类偏好的近似:

rϕ(x,y)rhuman(x,y) on training distributionr_\phi(x, y) \approx r_{\text{human}}(x, y) \text{ on training distribution}

这个近似只在训练分布内成立。一旦 policy 的优化驱动输出分布偏离训练分布过多,rϕr_\phi 的预测就可能完全失准:

  • Policy 在优化 E[rϕ]\mathbb{E}[r_\phi],不是 E[rhuman]\mathbb{E}[r_{\text{human}}]
  • 当 policy 找到 rϕr_\phi 的某个"漏洞"(比如某类词汇特别讨 reward model 喜欢、或者某种格式会被 reward model 误判为高质量),rϕr_\phi 的分数会飙高
  • 但实际上人类看了这些 response 可能觉得"啊这是什么玩意儿"——reward 上去了,用户满意度反而下降

这就是 Goodhart’s law 在 RL 里的体现:

When a measure becomes a target, it ceases to be a good measure.

这个问题在 multi-agent 场景下会更复杂——agent 级别的 reward hacking、tool-use 级别的 reward hacking、最终 response 级别的 reward hacking……所以 CAD-GRPO 强调了质量指标 qiq_i 的充分性。如果 qiq_i 本身是一个非常容易被 hack 的 proxy,那整个系统就会退化。


3. 概念理解(部分 AI 辅助整理)

3.1 Policy Gradient 方法整理

按时间线梳理了一下 policy gradient 系列的演进。

(1)REINFORCE(1992, Williams)

最朴素的 policy gradient,直接用 Monte Carlo return Gt=k=tTγktrkG_t = \sum_{k=t}^T \gamma^{k-t} r_k 当信号:

θJ(πθ)=Eτπθ[tθlogπθ(atst)Gt]\nabla_\theta J(\pi_\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\left[\sum_t \nabla_\theta \log \pi_\theta(a_t | s_t) \cdot G_t\right]

问题: GtG_t 方差巨大,基本没法直接用。

(2)Actor-Critic(1999, Konda & Tsitsiklis)

引入一个 critic Vϕ(s)V_\phi(s) 作为 baseline 来降方差,policy gradient 变成:

θJ=E[tθlogπθ(atst)(GtVϕ(st))]\nabla_\theta J = \mathbb{E}\left[\sum_t \nabla_\theta \log \pi_\theta(a_t | s_t) \cdot (G_t - V_\phi(s_t))\right]

(3)A2C / A3C(2016, Mnih et al.)

把 baseline 这件事做得更彻底——用 advantage A(st,at)=Q(st,at)V(st)A(s_t, a_t) = Q(s_t, a_t) - V(s_t) 替代 raw return 减 baseline。A3C 同时跑多个异步 worker 加速训练,A2C 是 A3C 的同步版本。

(4)TRPO(2015, Schulman et al.)

提出了一个重要的观察——policy 每次更新不能走得太远,否则容易 collapse。TRPO 通过显式的 trust region 约束(KL 散度上界)来限制每步更新的幅度:

maxθE[πθ(as)πθold(as)A(s,a)]s.t.  DKL(πθoldπθ)δ\max_\theta \mathbb{E}\left[\frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} A(s, a)\right] \quad \text{s.t.} \ \ D_{\text{KL}}(\pi_{\theta_{\text{old}}} \| \pi_\theta) \leq \delta

问题: 要解一个 constrained optimization,实现上很麻烦(要算 Fisher 信息矩阵、conjugate gradient 等)。

(5)PPO(2017, Schulman et al.)

用一个 clipped ratio 代替 TRPO 的 KL 约束,工程上友好很多:

LCLIP(θ)=E[min(rt(θ)At, clip(rt(θ),1ϵ,1+ϵ)At)]L^{\text{CLIP}}(\theta) = \mathbb{E}\left[\min\left(r_t(\theta) A_t, \ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t\right)\right]

其中 rt(θ)=πθ/πoldr_t(\theta) = \pi_\theta / \pi_{\text{old}} 是 importance ratio。clip 操作把 ratio 强行锁在 [1ϵ,1+ϵ][1-\epsilon, 1+\epsilon] 区间内,防止策略走太远。PPO 因为简单、稳定、好调,变成了当前(包括 LLM RL)事实上的默认算法。

(6)GRPO(2024, DeepSeek)

GRPO 的 motivation 是针对 LLM RL 这个场景的痛点:critic 很难训(long-horizon、sparse reward)。于是它直接去掉 critic,改用 group 内相对排名做 baseline:

AGRPO(τi)=riμGσGA^{\text{GRPO}}(\tau_i) = \frac{r_i - \mu_G}{\sigma_G}

剩下的 clip objective 和 PPO 完全一样。GRPO 在 DeepSeek-R1 的训练里被证明非常 work,之后变成了 reasoning-focused LLM RL 的默认选项。

(7)MAPPO / COMA / QMIX(多智能体 variants)

这几个是 multi-agent 场景下的延伸,主要针对 cooperative Dec-POMDP:

  • MAPPO (2022, Yu et al.): 就是把 PPO 搬到 multi-agent 上,用 centralized value function + decentralized policy(CTDE 范式)。surprisingly effective——很多 cooperative MARL benchmark 上 MAPPO 都能打平甚至超过专门设计的 MARL 算法。
  • COMA (2018, Foerster et al.):counterfactual baseline做 credit assignment,对每个 agent 估"如果我换一个 action,team reward 会怎么变"。这个思想就是 SHARP、CCPO 的祖师爷。
  • QMIX / VDN (2017, 2018): value decomposition 派的代表——把 joint Q-function 分解成各 agent Q-function 的某种组合(VDN 是求和,QMIX 是一个单调混合网络)。

从 critic → baseline → trust region → clip → group relative,其实都是在做方差缩减策略更新的稳定

3.2 GAE(Generalized Advantage Estimation)

PPO 的标配 advantage 估计方法,Schulman 他们 2015 年的工作。

背景: advantage 可以用 nn-step return 估计:

A^t(n)=rt+γrt+1++γn1rt+n1+γnV(st+n)V(st)\hat{A}_t^{(n)} = r_t + \gamma r_{t+1} + \cdots + \gamma^{n-1} r_{t+n-1} + \gamma^n V(s_{t+n}) - V(s_t)

  • nn 很小(比如 n=1n=1,TD(0)):低方差,高偏差(bias 由 critic VV 的质量决定)
  • nn 很大(nn \to \infty,MC):高方差,低偏差

GAE 的想法是对所有 nn-step advantage 做一个指数加权平均

A^tGAE(γ,λ)=l=0(γλ)lδt+l\hat{A}_t^{\text{GAE}(\gamma, \lambda)} = \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l}

其中 δt=rt+γV(st+1)V(st)\delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) 是 one-step TD error。参数 λ[0,1]\lambda \in [0, 1] 控制 bias-variance tradeoff:

  • λ=0\lambda = 0:纯 TD,A^t=δt\hat{A}_t = \delta_t,低方差高偏差
  • λ=1\lambda = 1:纯 MC,A^t=lγlrt+lV(st)\hat{A}_t = \sum_l \gamma^l r_{t+l} - V(s_t),高方差低偏差
  • 实际中 PPO 一般用 λ=0.95\lambda = 0.95 左右,两边折中

GRPO 没有 critic,所以 GRPO 也不涉及 GAE。但 GRPO 在 long-horizon 场景下 pure MC 方差会炸,会表现得不如 PPO,原因就是少了 GAE 的 λ<1\lambda < 1 平滑。


4. To-do

(1)复现 Claude Code 的 harness

一直想开工的一件事,估计一周肯定学不明白,可能要花的时间长一点,主要想学习 cc 的 tool-use loop、context management 和 multi-agent manage。

(2)继续读 credit assignment 相关论文

本周 survey 还没读完,初步决定下周读的东西:

  • CCPO (arXiv:2603.21563):申报书里第二个主要 baseline,要和 SHARP 一起横向对比
  • C3 (arXiv:2603.06859):contextual counterfactual credit,和 CCPO 思路相近但做 step-level
  • Dr.MAS (arXiv:2602.08847):zero-cost 但只做 normalization 不做分解,是 CAD-GRPO 要超越的 “baseline 下界”
  • MHGPO (arXiv:2506.02718):异构 agent 的 GRPO 分组策略(上周已经读过一遍,再过一遍做笔记)