GRPO:DeepSeek 用来训练推理模型的「去 Critic」强化学习方法
GRPO(Group Relative Policy Optimization)是 DeepSeek 在 DeepSeek-Math 和 DeepSeek-R1 中使用的强化学习算法。 它把 PPO 里的价值网络(Critic)砍掉,改用「一组采样取相对排名」来估计优势函数,显著降低训练成本。 这是开源社区能复现 o1 式推理模型的关键一步——不需要巨大的 critic,也能训出会反思的模型。
一句话结论
GRPO 去掉了 PPO 里最贵也最难训的价值网络,靠「同一题采样多个答案、用组内相对好坏当基线」来估计优势函数,让中小团队也能用 RL 训出会做数学题、会自我反思的推理模型。
背景问题
要训练一个能在数学、代码上做长链推理的模型,主流路径是强化学习:让模型对一道题生成多个答案,对的给奖励、错的给惩罚,然后更新策略。OpenAI 的 o1 把这条路推到了新高度,但其训练细节未公开。
在 RLHF/RL 领域,PPO 长期是默认选择。PPO 的核心是优势函数(advantage)——衡量「这个动作比平均水平好多少」,需要一个价值网络(critic)去估计这个「平均水平」。问题来了:
- Critic 和 Policy 一样大。一个 67B 的策略模型就要配一个 67B 的 critic,显存和算力直接翻倍。
- Critic 很难训好。token 级别的价值估计方差大、收敛慢,尤其在数学推理这种奖励稀疏、延迟的场景里,critic 经常学崩。
- 工程复杂。两套模型、两套梯度、两套优化器,链路越长越容易出问题。
DeepSeek 在做 DeepSeek-Math 时就撞上了这堵墙:他们发现 critic 训练消耗巨大却收益有限,于是干脆问了一个大胆的问题——能不能不要 critic?
核心思路
GRPO 的思路朴素得近乎简单:既然 critic 的作用是给一个「基准」来算相对优势,那我直接用同一道题的多个采样答案互相比较,不就有基准了吗?
具体来说,对于一道题 $q$,从当前策略 $\pi_{\theta_{\text{old}}}$ 里采样 $G$ 个不同的回答 ${o_1, o_2, \dots, o_G}$。用奖励模型(或规则)给每个回答打分 $r_1, \dots, r_G$。然后把这组的均值和标准差当作基线:
$$ \tilde{A}_i = \frac{r_i - \mathrm{mean}(\mathbf{r})}{\mathrm{std}(\mathbf{r})} $$
这个 $\tilde{A}_i$ 就是第 $i$ 个回答的优势——比组内平均好就是正、差就是负,再用标准化让它数值稳定。没有一个额外网络参与。
剩下的部分和 PPO 几乎一样:用 clipped surrogate objective 限制策略更新幅度,加上对参考模型 $\pi_{\text{ref}}$ 的 KL 散度约束防止跑飞:
$$ \mathcal{J}{\text{GRPO}}(\theta) = \mathbb{E}\left[\frac{1}{G}\sum{i=1}^{G}\frac{1}{|o_i|}\sum_t \min\left(\rho_{i,t}\tilde{A}{i},\ \mathrm{clip}(\rho{i,t},1-\epsilon,1+\epsilon)\tilde{A}{i}\right) - \beta,D{KL}(\pi_\theta|\pi_{\text{ref}})\right] $$
其中 $\rho_{i,t} = \pi_\theta(o_{i,t}\mid q,o_{i,<t})/\pi_{\theta_{\text{old}}}(o_{i,t}\mid q,o_{i,<t})$ 是重要性采样比率。
一句话概括:把 PPO 的「critic 估基线」换成「组内采样估基线」,其余照搬。
关键技术点
1. 组采样是基础,也是约束
GRPO 的有效性强依赖「一组里的回答质量有差异」。如果模型已经很强、同一题采样 8 次答案全对(或全错),那么组内 std 趋近 0,优势信号就消失了。这意味着:
- 早期(模型弱、答案有对有错)GRPO 信号最丰富,这正是训练最需要信号的时候。
- 后期模型变强后需要靠难度更高的题、或更细粒度的奖励(如过程奖励 PRM)来制造区分度,否则训练会停滞。
这也是为什么 DeepSeek-R1 的训练曲线在中后期对数据难度极其敏感。
2. 奖励可以是规则,不必是模型
数学题能直接判对错、代码题能跑测试用例。DeepSeek-R1-Zero 甚至完全没用奖励模型,只用规则奖励(答案对错 + 格式规范),就训出了会自我验证、会反思的推理行为。
这是 GRPO 路线一个被低估的优势:在可验证的任务上,它绕开了奖励模型这个 RLHF 的老大难——奖励模型又贵又会「被 hack」。当然,代价是它对开放域对话等不可验证任务没那么直接。
3. KL 约束的位置有讲究
标准 RLHF 把 KL 加在损失里,会让模型始终被参考模型「拉住」。GRPO 给了一个可选项:把 KL 直接混进奖励(reward shaping)而不是加在 loss 里。DeepSeek 的实验显示这两种写法效果接近,但混进 reward 的版本实现更简单、和推理时无 KL 的情况更一致。
4. 省的不只是显存
去掉 critic 之后省的不止一半显存,还有:
- 无需训练 critic 的算力(通常和 policy 一个量级);
- 无需 critic 的 rollout(PPO 要给 critic 喂数据);
- 调参面大幅缩小(critic 的学习率、loss 权重、clip 等一整套超参消失)。
这让 GRPO 的复现门槛远低于 PPO,也是它能在开源社区快速铺开的主因。
效果与局限
效果:
- DeepSeek-Math 7B 用 GRPO 在 MATH 基准上把分数从基础模型的 ~30% 拉到 ~50%+,验证了「去 critic」的可行性。
- DeepSeek-R1 用 GRPO + 冷启动数据,达到与 OpenAI o1 相当的推理水平,并以 R1-Zero 证明了「纯 RL、零 SFT 冷启动」也能涌现反思行为(
<think>标签、自我验证)。 - 在 AIME、Codeforces 等可验证任务上,GRPO 训出的模型明显优于同体量的 SFT-only 模型。
局限:
- 依赖可验证奖励。在开放域、主观任务上,组内相对排名需要奖励模型,而奖励模型本身又有偏差,优势会被放大。
- 组内方差塌缩。模型变强后组内答案趋同,需要持续引入难题或 PRM 来维持信号。
- 样本效率不如带 critic 的方法。每个 prompt 要采样多个回答,token 开销大;有研究指出在固定 token 预算下,带良好 critic 的 PPO 可能更高效。
- 对数据质量敏感。GRPO 不会凭空创造能力,它放大的是基础模型已有的「潜力」,所以 SFT 冷启动数据的质量仍决定上限。
谁该关心
- 做推理模型 / 数学代码模型的人:GRPO 是当前最务实的 RL 路线,DeepSeek-R1 的开源权重和报告是必读。
- RLHF 工程师:如果你正在被 critic 训练折磨,GRPO 是一个值得严肃评估的替代方案,尤其在奖励可验证的场景。
- 中小团队:没有算力同时跑 policy + critic 的团队,GRPO 让你用一半资源跑起 RL。
- 研究对齐的人:R1-Zero 展现的「纯 RL 涌现反思」是个重要现象,它对「能力是 RL 涌现的还是 SFT 教的」这个根本问题提供了新证据。
一句话提醒:GRPO 不是银弹,它在可验证任务上是目前最好的性价比之选,但在开放对话、安全对齐上仍需配合奖励模型,且对数据难度曲线有要求。把它当工具用,而不是当信仰。
