移除 Critic 网络

无需训练额外的价值网络(Critic),大幅降低了显存占用(约节省 50%),使得在相同硬件下可训练更大规模的模型。

群组归一化

通过对一组(Group)输出的奖励进行归一化处理,替代了传统优势函数(Advantage)的估计,实现更稳定的策略更新。

高效推理

专为 LLM 推理任务优化,在数学推理、代码生成等任务上展现出超越 PPO 的性能和效率。

GRPO 算法原理

传统的 PPO 算法依赖于 Actor-Critic 架构,其中 Critic 网络用于估计状态价值 $V(s)$,以此计算优势函数。然而,对于千亿参数级别的 LLM,维持一个同样规模的 Critic 网络是非常昂贵的。

GRPO 提出了一种无需 Critic 的方法。它的核心思想是:对于同一个输入提示(Prompt)$q$,让模型生成一组输出 $\{o_1, o_2, ..., o_G\}$,然后利用这组输出的相对好坏来指导更新。

$$ \text{Advantage}_i = \frac{r_i - \text{mean}(\{r_1...r_G\})}{\text{std}(\{r_1...r_G\})} $$

其中 $r_i$ 是第 $i$ 个输出的奖励。如果一个输出的奖励高于组内平均值,它的 Advantage 就是正的,模型会增加生成该输出的概率;反之则减少。

GRPO vs PPO

特性 PPO (Proximal Policy Optimization) GRPO (Group Relative Policy Optimization)
模型架构 Actor (策略) + Critic (价值) 仅 Actor (无需 Critic)
显存开销 高 (需加载 Critic 和优化器状态) 低 (节省约 50% 显存)
优势估计 GAE (基于 Value Function) 群组内相对归一化 (Group Normalization)
适用场景 通用 RL (游戏、机器人、NLP) 专注于 LLM 推理与生成任务

KL 散度约束

为了防止模型在训练过程中“遗忘”原有的知识或生成乱码,GRPO 同样在损失函数中引入了 KL 散度惩罚项。

$$ L_{GRPO}(\theta) = \mathbb{E} \left[ \frac{1}{G} \sum_{i=1}^G \left( \min \left( \frac{\pi_\theta(o_i|q)}{\pi_{old}(o_i|q)} A_i, \text{clip}(...) A_i \right) - \beta D_{KL}(\pi_\theta || \pi_{ref}) \right) \right] $$

这确保了经过强化学习微调后的模型 $\pi_\theta$ 不会偏离参考模型 $\pi_{ref}$(通常是 SFT 后的模型)太远。