GRPO:群体相对策略优化

一句话总结

GRPO(Group Relative Policy Optimization)是 DeepSeek 在 DeepSeekMath 中提出的强化学习算法,核心思想是丢掉 PPO 中的 Critic 模型,转而通过对同一问题采样多个输出,用群体平均奖励作为基线来计算优势函数,大幅降低训练资源需求。


一、背景:PPO 的问题

PPO 回顾

PPO 是一种 actor-critic 的 RL 算法,训练中需要 4 个模型

模型作用
Actor(策略模型)生成输出
Critic(价值模型)输出 value,估计基线
Reward Model对输出打分
Reference Model约束策略不偏离太远

PPO 的痛点

  • Critic 模型通常与策略模型规模相当,带来巨大的内存和计算负担
  • 优势函数需要通过 GAE(广义优势估计)计算,涉及复杂的 value 估计和 returns 拟合
  • 两个层面的迭代:策略迭代 + 价值估计迭代

二、GRPO 的核心思想

关键改变:用群体平均代替 Critic

GRPO 只需要 3 个模型(去掉了 Critic),通过以下方式计算优势:

  1. 对每个问题 ,从旧策略采样 G 个输出
  2. 用奖励模型对每个输出打分,得到 G 个奖励
  3. 计算群体均值和标准差,归一化奖励即为优势值

直觉理解

怎么评判一个员工是否优秀?拿他去和所有员工的平均水准对比——高于平均水准的便是好员工。GRPO 的优势函数就是这个逻辑。

实例:7 + 3*7 = ?

假设模型生成 4 个输出(G=4):

输出内容准确性奖励格式奖励总奖励
o1运算顺序错误,答案 7000.10.1
o2正确推理,答案 2810.11.1
o3答案正确但缺少 think 标签101.0
o4推理混乱,答案 700.10.1
  • 均值 = 0.575,标准差 0.5
  • o2 和 o3 优势为正 → 鼓励
  • o1 和 o4 优势为负 → 抑制

三、GRPO 目标函数

目标函数包含两层约束

部分约束对象作用
前半部分(clip)新策略 vs 旧策略策略迭代不要太激进
后半部分(KL)新策略 vs reference 策略不要偏离 SFT 模型太远

与 PPO 的 KL 处理差异

  • PPO:在奖励函数中添加 KL 惩罚(约束旧策略与 reference 之间),导致优势计算更复杂
  • GRPO:直接将 KL 散度加到目标函数中,避免了复杂的 GAE 优势计算

四、优势函数的三种设计

1. 结果监督(Outcome Supervision)

  • 奖励模型只看最终输出结果
  • 输出中所有 token 的优势值 = 归一化后的奖励

2. 过程监督(Process Supervision)

  • 奖励模型在每个推理步骤结束时提供奖励
  • 每个 token 的优势 = 后续所有步骤归一化奖励之和
  • 更适合复杂数学任务(需要 step-by-step 监督)

3. 迭代强化学习(Iterative RL)

  • 随着训练进展,旧的奖励模型可能不足以监督当前策略
  • 周期性地用新数据重新训练奖励模型

五、PPO vs GRPO 对比

维度PPOGRPO
模型数量4 个(Actor + Critic + RM + Ref)3 个(Actor + RM + Ref)
基线计算Critic 网络拟合 value群体平均奖励
优势函数GAE(复杂)归一化群体奖励(简单)
KL 约束位置奖励函数中目标函数中
训练资源高(需训练 Critic)低(无 Critic)
核心取舍用 Critic 降低方差用多次采样(G 个输出)降低方差

六、统一范式

SFT、RFT、DPO、PPO、GRPO 的梯度都可以写成统一形式:

三个关键组成部分:

组成部分含义
数据来源 训练数据从哪来
奖励函数训练奖励信号的来源
梯度系数 对数据惩罚或强化的幅度

七、DeepSeekMath 训练流程

DeepSeek-Coder-Base-v1.5 7B
    ↓ 预训练(120B 数学 token)
DeepSeekMath-Base 7B
    ↓ 指令微调(CoT + program-of-thought + tool-integrated reasoning)
DeepSeekMath-Instruct 7B
    ↓ GRPO 强化学习(144K 问题,G=64,lr=1e-6,KL系数=0.04)
DeepSeekMath-RL 7B

相关概念