GRPO

http://arxiv.org/abs/2402.03300

GRPO

Group Relative Policy Optimization

GRPO vs PPO

PPO的问题:

PPO最大化的目标函数: PPO

GRPO最大化的目标函数:

GRPO

对比:

  1. GRPO 没有 Critic 模型。对于同一个问题 q,它会从旧策略πθold中采样生成 一组(Group)G 个不同的输出{o1,o2,...,oG}。

    • 优势A^i的计算是基于这组输出的奖励{r1,r2,...,rG}进行标准化得来的:

  2. PPO 通常使用 GAE (Generalized Advantage Estimation) 来平衡偏差和方差,这需要对每一个时间步 t 都有一个价值估计 V(st)。由于 GRPO 放弃了价值模型,因此无法使用 GAE,而是采用了 Group Computation(组计算):

    • 对于每一个输出o_i, 通过上述公式计算得到A^_i, 最后输出为一组 G 个优势值 {A1,A2,...,AG}
  3. 在PPO的Loss Function中没有包含(−βDKL)这部分

    • PPO 为什么通常不直接在 Loss 里减 KL? 在 PPO(以及 RLHF 的标准做法)中,KL 惩罚通常被加在奖励函数 (Reward) 里,即 KL|250

    • GRPO 为什么要直接减 KL? KL|350

      1. 没有价值函数:GRPO 不需要训练价值函数,所以不需要通过修改 Reward 来“通知”价值函数关于 KL 的惩罚。

      2. 计算稳定性:在 GRPO 中,优势 A^ 是通过 (r - mean) / std 计算的。如果把 KL 惩罚加在 r 里面,那么 KL 项也会被除以 std。这意味着 KL 惩罚的力度会随着组内奖励的方差(std)剧烈波动(方差小惩罚就极大,方差大惩罚就极小),这会导致训练极其不稳定。

GRPO Algorithm:


PS.

  1. PPO中为什么引入了Importance Sampling 在数学上,我们希望最大化新策略 π_θ 下的期望奖励 J(θ)=E_τ∼π_θ[R(τ)]。但我们手里只有从旧策略 π_θ_old 采样出来的轨迹。 利用重要性采样,我们可以将期望的计算方式进行转换:
∇J(θ)=E_x∼π_θ_old[π_θ(x)π_θ_old(x)∇log⁡πθ(x)A(x)]
  1. GRPO的优点

    1. 极致的资源效率:不需要 Critic 模型。这使得你可以用同样的显存训练更大的模型,或者用更大的 Batch Size。

    2. 训练稳定性:通过组内标准化(Normalization),自动适应了不同 prompt 的难度差异,消除了奖励尺度的影响。

    3. 实现简单:省去了 Critic 的网络构建、初始化、前向推理和反向传播代码,流程更清爽。

    4. 无需训练价值函数:规避了“价值估计偏差”的问题,直接利用采样的经验均值。