GRPO:DeepSeek 提出的群体相对策略优化
GRPO(Group Relative Policy Optimization)是 DeepSeek 在训练 DeepSeek-R1 等模型时提出的对齐算法。它通过群体采样和相对奖励机制,同时获得了 PPO 的在线学习能力和 DPO 的训练简洁性。
GRPO 解决了什么问题?
回顾现有对齐算法的不足:
PPO 的问题:
- 需要训练单独的奖励模型和价值模型
- 同时加载 4 个模型,显存占用大
- 超参数敏感,训练不稳定
DPO 的问题:
- 使用离线数据,无法在线探索
- 随着策略更新,训练数据分布偏移
- 在推理密集型任务(如数学、代码)上效果有限
GRPO 的目标:
- 不需要价值模型(减少显存)
- 使用群体采样获取在线信号
- 用相对奖励替代绝对奖励(更稳定)
GRPO 的核心思想
1. 群体采样
对同一个问题,让模型生成一组(Group)多个回答:
群体采样示例:
问题: "计算 1+2+3+...+100"
模型生成 8 个回答(Group Size = 8):
回答 1: "5050" ✓
回答 2: "5050" ✓
回答 3: "4950" ✗
回答 4: "5050" ✓
回答 5: "5100" ✗
回答 6: "5050" ✓
回答 7: "5050" ✓
回答 8: "5050" ✓
通过规则验证或奖励模型给每个回答打分
2. 相对奖励
不使用绝对分数,而是用群体内的相对排名作为奖励信号:
相对奖励计算(组内标准化):
原始分数: [1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0]
均值: μ = 0.75
标准差: σ = 0.43
相对奖励 = (原始分数 - μ) / σ
= [0.58, 0.58, -1.74, 0.58, -1.74, 0.58, 0.58, 0.58]
含义:高于平均的回答获得正奖励,低于平均的获得负奖励
GRPO 的算法流程
GRPO 训练循环:
For each 问题 x:
1. 用当前策略 π_θ 生成 G 个回答 {y_1, y_2, ..., y_G}
2. 用奖励函数(规则验证或奖励模型)打分 {r_1, r_2, ..., r_G}
3. 计算组内相对优势:
Â_i = (r_i - mean(r)) / std(r)
4. 对每个回答计算重要性采样比率:
ratio_i = π_θ(y_i|x) / π_old(y_i|x)
5. PPO 风格的裁剪目标:
L_i = min(ratio_i × Â_i, clip(ratio_i, 1-ε, 1+ε) × Â_i)
6. 总损失:L = -mean(L_i) + β × KL(π_θ || π_ref)
用梯度下降更新 π_θ
GRPO vs PPO vs DPO
| 特性 | PPO | DPO | GRPO |
|---|---|---|---|
| 需要价值模型 | ✅ 需要 | ❌ 不需要 | ❌ 不需要 |
| 需要奖励模型 | ✅ 需要 | ❌ 不需要 | 可选(可用规则验证) |
| 数据方式 | 在线生成 | 离线数据集 | 在线群体采样 |
| 奖励信号 | 绝对分数 | 偏好对 | 组内相对排名 |
| 显存占用 | 4 个模型 | 2 个模型 | 2~3 个模型 |
| 训练稳定性 | 差 | 好 | 好 |
| 推理任务效果 | 好 | 一般 | 好 |
GRPO 在 DeepSeek 模型中的应用
DeepSeek 在其推理模型(如 DeepSeek-R1)中大量使用了 GRPO:
DeepSeek-R1 训练流程:
阶段 1: 冷启动 SFT
用少量高质量推理数据微调
阶段 2: GRPO 强化学习
- 数学/代码任务:用规则验证器作为奖励(答案对错)
- 通用任务:用奖励模型打分
- 群体大小 G=8~64
- 相对奖励提供稳定的梯度信号
阶段 3: 拒绝采样 + SFT
从 GRPO 模型中采样优质回答,再次微调
阶段 4: 最终 GRPO 对齐
用全场景数据做最终对齐
GRPO 的优势总结
- 无需价值模型:节省显存,简化训练流程
- 群体相对奖励:消除奖励尺度敏感性,训练更稳定
- 在线探索:避免 DPO 的分布偏移问题
- 规则验证友好:数学、代码等任务可直接用规则验证,无需训练奖励模型
- 扩展性好:群体大小可灵活调整,平衡计算成本与信号质量
总结
GRPO 通过群体采样和相对奖励两个核心创新,在 PPO 的在线学习框架基础上大幅简化了训练流程。它不需要价值模型,奖励信号更稳定,特别适合推理密集型任务。作为 DeepSeek 系列模型的核心对齐算法,GRPO 展示了对齐技术的又一个进化方向。