GRPO 算法如何工作?

考查重点:组内相对优势与策略更新。同题采样多份回答,以组内相对奖励估优势,再受约束地更新策略;不必另训价值网络

本题目录

参考答案

核心回答

GRPO(Group Relative Policy Optimization,组相对策略优化)是一种训练语言模型的强化学习方法:对同一个问题采样多份回答,用组内奖励的相对差异估计优势,再更新生成策略。它沿用 PPO 类的受约束策略更新,但不需要额外学习一个价值函数来估计基线。

按原始的结果奖励形式,一轮训练可以概括为:

  1. 用采样时的旧策略,对每个问题生成一组回答。
  2. 用规则或奖励模型评分,将每份回答的分数与同题组内均值比较,并按组内标准差归一化,得到相对优势。
  3. 计算当前策略与旧策略的 Token 概率比,用裁剪目标限制过度更新;原论文还加入相对参考策略的 KL 惩罚。
  4. 通过梯度更新模型,再用更新后的策略采样,继续训练。

它省掉的是 critic 的学习与相关开销;多回答采样、奖励计算和策略训练仍然需要资源。GRPO 是参数训练算法,不是推理时让多个答案投票。

组内比较怎样变成训练信号?

设同一问题采样 G 份回答,各自奖励为 r_i。在结果奖励的经典形式中,每份回答的优势为:

A_i = (r_i - 组内平均奖励) / 组内奖励标准差

正优势表示相对本组更好,负优势表示相对更差。它们影响更新方向,不是“答案正确的概率”。在这种形式下,一份回答里的生成 Token 共用同一个结果优势;这提供了整段回答的学习信号,但没有精确指出每一步推理是否正确。过程奖励则可以提供更细粒度的信号。

例如,假设同一题生成 4 份回答,奖励为 [0, 0, 1, 1]。按总体标准差计算,均值为 0.5,标准差为 0.5,优势就是 [-1, -1, 1, 1]。如果实现使用样本标准差,具体数值会不同,正负方向相同。

若整组全对或全错,奖励完全一样,中心化后的差值为零,组内奖励就没有区分信号。实现通常还要处理零标准差,例如加入数值稳定项;单加一个很小的分母,不能凭空创造区分能力。若仍启用 KL 等其他项,它们可能继续产生更新,不能据此说整个训练一定停止。

裁剪目标和 KL 各约束什么?

对某个已生成 Token,在同样的问题与前序 Token 条件下,定义:

rho = 当前策略给该 Token 的概率 / 采样旧策略给它的概率
策略收益项 = min(rho * A, clip(rho, 1-epsilon, 1+epsilon) * A)

最大化这个收益项时,正优势倾向于增加相应输出的概率,负优势倾向于降低;裁剪去掉了某些继续扩大概率变化的收益。例如 A=1、rho=1.5、epsilon=0.2 时,该项取 min(1.5, 1.2)=1.2。负优势也必须连同 min 一起理解,不能只把概率比截断后乘优势。

裁剪是对优化目标的处理,不是把模型的所有概率硬限制在某个区间,也不保证每步更新严格满足一个 KL 上限。

旧策略与参考策略承担不同角色:旧策略说明这批回答是怎样采样出来的,用于概率比;参考策略是所选的行为参照,KL 项惩罚当前策略偏离它。两者可能在某个时刻相同,但不因此成为同一个概念。原始 GRPO 对生成 Token 的收益与 KL 项按回答长度、再按组聚合;工程变体可以采用其他归一化方式。

奖励怎样设计,才不会学偏?

奖励决定模型真正优化的目标。数学题可以检查最终答案,代码题可以执行测试;开放式任务也可以结合经过校准的模型或人工偏好信号。GRPO 并不要求一定训练一个神经奖励模型。

DeepSeek-R1-Zero 的原论文使用正确性与格式等规则奖励。这说明可验证任务能够提供自动反馈,但格式合格与内容正确仍应区分;只奖励标签、长度或表面特征,模型可能学会满足规则,却没有提高任务质量。

同时要看任务与采样难度。若大多数分组始终全错,增加优化步数也未必有有效信号;可以检查奖励程序、问题难度、采样多样性和初始模型能力。组大小增加可能带来更多可比较回答,也会增加生成与评分成本,不能假设越大越好。

原论文和现成 Trainer 为什么可能不同?

“支持 GRPO”不代表实现的每个细节都与原论文一致。要看奖励是否按组标准差缩放、损失怎样按 Token 或回答长度归一化、是否使用 KL、每批样本更新几次,以及截断回答怎样处理。

例如,TRL main 文档列出 loss_type="grpo"、"dapo" 等选项,并说明默认可以不启用 KL;ms-swift 也区分按样本、Token 或固定长度归一化。比较实验时应写清实际版本与配置,不能把某个框架默认值当成 GRPO 的定义。原始按回答长度归一化还可能引入长度偏置,后续变体针对这些问题作了调整。

常见追问

与 PPO 的核心区别是什么? 常见 actor-critic PPO 借助学习到的价值函数估计优势;GRPO 用同题多个回答的奖励构造组内基线,省去价值函数训练。裁剪更新仍有共同思想,奖励和采样的组织方式也影响最终行为。

与 SFT、DPO 有什么不同? SFT 直接学习给定示范回答;DPO 通常使用偏好对优化策略;GRPO 在训练中由当前或近期策略生成回答,经奖励反馈迭代更新。它仍需要问题、奖励规则或其他监督信号,不能理解为“完全不需要数据”。

奖励上涨就证明模型变强了吗? 还要在独立任务上检查正确性、泛化、输出长度与奖励漏洞。训练奖励上涨可能只说明更会满足当前奖励规则,应结合可验证结果判断。

参考资料

  • 国内:DeepSeek-AI:DeepSeekMath:依据 §4.1 的组内优势、Token 概率比、裁剪目标与 KL 正则,组织正文中原始 GRPO 的更新过程及其与 PPO 的区别。
  • 国内:DeepSeek-AI:DeepSeek-R1:采用 §2.2.1~2.2.2 的推理训练与正确性、格式奖励示例,说明正文中 GRPO 算法与具体奖励设计的区别。
  • 国内:ModelScope ms-swift 4.4:Loss Types:参考按回答、Token 和固定长度归一化的比较,解释正文中同一组优势对应不同损失缩放方式的原因。
  • 国外:Schulman 等:Proximal Policy Optimization Algorithms:§3 的概率比与裁剪目标说明 min 的作用,以及为什么裁剪是优化目标处理,不能当成硬性的策略距离保证。
  • 国外:Hugging Face TRL:GRPO Trainer:依据优势计算、KL、Loss Types 和奖励缩放选项,说明正文中原论文与框架配置的区别,以及零方差组和长度偏置问题。

相关面经

14 篇

字节跳动

大模型实习算法岗
实习
查看原面经 →
介绍一下 DPO , PPO , GRPO

科大讯飞

大模型算法工程师
秋招一面
查看原面经 →
简单介绍GRPO算法

滴滴

大模型算法工程师
秋招一面
查看原面经 →
详细介绍一下grpo算法

阿里巴巴(淘天)

大模型 Agent
校招
查看原面经 →
PPO和DPO在大模型对齐中的主要区别是什么?DPO训练通常有哪些注意事项?用过GRPO么?

阿里巴巴

大模型算法工程师
一面
查看原面经 →
GRPO相比传统强化学习方案做了哪些优化改进,其中KL散度损失如何计算实现?
展开剩余 9 篇面经

腾讯

大模型算法工程师
暑期
查看原面经 →
讲一下 GRPO 原理

字节跳动

大模型算法工程师
暑期实习一面、二面、三面
查看原面经 →
ppo grpo的具体原理以及区别

MiniMax

大模型算法工程师
查看原面经 →
是否了解或使用过 GRPO 算法?

腾讯

大模型算法工程师
暑期实习一面
查看原面经 →
讲一下 GRPO 原理

作业帮

AI 应用算法工程师
实习一面
查看原面经 →
GRPO有几个模型?损失函数知道吗?reference model具体的作用是什么?

京东

算法工程师(对话机器人)
实习
查看原面经 →
GRPO,PPO,DPO的算法原理

美团

Agent 算法工程师
查看原面经 →
介绍下ppo dpo grpo算法

美团

大模型算法工程师
二面
查看原面经 →
讲一下ppo和grpo

OPPO

大模型
二面
查看原面经 →
讲一下grpo

收录题集

3 个来源,共5 份题集

大模型基础

AMIT SHEKHAR · ai-engineering-interview-questions · 1 条原题

查看题集 →

强化学习与对齐

阿东玩 AI · AgentGuide · 5 条原题

查看题集 →
展开其余 2 条原题

大模型基础面试题

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

后训练:微调与对齐

Rocky Ding · AIGC-Interview-Book · 2 条原题

查看题集 →

大模型原理追问

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

相关题目

4 题