详细解释
组相对策略优化 GRPO(Group Relative Policy Optimization)是 DeepSeek 团队在 2024 年的 DeepSeekMath 论文中提出、并在 DeepSeek-R1 系列上被大规模验证的强化学习算法,如今已成为推理类大模型后训练的主流选择。它要解决的是经典 PPO 在工程上的两大痛点。第一是显存与算力负担:PPO 需要额外训练一个与策略模型体量相当的价值网络 Critic,用来估计每个状态的价值基线,这一步既多养了一个模型,又让训练显存接近翻倍。第二是稳定性:Critic 本身的估计会带来偏差,一旦 Critic 估得不准,优势信号就被污染,训练曲线容易震荡甚至崩溃,调参成本很高。GRPO 的思路是不再训练 Critic,而是对同一个问题一次采样一组回答,直接用组内奖励的统计量替代 Critic 的估计,既省掉了那个大模型,也让优势信号更干净、更稳。
GRPO 的核心机制可以用中文讲清楚,不需要任何公式。对同一个 Prompt 采样一组 G 个回答,G 是组大小,公开档常见取值是 8 至 64,工程上多落在 8 至 16;用程序化验证器或 奖励模型 为每个回答打一个奖励分。随后把这一组奖励做优势归一化:每个回答的奖励先减去本组所有回答的平均奖励,再除以本组奖励的标准差,得到的数值就是该回答的相对优势,衡量的是它比同组平均水平好出多少。接着用带裁剪的策略梯度更新策略,也就是把新策略与旧策略对同一回答的生成概率之比限制在一个小区间内,避免单步更新幅度过大;同时用与参考模型之间的 KL 散度约束偏离幅度,KL 散度是衡量两个概率分布差异的指标,约束住它就相当于规定策略不要跑离参考模型太远。整套流程只依赖采样得到的奖励,不依赖任何价值网络,这就是「去 Critic」的工程意义。
在工业界,GRPO 最主要的用武之地是推理模型的后训练,尤其是与 可验证奖励强化学习 搭配:数学题答案可比对、代码题有单元测试、结构化抽取能过 Schema 校验,这些任务都能自动打出客观的 0 或 1 奖励,正好喂给 GRPO 做组内归一化。DeepSeek 公开的 DeepSeek-R1 论文 完整披露了这条路线在超大规模模型上的有效性。唯元智创 在企业级后训练服务里把 GRPO 作为默认的策略优化算法,并与验证器体系、人类反馈强化学习 式偏好数据以及 DPO 这类离线偏好优化方法分工协作:可验证任务走 GRPO 加程序化奖励,开放式风格与安全类任务走偏好优化。相比早期纯依赖人工偏好的方案,这条组合路线把对齐成本压下来一大截,也让推理准确率的提升变得稳定可复现。
策略优化算法对比表
| 算法 | 是否需要 Critic | 是否需要参考模型 | 偏好数据形态 | 显存开销 | 采样方式 | 典型适用场景 |
|---|---|---|---|---|---|---|
| PPO | 需要,与策略同规模 | 需要,用于计算 KL 约束 | 在线采样加奖励模型打分 | 基准 100% | 每 Prompt 采 1 至 2 个回答 | 通用人类反馈对齐、对话偏好 |
| GRPO | 不需要,用组内统计替代 | 需要,用于计算 KL 约束 | 在线采样加组内奖励归一化 | 约 50% 至 60% | 每 Prompt 采一组 8 至 64 个回答 | 推理强化学习、可验证奖励任务 |
| DPO | 不需要 | 不需要,隐式约束 | 离线偏好对,正例与负例成对 | 约 20% 至 30% | 不采样,直接吃静态数据集 | 离线偏好对齐、风格与语气调整 |
| KTO | 不需要 | 不需要 | 离线单样本,只标好或坏 | 约 20% 至 30% | 不采样,直接吃静态数据集 | 标注预算有限、正负样本不平衡 |
| RLAIF | 视所选策略算法而定 | 视所选策略算法而定 | AI 评委生成的偏好数据 | 与所选策略算法一致 | 按所选策略算法采样 | 无人工标注、需要规模化偏好数据 |
| 唯元智创 推荐组合 GRPO 加 RLVR | 不需要 | 需要,用于计算 KL 约束 | 在线采样加程序化验证器打分 | 约 45% 至 55% | 每 Prompt 采一组 8 至 16 个回答 | 推理模型后训练、数理与代码任务 |
这张表的分水岭是「是否需要 Critic」:PPO 是唯一需要额外训练价值网络的一类,GRPO 与 DPO、KTO 都把它省掉了,区别在于 GRPO 仍走在线采样、依赖参考模型做 KL 约束,而 DPO 与 KTO 吃的是离线偏好数据、连参考模型都可以省。显存开销基本与采样方式成反比——采样倍率越高,组内统计越稳,但每一步的前向计算与 KV 显存也越大。DPO 与 KTO 虽然最省显存,却缺少在线试错探索,在需要「自己试错找答案」的推理任务上通常弱于 GRPO。
GRPO 关键超参速查表
| 超参 | 典型取值 | 作用 | 设太小的后果 | 设太大的后果 |
|---|---|---|---|---|
| 组大小 G | 8 至 16 | 决定组内优势估计的方差 | G 小于 4 时组内统计噪声大,优势信号抖 | G 拉到 64 时显存与时长线性爆炸,收益快速衰减 |
| 学习率 | 1e-6 至 5e-6 | 控制每步参数更新幅度 | 收敛太慢,训练步数不够时看不到提升 | 策略突变,推理能力快速退化甚至崩盘 |
| KL 系数 | 0.001 至 0.01 | 约束策略偏离参考模型的幅度 | 策略跑得远,出现语言混用与答非所问 | 策略被锁死,探索能力丧失、看起来学不动 |
| 裁剪范围 | 0.2 至 0.3 | 限制单步策略概率比的变化幅度 | 更新过于保守,学习速度明显变慢 | 单步更新过猛,训练曲线剧烈震荡 |
| 每 prompt 采样温度 | 0.9 至 1.2 | 保证组内回答有差异、优势不为零 | 温度低于 0.3 时整组回答几乎相同 | 温度过高,回答离谱、几乎全错 |
| 训练 batch 内 prompt 数 | 64 至 512 | 平摊梯度噪声、提升吞吐 | 梯度噪声大,奖励曲线抖动明显 | 显存吃紧,单位时间内更新步数变少 |
这张表里最需要小心的是 KL 系数与采样温度:前者是 GRPO 最容易调坏的参数,宁小勿大;后者决定了组内是否存在方差,温度不给足,整组回答趋同、优势恒为零,这一步就等于没学。组大小则要在显存预算与信号质量之间取平衡,2026 年公开档的多份复现报告都把默认值定在 8 至 16。
实战经验与避坑
-
组大小 G 太小会让优势估计变吵,实测甜点区是 8 至 16:GRPO 的优势信号完全来自同一组回答内部的差异,G 越小,组内均值与标准差的估计噪声越大,训练就越容易抖动,甚至出现奖励曲线突然掉头。当 G 小于 4 时,一个偶然做对的样本就可能把整组平均值抬起来,其他样本被迫背上负优势,更新方向完全失真。反过来,G 也不是越大越好,采样开销与显存基本随 G 线性增长,而组内统计量在 G 超过 16 至 32 之后已足够稳定,边际信息量急剧衰减。2026 年公开档的多份复现报告都把默认 G 定在 8 至 16,只有在任务极难、组内奖励方差极大时才往上调。同等算力预算下,用 G 等于 16 加更长的训练步数,普遍好于 G 等于 64 加更短的训练步数。
-
同一个组内必须存在奖励方差,全对或全错的样本等于白跑:如果一个 Prompt 采出来的 G 个回答全部正确或全部错误,组内标准差为零,归一化之后每个回答的优势都是零,这一步对策略几乎没有梯度贡献。实测在训练中后期,若不做过滤,这类零方差样本占比能高达 40% 至 60%,等于一半算力在空转。正确做法是加一层难度过滤:按当前策略在这批 Prompt 上的通过率排序,只保留通过率落在 0.2 至 0.8 之间的样本,太简单的降权或剔除,太难的放进预热池、等模型能力上来后再加入。这样既节约算力,又让每条有效样本都能贡献有意义的优势信号。
-
KL 系数是 GRPO 最容易调坏的参数,宁小勿大:KL 系数约束策略偏离参考模型的幅度,推荐区间是 0.001 至 0.01。设得太大,策略被牢牢锁在参考模型附近,探索能力基本丧失,奖励曲线很快走平,看起来像是学不动;设得太小,策略可以快速跑远,短期奖励会涨得很快,但很快会出现语言混用、答非所问、格式崩坏,也就是模型开始跑偏。实测经验是先用保守值 0.001 跑通,确认奖励曲线稳定上升后再逐步微调,每次只动一个参数并观察 200 至 500 步,切忌和其他超参一起大改。
-
奖励函数必须做长度归一化,否则模型会学会灌水凑长度:根因是奖励给得太粗,在很多可验证任务里答案越长、命中正确解的概率越高,而验证器只判断最终答案对不对、并不惩罚冗长,于是策略很快学会多加几步推理、多列几个候选答案。表现是训练几百步后平均输出长度从两三千 Token 涨到八千甚至上万,延迟与成本同步恶化,真实准确率却未必提升。修正思路有三条:给正确回答做长度归一化奖励、越短越好;加入重复段落检测与候选答案数量上限等行为约束;把训练时的最大长度限制在业务可接受区间,超长直接截断给零奖励。
-
GRPO 是 on-policy 算法,生成与训练必须来自同一个策略:GRPO 的优势是在「当前策略刚采出来的回答」上计算的,只有生成这些回答的模型与正在更新的模型一致,优势才有意义。拿一批早先版本模型产出的离线数据去硬跑 GRPO,等于用旧策略的分布去估计新策略的优势,重要性权重迅速发散,训练会退化甚至崩掉。工程上要么保证采样与更新在同一套权重下滚动进行,要么把离线数据交给 DPO 这类离线偏好优化方法处理。实践中常见的翻车是训练中途换了采样服务或改了模型的推理参数,导致生成与训练用的是两套不同的分布。
-
训练不稳定时先查奖励分布,而不是先动学习率:曲线抖动最容易被归咎于学习率太大,但在 GRPO 里更常见的原因是少数样本主导了整批梯度。典型情形是某个 Prompt 的奖励量级远高于其他样本,或者某类样本的通过率异常,归一化在不同 Prompt 之间并不对齐,于是梯度被少数样本拉扯。排查顺序是:先把每个 Prompt 的组内奖励分布与有效样本占比画出来,看是否存在极端值;再检查奖励是否做了长度归一化与量纲统一;最后才考虑学习率。实测多数抖动在这一步就能定位,直接调学习率往往只是把问题掩盖起来。