GRPO 三层解读:DeepSeek-R1 背后的训练秘诀
选择 GRPO(Group Relative Policy Optimization)作为今天的主题——它是 DeepSeek-R1 背后让模型涌现出推理能力的关键算法,也是当前强化学习训练 LLM 的最热门方向之一。
🟢 入门:一场没有标准答案的考试
Section titled “🟢 入门:一场没有标准答案的考试”想象一个老师想让学生们学会独立思考。她不直接教解题步骤,而是给全班出一道难题,每个人用自己的方法去解。交卷后,老师不看标准答案(因为太难了,连老师也不确定),而是把所有答案放在一起比较——谁的思路更清晰、谁的步骤更完整、谁的结果更合理,就在这些方面打分高的同学身上多给些奖励。
关键的是:奖励是相对的。没有「满分」,只有「比多数同学更好」。就算所有人的答案都不完美,相对最好的那几个依然能获得正反馈。
这恰恰就是 GRPO 的核心思想。传统方法需要一个「裁判模型」来给每个回答打绝对分,这既贵又不准。GRPO 说:不需要裁判,让一群答案互相比较就够了。模型通过「看看哪种回答比其他回答更好」来学习,就像学生们通过对比彼此的试卷来进步。
这就是为什么 DeepSeek-R1 能自己学会思考——它不需要人类一步步教它「思维链该怎么写」,只需要通过大量练习和相对比较,自然而然地涌现出推理能力。
🟡 中级:从 PPO 到 GRPO 的进化
Section titled “🟡 中级:从 PPO 到 GRPO 的进化”问题:PPO 太贵了
Section titled “问题:PPO 太贵了”在 GRPO 出现之前,训练 LLM 最主流的强化学习方法是 PPO(Proximal Policy Optimization)。PPO 需要四个组件协同工作:
- 策略模型(Actor):生成回答的 LLM
- 价值模型(Critic):评估每个状态的价值
- 奖励模型(Reward Model):给完整回答打分
- 参考模型(Reference Model):防止模型偏离太远
问题在于:Critic 模型几乎和 Actor 一样大。训练两个大模型内存开销巨大,而且 Critic 的训练本身就很不稳定。
GRPO 的解法:砍掉 Critic
Section titled “GRPO 的解法:砍掉 Critic”GRPO 的核心洞察是:对于 LLM 的强化学习,我们不需要精确的状态价值估计,只需要相对排名就够了。
具体做法:
- 对每个问题 q,用当前策略生成一组回答 o_1, o_2, …, o_G
- 用奖励函数(可以是规则、模型、或结果验证)给每个回答打分 r_1, r_2, …, r_G
- 在这组回答内部做标准化,得到相对优势 A_i = (r_i - mean(r)) / std(r)
- 用这些相对优势直接更新策略,不再需要 Critic
- 显存减半:不用维护 Critic 模型
- 更稳定:组内标准化天然消除了奖励尺度的波动
- 更灵活:奖励可以是任何可计算的信号(代码运行结果、数学验证、格式检查等),不依赖一个统一的 Reward Model
DeepSeek-R1 的训练流程是:先用 GRPO + 规则奖励(数学题对错、代码能否运行)让基础模型涌现出 CoT 能力,再用 SFT + GRPO 的混合策略进一步精调。整个过程没有使用传统的大型 Reward Model。
🔴 高级:数学推导与工程细节
Section titled “🔴 高级:数学推导与工程细节”GRPO 优化的是带 KL 惩罚的策略梯度目标。核心是对每个问题采样 G 个回答,计算相对优势,然后用 PPO 风格的 clip 目标更新策略:
J(θ) = E[ (1/G) Σ min(ρ_i · Â_i, clip(ρ_i, 1-ε, 1+ε) · Â_i) - β · KL(π_θ ‖ π_ref) ]
其中 ρ_i = π_θ(o_i|q) / π_old(o_i|q),Â_i = (r_i - mean(r)) / std(r)
与 PPO 的关键区别
Section titled “与 PPO 的关键区别”| 维度 | PPO | GRPO |
|---|---|---|
| 优势估计 | Critic 网络 V(s) | 组内相对标准化 |
| 额外参数量 | ~2x(Actor + Critic) | 1x(仅 Actor) |
| 奖励类型 | 需要标量 Reward Model | 任意可计算信号 |
| 方差 | 依赖 Critic 质量 | 组内标准化天然降方差 |
采样策略与方差分析
Section titled “采样策略与方差分析”GRPO 的方差来源主要是组内采样噪声。设 G 为组大小:
- G 越大,优势估计越准确,但计算成本越高
- DeepSeek-R1 实践中 G 通常取 16-64
- 当奖励信号是确定性的(如数学题的对错),即使 G 较小也能收敛
一个常被忽视的细节:GRPO 的组内标准化隐含了一个假设——同一问题下的回答质量近似正态分布。对于多模态奖励(如同时考虑格式、正确性、效率),这个假设可能不成立,此时可以使用 rank-based 标准化替代。
- KL 散度计算:实际实现中常用 token 级别的 KL 散度,即对每个 token 的 logits 差异求和,而非整体序列的 KL
- 奖励裁剪:对极端奖励值做 clamp,防止单个 outlier 主导梯度
- 多阶段训练:先 GRPO 涌现能力 → 过滤高质量数据 → SFT → 再 GRPO 精调
- 与 Self-Play 结合:在对抗性场景中,可以用对手的失败作为己方的奖励信号
- 奖励 hacking:组内优化可能导致模型学会「钻空子」——在组内相对更好但不绝对更好的策略
- 多目标权衡:当有多个奖励信号时,如何加权仍是经验性的
- 与蒸馏的关系:GRPO 训练出的强模型能否有效蒸馏到小模型?DeepSeek-R1 的蒸馏实验给出了肯定答案,但理论上仍不完善
本文是金豆「三层解读」系列的一部分,旨在让不同背景的读者都能理解 AI 前沿概念。