先记住一句话

GRPO 的关键不是一个新 clip,而是“同一问题的多个回答互为 baseline”:比同组平均更好的回答增概率,更差的降概率。

同 prompt 采 G 个回答逐个打分组内中心化/标准化复算 log-prob ratioclip + KL更新后重采样
One promptx
Groupy¹…yᴳ
Rewardsr¹…rᴳ
RelativeAⁱ=(rⁱ−mean)/std
Policy updateratio·A
组 baseline 自动控制题目难度:比较的是同一 prompt 下回答之间的相对质量。

1. 为什么想去掉 Critic

LLM PPO 需要训练一个与 actor 同量级或共享 backbone 的 value function,还要让稀疏 sequence reward 对应到每个 prefix value。若同一 prompt 能便宜地生成多条回答并自动评分,可以直接用组内比较消除 prompt 难度,省掉 critic。

2. 一次 GRPO batch

for prompt x in batch:
    sample G responses y₁...yG from old policy
    score rewards r₁...rG
    μ, σ = mean(r), std(r)
    Aᵢ = (rᵢ - μ) / (σ + ε)

recompute token log-probs under current policy
optimize clipped ratios × Aᵢ, plus optional reference KL
repeat with fresh on-policy-ish rollouts

相同 prompt 使 baseline 条件化在题目上:一道难题的“局部最好”仍可获得正 advantage,一道简单题中低于同伴的回答仍为负。

3. 目标函数看什么

ρᵢ,t(θ) = πθ(yᵢ,t|x,yᵢ,<t) / πold(yᵢ,t|x,yᵢ,<t)
Lclip = E[min(ρᵢ,t Aᵢ, clip(ρᵢ,t,1−ε,1+ε) Aᵢ)]

若只有 final outcome reward,常把 response-level Aᵢ 用在所有有效 completion tokens;再加 reference KL 或将 KL 写成 reward penalty。positive advantage 时 ratio 上界阻止一步暴涨;negative advantage 时相反边界阻止过度压低。

4. 与 PPO 的关系

PPO + GAEGRPO
baselinelearned value V(s_t)同 prompt 的 group reward
advantage 粒度通常逐时间步经典形式多为整条 response 相同
额外模型critic/value无需 critic
主要成本value forward/backward 与 rollout每 prompt 的 G 条 rollout
适用 rewarddense 或 sparse同输入可比较的多样本 reward

GRPO 不是“PPO 的通用升级版”。机器人 continuous-control trajectory 很长、环境样本昂贵时,为每个初态采一组完整 rollout 未必划算;critic 反而能跨状态泛化。

5. 组内标准化的边界

  • 全组同分:σ≈0,所有 advantage 接近 0,没有学习信号;
  • group 太小:mean/std 噪声大,单个异常 reward 支配更新;
  • 二元 reward:只有组内同时有成败才有强信号,任务过难或过易都会稀疏;
  • 相对而非绝对:它优化同组排序,不自动保证 calibrated value;
  • 长度效应:按 token 还是按 sequence 聚合 loss,会改变长回答权重。

6. “GRPO”现在是一族实现

不同代码可能在 reward normalization、token/sequence aggregation、importance ratio、KL estimator、clipping 上不同。读配置时至少问:

  1. advantage 是按 prompt group、整个 batch,还是不除标准差?
  2. ratio 是逐 token 还是 sequence-level?loss 先 token 平均还是 response 平均?
  3. rollout engine 保存的 old log-prob 是否与训练端一致?
  4. KL 在 objective 外直接加、并入 reward,还是完全不用?
  5. 多次 epoch 后 rollout 有多 stale?

7. 训练失败怎样定位

现象优先检查
reward 不动zero-variance group 比例、任务难度、采样温度、verifier
reward 升但 eval 降reward hacking、长度/格式、训练集记忆
KL/clipfrac 暴涨LR、epochs、old log-prob 精度与 rollout staleness
entropy 快速塌缩探索不足、组内多样性、reward scale
loss 看似正常但不学习completion mask、sign、detached advantage、全组同分

8. 一个最小检查清单

同时画 raw reward mean/std、每题全同分比例、pass rate、response length、entropy、reference KL、clip fraction,以及 update 前 current/old ratio。若两者本应同一 policy,第一步 ratio 应非常接近 1。

9. 四个 GRPO 手算

例 1:group-relative advantages

同题 4 个 rewards=[1,1,0,0],mean=0.5,population std=0.5,所以 standardized advantages=[1,1,−1,−1]。绝对 reward 只取 0/1,也能产生正负学习信号。

例 2:全组相同没有信号

Rewards=[1,1,1,1] 时 mean=1、std=0。实现加 ε 避免除零,但 numerator 全为 0,所以 advantages 都为 0;全对题几乎不给相对 policy gradient。

例 3:ratio clipping

某正 advantage=1.5,old probability=0.10、new=0.14,ratio=1.4。ε=0.2 时 clipped contribution=1.2×1.5=1.8,小于未裁剪 2.1。

例 4:group decode 成本

128 prompts、group size G=16、平均 1024 output tokens,总 rollout=128×16×1024=2,097,152 tokens。G 从 8 翻到 16,critic 没变但 decode 近似翻倍。

常见误解:

“critic-free”不等于“低成本”。它减少 value model 显存与训练复杂度,却需要 G 倍候选来得到组内 baseline;在长 chain-of-thought 中,decode 往往才是主要吞吐瓶颈。

自测

1. 为什么要同一 prompt 成组采样?

这样 reward 差主要反映回答质量,而不是题目本身难度,组均值可充当 prompt-conditioned baseline。

2. 一组回答都正确会发生什么?

组内 reward 方差为零,标准化 advantage 接近零,这组几乎不给 policy gradient。

3. 为什么 ratio 在第一次 update 前应接近 1?

current policy 尚未更新,应与生成 rollout 的 old policy 相同;明显偏离通常说明 serving/training log-prob 或精度不一致。

一手资料

DeepSeekMath 提出 GRPO,以 group score 构造相对 advantage 并避免同尺寸 critic;PPO 的 clipped surrogate 来自原始 PPO 论文