跳转到内容

GRPO 与可验证奖励:推理模型的训练

对数学、代码等可自动验证的任务,用规则奖励替代奖励模型;GRPO 去掉价值网络,用同一提示下多次采样的组内相对优势作为基线。本章讲 GRPO 的目标函数、与 REINFORCE 基线方法的关系、长思维链的涌现,以及 DAPO 等后续改进。

奖励黑客的主要来源是学出来的奖励模型(它有漏洞,会被利用,→ 奖励黑客与对齐税)。对数学、代码这类任务,存在可自动验证的奖励:答案对不对可以程序判定(标准答案比对、单元测试)。RLVR(RL with Verifiable Rewards)用规则奖励替代奖励模型——

  • 奖励是真的(验证即真值),不会被利用出"冗长谄媚"式的漏洞;
  • 奖励模型不可学的维度(答案的正确性)现在可学。

代价:只适用于有客观对错的任务;开放式任务(写作、对话)仍需学出来的奖励。数学与代码因此成为推理模型(o1、DeepSeek-R1)的主训练场。

GRPO(Group Relative Policy Optimization, Shao et al., 2024,DeepSeekMath)对 PPO 的简化:去掉价值网络。价值网络是 PPO for LLM 中显存与工程压力的最大来源(→ PPO for LLM),GRPO 用"同一提示下采一组回复"替代它:

  1. 对每个提示 xx,从当前策略采 一组 GG 条回复 y1,…,yGy_1, \dots, y_G;
  2. 每条回复得到奖励 rir_i(可验证奖励 + 可选的格式奖励);
  3. 组内归一化作为优势:

A^i=ri−mean(r1,…,rG)std(r1,…,rG).\hat{A}_i = \frac{r_i - \text{mean}(r_1, \dots, r_G)}{\text{std}(r_1, \dots, r_G)}.

直觉:每个提示自己当自己的基线——"这条回复比同一提示下的平均水平好多少",不需要跨提示的价值函数。这正是 REINFORCE 基线方法的组内版本(基线降低方差不引入偏差,→ 策略梯度定理与 REINFORCE),也是 PPO-clip 目标的直接套用(重要性比值 + 裁剪)。

省掉的:价值网络(显存减半、没有价值损失的调参)、从 RM 初始化价值头的技巧。保留的:逐 token 的 KL 惩罚(对参考模型)、裁剪目标。

R1 式训练(GRPO + RLVR)的核心现象:长思维链的涌现——

  • 训练中,回复的平均长度自然增长(模型学会"多想几步再给答案");
  • 出现自我检查、回溯、换角度重试等行为("aha moment");
  • 这不是显式设计的:奖励只看答案对错,长度增长是优化器发现的"提高正确率"的副产品。

"aha moment"的解读有争议:它是涌现的推理行为,还是对"长回复更容易蒙对/验证格式"的利用?长度增长与正确率的因果关系是当前实证研究的焦点(长度惩罚、验证强度等设计都会改变这个平衡)。

GRPO 的已知问题与对应改进(DAPO, Yu et al., 2025):

  • 组内 std 为零(全对或全错的提示没有梯度信号):动态采样——过滤掉无区分度的提示,保留"一部分对"的提示;
  • clip 的不对称:放宽上界(clip-higher)鼓励探索,防止熵过早坍缩;
  • 长度偏差:token 级损失让长回复主导梯度,改为序列级加权;
  • 超长回复的惩罚设计(截断还是惩罚)。

这些改进的共同主题:GRPO 把 PPO 的复杂性换成了新的病态,工程上需要在"简单"与"稳定"之间重新平衡。

  • 组内归一化优势 = 每个提示自己的基线
  • 可验证奖励绕过了奖励黑客的主要来源
  • 训练长度增长与"aha moment"的争议