Group Relative Policy Optimization (GRPO)
DeepSeek R1 背后的关键强化学习算法,开启大语言模型高效推理新时代。
移除 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\}$,然后利用这组输出的相对好坏来指导更新。
其中 $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 散度惩罚项。
这确保了经过强化学习微调后的模型 $\pi_\theta$ 不会偏离参考模型 $\pi_{ref}$(通常是 SFT 后的模型)太远。