Group Relative Policy Optimization
分组相对策略优化(Group Relative Policy Optimization, GRPO) 是 DeepSeekMath 在 2024 年提出的一种 PPO 变体。它的核心改动只有一个:不再训练独立的 value model,而是对同一个 prompt 采样一组(group) 输出,用组内 reward 的均值与标准差作为 baseline 计算每条输出的 advantage。这一改动在 LLM 场景下同时带来了显存节省(约 2 倍)、实现简化和训练稳定性提升,后来被 DeepSeek-R1 用于推理模型的 Zero-RL 训练,成为 推理模型 RL(Reasoning RL) 的事实标准算法之一。
核心洞见
PPO 在 LLM 上训练时存在一个结构性困难:只有整条 response 末尾才有非零 reward,中间 token 的 reward 全为 0。但 PPO 依赖 critic (见 value-model) 为每个中间 token 估计价值 ,这是一个极难学的量——要从稀疏末端信号中学会”给定一个不完整前缀,最终 reward 的条件期望”。结果是 critic 的估计方差大、训练不稳定、消耗显存又与 policy 相当。
GRPO 绕过这个问题的办法是不让 critic 去估计 value,而是直接对同一个 prompt 采样 条 response,用这 个末端 reward 的经验分布做 baseline。这是一个纯 Monte Carlo 的方案:只要 足够大(DeepSeekMath 取 64),组内均值就是对该 prompt 期望 reward 的无偏估计,用它做 baseline 既减方差又不引入 critic 的估计偏差。
目标函数
与 PPO 并列:
两个目标结构几乎一样,差别只在两处:
- 外层多了一重对 group 的平均:对同一 prompt 采样 条输出 ,每条独立计算 clipped policy loss,最后 group 内平均。
- KL 项直接写在 loss 里:PPO 通常把 KL 以 的形式减在 reward 里,GRPO 则作为 loss 的一个独立惩罚项出现。两种写法并不完全等价——GRPO 的做法让 advantage 计算更干净,见下节讨论。
Advantage 计算
GRPO 有两个变体,差别在 reward 的粒度。
Outcome Supervision(标准版)
给定组内 reward 向量 ,对每条 response 做组内 z-score 标准化:
整条 response 的所有 token 共享同一个 advantage:
这是最常见的用法,与 可验证奖励(RLVR)(见 reward-model) 配合时就是 DeepSeek-R1 的训练方式。
Process Supervision
如果有步骤级 reward(例如 PRM),记第 条 response 的第 步结尾 token 位置为 ,对应 reward 为 。先把所有样本的所有步骤 reward 一起做标准化,然后每个 token 的 advantage 是它之后所有步骤标准化 reward 的累和:
此时同一条 response 内不同 token 的 advantage 不再相同,更接近 PPO 的 per-token 估计。
KL 估计器
GRPO 使用 Schulman 提出的 k3 estimator(unbiased 且恒非负):
令 ,这个估计量就是 ,由 保证总是非负,方差也比朴素 的 MC 估计低。选择 k3 而非 k1/k2 的推导见 GRPO 非负 KL 估计器推导。
为什么 KL 放在 loss 里而不是 reward 里
PPO 的 “KL in reward” 写法相当于令 ,然后用修正后的 reward 计算 GAE。这会让 advantage 本身带上 KL 项,若 group 内某条 response 的 KL 偏离特别大,会污染组内标准化——该条 response 的 advantage 会被 KL 偏离而非真实 reward 主导。
GRPO 把 KL 单独写在 loss 的一项里,意味着:
- advantage 只反映真实 reward 的组内相对排名;
- KL 惩罚通过梯度的另一条路径施加,不进入 advantage 的计算;
- 配合 k3 估计器后,KL 项的数值总是非负,也避免了 reward 里出现负 KL 的诡异情况。
工程收益
| 维度 | PPO | GRPO |
|---|---|---|
| 训练时同时在显存中的模型 | 4:policy + critic + reward + reference | 2:policy + reference(reward 可 offline) |
| Critic 训练步 | 需要 | 不需要 |
| Advantage 计算 | GAE + critic | 组内 z-score |
| 每 prompt 采样数 | 1 也行 | 必须 条(典型 32 – 128) |
| KL 位置 | reward 里 | loss 里 |
| 典型实现复杂度 | 高 | 低 |
显存节省的直接来源是扔掉了与 policy 同规模的 critic。对 7B 模型来说,仅 critic 权重就需要约 14GB(fp16),如果考虑 Adam 状态则更多。
数值示例
考虑算术题 “Calculate “,正确答案 14。GRPO 对同一 采样 条 response,其中 4 条正确(reward=1)、4 条错误(reward=0):
| 指标 | 值 |
|---|---|
| Group mean | |
| Group std | |
| 正确 response 的 advantage | |
| 错误 response 的 advantage |
然后正确的 4 条被正向强化,错误的 4 条被负向抑制,clip 机制防止单次更新过大。若所有 8 条都对(或都错),std 为 0,需要加一个小常数 做稳定,此时该 prompt 贡献的梯度近似为 0——这类”零方差”样本不提供学习信号,是 GRPO 训练早期常见的问题。
典型超参数
| 超参数 | DeepSeekMath 取值 | 说明 |
|---|---|---|
| (group size) | 64 | 越大 advantage 越稳,显存越贵 |
| (clip) | 0.2 | 沿用 PPO |
| (KL 系数) | 0.04 | KL 惩罚强度 |
| (每批更新次数) | 1 | 取 1 时 ,ratio ≡ 1,clip 实际不生效 |
| Batch size | 1024 | 16 prompt × 64 group |
当 时 GRPO 退化为”REINFORCE with group baseline + KL 正则”,很多 open-source 实现正是这样用的。只有在 (同批重复更新)时 clip 才真正起作用。
与 DeepSeek-R1 / RLVR 的关系
有一个常见误解:GRPO = 不用 reward model。但严格来说:
- GRPO 本身只去掉 critic。DeepSeekMath 原论文仍然使用学习型 reward model 给每条 response 打分,然后在组内做 z-score。
- DeepSeek-R1 进一步把 reward model 也去掉,完全用 可验证奖励(RLVR)(数学答案对错 + 格式检查)代替。这是两个独立的设计选择。
- “GRPO + RLVR” 的组合流行度很高,以至于人们常把这个组合误当成 GRPO 本身。
更多讨论见 reward-model 的 RLVR 节与 zero-rl-for-reasoning-models。
实践 gotcha
- group size 不能太小:baseline 完全来自组内统计, 时 advantage 方差会爆炸。
- 全对或全错 prompt 的梯度消失:std 为 0,advantage 全 0,该样本对学习无贡献。部分实现会直接丢弃这类样本,DAPO 等后续工作对此做了专门处理。
- KL 估计器选错会挂:用朴素 可能产生负 KL,导致训练崩溃。务必用 k3 估计器。
- 与 PPO 的 KL 不等价:若有人尝试把 GRPO “改回” KL-in-reward 形式,会发现 advantage 的物理含义变了。两种写法并不互相兼容。
- off-policy 漂移:多轮 rollout 与训练异步时, 与当前 的差异会随时间累积,与 异策略 场景下的分布偏差问题类似。在 multi-turn-rl 等复杂设置下更明显。
参考资料
- DeepSeekMath: Pushing the Limits of Mathematical Reasoning (Shao et al., 2024)
- DeepSeek-R1 (2025)
- Group Relative Policy Optimization (GRPO) - Cameron R. Wolfe
- A Vision Researcher’s Guide to Some RL Stuff: PPO & GRPO - Yuge Shi
- Advanced Understanding of GRPO in DeepSeekMath - HuggingFace LLM Course
- RLHF Book Ch.6: Policy Gradients - Nathan Lambert
Comments