想象一所田径学校的跳高训练场。老教练 PPO 身边总跟着一位专职评分助理(价值网络),队员每跳一次,助理都要立刻估一个“这个动作本来值多少分”,再拿实际表现减去基准分,告诉教练“这跳超出预期多少”。助理很尽职,但它有三个麻烦:体重大(占掉近一半训练装备和场地)、手会抖(同一动作今天估 90 分明天估 70 分)、而且它自己的判断标准还在跟着训练进度天天变。新来的教练 GRPO 做了一个大胆的决定:辞掉这位助理。他让队员把同一个难度连续试跳 G 次,把这组试跳的成绩放在一起比较——高出组内平均线的动作模式得到表扬并强化,低于平均线的动作被抑制修正。这套“组内相对比较”的哲学,让训练系统变得又轻又稳:显存开销显著下降,训练信号的抖动被天然压缩。DeepSeek-R1 正是用这套方法,把数学、代码这类“答案可核验”的任务练到了顶尖水平。本文将带你一步步看懂 GRPO 的算法流程、它与 PPO/DPO 的恩怨,以及它在真实工业界的落地与挑战。

岗位关联

对 AI 从业者而言,理解 GRPO 等于握住了当前推理模型对齐训练的“主力引擎”——无论你负责 RLHF 框架选型、训练成本优化,还是评估下一代对齐方案,这都是绕不开的核心知识。

目录
  1. 可视化演示
  2. 价值网络困境
  3. GRPO核心思想
  4. 算法流程
  5. 对比PPO
  6. 对比DPO
  7. 应用实践
  8. 挑战展望
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示GRPO与PPO架构对比、组内相对优势估计机制,以及策略优化与KL正则化过程,揭示无价值网络对齐训练的核心原理。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+_captions.compare+'

价值网络困境

老教练 PPO 的评分助理看似贴心——每次试跳后,助理都要先判断“这个动作本来应该跳多高”,估出一个基础分,再用实际成绩减去基础分,告诉教练“这跳超出预期多少”。问题是,助理的判断总是抖的:同一条漂亮的弧线,助理可能这次给高分、下次给低分;更麻烦的是,助理要背一套和队员一样厚的训练档案(参数),训练营的场地(显存)和伙食(算力)开销几乎翻倍。

助理干的事,在强化学习里叫“价值网络”(Value Network / Critic)。PPO 这类经典策略优化算法,每一步都需要它估计状态的价值 V(s),从而算出“优势”——一名运动员在状态 s 做出动作 a 后,实际回报相比“预期基准”高出的程度。这个优势的正负与大小,直接决定这个动作模式被表扬还是被纠正。价值网络因此成为 PPO 体系里不可或缺的核心零件。

优势通常写成“实际回报 + 对未来的折扣估计 − 当前基准”:

助理的档案越来越厚、手越来越抖、场地越来越挤——这正是 GRPO 登场的契机:能不能不要这位助理,让队员们在同一组试跳里自己形成客观的“相对基准”?

A^(s,a)=r(s,a)+γV(s′)−V(s)\displaystyle \hat{A}(s,a) = r(s,a) + \gamma V(s') - V(s)
通俗说明:评分助理必须猜“这跳本来值多少”,猜得不准时,整个“超出预期”的结论就会跟着偏。
  1. 即时回报环境或裁判针对这次动作给出的直接分数,是优势计算最原始的“原料”。
    r(s,a)r(s,a)
  2. 未来估值助理对下一时刻状态的估计值折现到当前,代表“未来还能吃到多少红利”。
    γV(s′)\gamma V(s')
  3. 当前基准助理认为在当前状态下“应该得到”的基础分,是一切比较的出发点。
    V(s)V(s)
  4. 优势实际回报减去基准分,正数代表超出预期应被表扬,负数代表低于预期应被纠正。
    A^(s,a)=r(s,a)+γV(s′)−V(s)\hat{A}(s,a) = r(s,a) + \gamma V(s') - V(s)

GRPO核心思想

新教练 GRPO 心一横:辞掉评分助理。他让队员把同一个难度(同一个问题)连续试跳 G 次,这一组试跳共享同样的环境条件,因此组内的平均线就是最公平的参照物——跳得比平均值高的动作是“组内赢家”,低于平均线的则是“组内输家”。没有助理的绝对分数,只看组内相对位置。

这个“组内相对位置”在论文里叫做 Group Relative Advantage。它不再需要价值网络去估计 V(s),而是用一组采样奖励的均值 μ 和标准差 σ 做标准化,把“差多少分”换算成“差几个身位”:

相比“绝对分数”,相对优势天然消掉了尺度波动:如果这组试跳整体分数都偏高,减均值后依然能挑出拔尖的;如果整体偏低,也不至于把“最矮的将军”误判成英雄。ε 是防止除零的小常数。整个链路里不再存在任何价值网络,训练时少了一个与策略网络同等规模的前向/反向传播,显存与算力开销显著下降。

教练得意地发现:没有助理之后,队员不仅没乱套,反而因为参照物稳定——同一组内相互比较永远公正——训练信号的手抖问题基本消失了。

A^i=ri−μGσG,μG=1G∑j=1Grj,σG=1G∑j=1G(rj−μG)2+ϵ\displaystyle \hat{A}_i = \frac{r_i - \mu_G}{\sigma_G}, \qquad \mu_G = \frac{1}{G}\sum_{j=1}^{G} r_j, \qquad \sigma_G = \sqrt{\frac{1}{G}\sum_{j=1}^{G}(r_j - \mu_G)^2 + \epsilon}
通俗说明:把一组试跳成绩先平移(减均值)再缩放(除标准差),得到的就是“高出平均几个身位”的相对优劣。
  1. 组内均值把这一组输出奖励取平均,相当于这一轮试跳的平均线,是公平的参照物。
    rˉG=1G∑j=1Grj\bar{r}_G = \frac{1}{G}\sum_{j=1}^{G} r_j
  2. 分子第 i 条输出奖励与组内均值的差值,正负号直接决定强化方向。
    ri−rˉGr_i - \bar{r}_G
  3. 标准差整组奖励的离散程度,外加 ε 防止除零,把“差多少分”归一成“差几个身位”。
    σG=1G∑j=1G(rj−rˉG)2+ϵ\sigma_G = \sqrt{\frac{1}{G}\sum_{j=1}^{G}(r_j - \bar{r}_G)^2 + \epsilon}
  4. 相对优势标准化后的相对高低,数值越大代表越值得强化,负数则被抑制。
    A^i=ri−rˉGσG\hat{A}_i = \frac{r_i - \bar{r}_G}{\sigma_G}

算法流程

一次完整的 GRPO 训练回合,可以看成“集体试跳—排高矮—改动作—收操”的循环。教练把队员分成小组,对同一个问题让旧策略(当前队员状态)试跳 G 次,得到一组输出,再基于奖励模型或规则给每组打分。这对应流程中的“旧策略采样”与“奖励计算”两个环节。

拿到 G 条输出后,按照上一节的公式计算每条输出的组内相对优势,这一步叫“优势估计”。随后进入“改动作”环节:策略网络按照一个同时包含裁剪(clip)与 KL 惩罚的目标函数更新参数,这一步叫“策略更新”:

其中概率比 $\rho_i(\theta) = \dfrac{\pi_\theta(o_i \mid q)}{\pi_{\theta_{\text{old}}}(o_i \mid q)}$,衡量新策略给这条输出的概率相比旧策略放大了多少。

目标函数里每个零件都有自己的职责:ρ 衡量新旧策略在该输出上的一致性;clip 把更新幅度限制在 1±ερ,防止一次改动作太猛;min 取保守项;KL 惩罚则保证策略不会偏离参照模型(基本功)太远,从而抑制奖励黑客。

整个循环里没有一个价值网络参与,流程从“两套网络互相拉扯”变成了“单模型闭环迭代”。教练的哨声一响,训练营轻装上阵。

JGRPO(θ)=1G∑i=1Gmin⁡(ρi(θ)A^i, clip⁡(ρi(θ), 1−ϵρ, 1+ϵρ)A^i)−β DKL[πθ ∥ πref]\displaystyle \mathcal{J}_{\text{GRPO}}(\theta) = \frac{1}{G}\sum_{i=1}^{G}\min\left(\rho_i(\theta)\hat{A}_i,\ \operatorname{clip}\left(\rho_i(\theta),\,1-\epsilon_{\rho},\,1+\epsilon_{\rho}\right)\hat{A}_i\right) - \beta\, D_{\mathrm{KL}}\left[\pi_\theta \,\|\, \pi_{\mathrm{ref}}\right]
通俗说明:表扬好动作、批评坏动作,但是每次最多只允许动作改动一小截(ερ),并且不能把队员的基本功全扔掉。
  1. 策略比值新策略给该输出的概率相对旧策略的比例,直观反映“这一步更新幅度有多大”。
    ρi(θ)=πθ(oi∣q)πθold(oi∣q)\rho_i(\theta) = \frac{\pi_\theta(o_i \mid q)}{\pi_{\theta_{\text{old}}}(o_i \mid q)}
  2. 裁剪函数把比值强行限制在 $1-\epsilon_\rho$ 到 $1+\epsilon_\rho$ 之间,超出的部分不产生梯度。
    clip⁡(ρi(θ), 1−ϵρ, 1+ϵρ)\operatorname{clip}(\rho_i(\theta),\,1-\epsilon_\rho,\,1+\epsilon_\rho)
  3. 保守取小裁剪项与未裁剪项取最小值,保证更新永远不冒进。
    min⁡(ρi(θ)A^i, clip⁡(ρi(θ))A^i)\min\left(\rho_i(\theta)\hat{A}_i,\ \operatorname{clip}(\rho_i(\theta))\hat{A}_i\right)
  4. 组内平均对组内 G 条输出求平均,得到该问题这一个回合的期望优化目标。
    1G∑i=1G(⋅)\frac{1}{G}\sum_{i=1}^{G}(\cdot)
  5. KL 惩罚衡量策略相对参照模型的分布差距,偏离太远就要“扣分”,充当刹车。
    β DKL[πθ ∥ πref]\beta\, D_{\mathrm{KL}}\left[\pi_\theta \,\|\, \pi_{\mathrm{ref}}\right]
  6. 总目标最大化这个目标,等价于“在有限步长内放大好输出、压制坏输出”。
    JGRPO(θ)\mathcal{J}_{\text{GRPO}}(\theta)

对比PPO

老训练营 PPO 的全套配置:策略教练加评分助理。每次试跳助理都要先估基准分,再用 GAE 层层自举、累加折扣回报,把“优势”拼出来。这套体系成熟但笨重:助理占掉一半装备(显存),每次更新要跑两个网络的前向与反向,而且助理估值一抖,整套流程就跟着抖。

GRPO 训练营则只需策略教练一人。显存上,少了一个与策略模型同等规模的价值网络;计算上,省去价值网络的整套前向与反向传播;稳定性上,不再追逐“移动目标”,组内相对优势自带方差压缩效果。先看 PPO 的裁剪目标函数:

对比可见,PPO 与 GRPO 的目标函数骨架几乎一样,真正的分歧在 $\hat{A}_t$ 的来历:PPO 的 $\hat{A}_t$ 来自价值网络的 GAE 自举(即 $r_t + \gamma V(s_{t+1}) - V(s_t)$ 沿轨迹逐步累加),GRPO 的 $\hat{A}_i$ 来自组内奖励的均值与标准差标准化。也就是说,GRPO 是“用组内统计量”取代了“价值网络估计”——骨架保留,零件替换,实现大幅简化。

对工程团队来说,二选一的战略意义很直白:如果奖励可以核验(数学、代码),GRPO 的小体积与低抖动让训练成本直线下降;但如果奖励模糊到必须依赖长期回报的精细估计,评分助理的价值依然存在,PPO 并没有过时。

LCLIP(θ)=Et[min⁡(ρt(θ)A^t, clip⁡(ρt(θ), 1−ϵ, 1+ϵ)A^t)]\displaystyle \mathcal{L}^{\text{CLIP}}(\theta) = \mathbb{E}_t\left[\min\left(\rho_t(\theta)\hat{A}_t,\ \operatorname{clip}(\rho_t(\theta),\,1-\epsilon,\,1+\epsilon)\hat{A}_t\right)\right]
通俗说明:同一个训练手册,PPO 的“超出预期”由助理拍脑袋估算,GRPO 的“超出预期”由组内排名说话。
  1. 时间步期望对轨迹上各个时刻的损失求平均,得到整体优化方向。
    Et[⋅]\mathbb{E}_t[\cdot]
  2. 概率比新旧策略在同一状态-动作点上的概率比值。
    ρt(θ)=πθ(at∣st)πθold(at∣st)\rho_t(\theta) = \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{\text{old}}}(a_t \mid s_t)}
  3. 裁剪取小同样用 min 配合 clip 约束更新幅度,这是 PPO 的信任域机制。
    min⁡(ρt(θ)A^t, clip⁡(ρt(θ))A^t)\min\left(\rho_t(\theta)\hat{A}_t,\ \operatorname{clip}(\rho_t(\theta))\hat{A}_t\right)
  4. 优势来源PPO 的优势来自价值网络的 GAE 自举,GRPO 的优势来自组内奖励归一化。
    A^tPPO←GAE(V);A^iGRPO←标准化(r1:G)\hat{A}_t^{\text{PPO}} \leftarrow \text{GAE}(V); \qquad \hat{A}_i^{\text{GRPO}} \leftarrow \text{标准化}(r_{1:G})

对比DPO

训练营里还有第三位教练:DPO。它不带队上训练场,而是抱着一大摞历史录像带(静态偏好数据)研究——人类标注过“这个回答更好、那个回答更差”。DPO 不需要奖励模型,也不需要在线试跳,它直接从偏好对比中推出最优策略,相当于是“看录像总结教训,一次定形”。

DPO 的核心是隐式奖励:把“策略相对参照模型的概率比”当成一个隐形裁判的打分,两个回答的打分之差经过 sigmoid 变成“胜出概率”,再最大化该概率:

对比 GRPO,两者差异显著:数据形态上,DPO 吃静态偏好对,属于离线优化;GRPO 吃在线采样的组奖励,属于在线近端优化。迭代方式上,DPO 一轮数据一次更新、直接逼近最优策略;GRPO 反复试跳、逐步修正。适用场景上,DPO 适合偏好数据充足、无需探索的任务;GRPO 适合答案可自动核验、需要持续探索的任务。

两位教练的分工其实很清晰:想快速从已有偏好数据里定型,录像教练 DPO 高效;想在可核验环境里持续进化,现场教练 GRPO 更稳。二者不是替代关系,而是不同训练阶段的不同选择。

LDPO=−log⁡σ(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x))\displaystyle \mathcal{L}_{\text{DPO}} = -\log\sigma\left(\beta \log\frac{\pi_\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log\frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}\right)
通俗说明:DPO 是“看录像总结教训”,GRPO 是“当场试跳、当场比较、当场改正”。
  1. 偏好对人类标注的“胜出回答”与“落败回答”各一条,构成一个训练样本。
    (x,yw,yl)(x, y_w, y_l)
  2. 隐式奖励差两个回答各自相对参照模型的概率比取对数后做差,相当于隐形裁判给两者的分数差。
    βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x)\beta \log\frac{\pi_\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log\frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}
  3. 胜出概率将分数差经过 sigmoid 变成 0 到 1 的“赢家概率”。
    σ(⋅)\sigma(\cdot)
  4. 负对数最小化负对数即最大化胜出概率,让策略持续偏好赢家回答。
    −log⁡σ(⋅)-\log\sigma(\cdot)

应用实践

2024 年底,DeepSeek 团队公布了他们的“数学国家队”训练方案:DeepSeek-R1。它在数学、代码等答案可核验的任务上,用规则奖励替代了昂贵的人工偏好标注——答案对就加分、错就减分,并用 GRPO 做强化学习训练,最终在推理任务上逼近甚至反超大批参数规模更大的模型。

这类任务的奖励可以用规则直接判定,比如把“答案是否正确”当成唯一标准:

在 RLHF 全流程中,GRPO 通常位于“冷启动监督微调(SFT)之后、自我提升与蒸馏之前”。流程大致是:先用少量高质量数据做 SFT 给模型打底,再以 GRPO 做推理强化,最后用强化出的数据蒸馏给更小的模型。由于没有了价值网络,团队可以把省下的显存用于增大批次或上下文长度,训练吞吐明显提升。

从 DeepSeek-R1 到后续的 R1-Distill 系列,“作答—核验—组内比较—策略更新”的闭环被反复验证。教练的这套“现场试跳法”,正在成为推理模型对齐的工业级标配。

r(q,o)={1correct−1wrong0otherr(q, o) = \begin{cases} 1 & \text{correct} \\ -1 & \text{wrong} \\ 0 & \text{other} \end{cases}
通俗说明:先把队员带进队(SFT),再用 GRPO 高强度集训(强化),最后让老队员带新人(蒸馏)。
  1. 核验通过模型输出与标准答案或程序执行结果一致,获得满分正向奖励。
    r(q,o)=1r(q, o) = 1
  2. 核验失败输出判定为错误,收到负奖励,对应的动作模式会被策略抑制。
    r(q,o)=−1r(q, o) = -1
  3. 中间态格式不完整等无法判定的情况,不给分也不惩罚。
    r(q,o)=0r(q, o) = 0
  4. 进入组内变换这些绝对分数还要经过组内减均值、除标准差,才最终成为相对优势。
    A^i=ri−rˉGσG\hat{A}_i = \frac{r_i - \bar{r}_G}{\sigma_G}

挑战展望

然而,从封闭考场走向开放操场,GRPO 教练遇到了新麻烦。数学、代码有标准答案,裁判(规则奖励)铁面无私;但到了开放域对话、长文本创作,什么是“好答案”没有唯一标准,需要模型裁判、人类评分,奖励信号的噪声与偏见重新抬头。

更隐蔽的风险来自“组内相对”本身——组内优势高,不代表绝对质量好:

当一整组试跳都很糟糕时,最差中的最好也会拿到正优势,被当作榜样强化——这就是“矮子里拔将军”偏差,也是奖励黑客(reward hacking)的温床。模型可能学会钻奖励的空子,比如写长答案讨好裁判模型,而不是真正解决问题。

泛化能力与鲁棒性因此成为 GRPO 走向真实场景的门槛:在分布偏移下,组内相对优势是否依然可靠?在开放奖励下,如何设计不依赖绝对分数又能约束漂移的变体?值得关注的是,相关标准化工作正在推进——统一的评估基准与接口规范,将让不同 GRPO 实现可以公平对比、无缝复用。

教练们正在起草统一的“裁判手册”(评估基准)与接口规范(标准化),目的就是让这套无价值网络的训练方法,在更广阔的真实场景中也能被公平检验、被规模化复用。

A^i>0  ⇏  ri is truly good\displaystyle \hat{A}_i > 0 \;\not\Rightarrow\; r_i \text{ is truly good}
通俗说明:组内相对优势是“局部队长”,它在封闭考场里很公正,但到了开放操场,必须警惕“矮子拔将军”。
  1. 正优势某条输出超过组内平均线,策略会把它当作值得模仿的榜样。
    A^i>0\hat{A}_i > 0
  2. 不能推出数学符号表示“前者成立,并不保证后者一定成立”。
    ⇏\not\Rightarrow
  3. 绝对质量脱离该组样本、放到真实世界标准下依然优秀的程度。
    ri truly goodr_i \text{ truly good}
  4. 含义全组低质时,相对比较会掩盖绝对衰败,这是设计开放奖励时最需要防范的陷阱。
    A^i>0  ⇏  ri is truly good\hat{A}_i > 0 \;\not\Rightarrow\; r_i \text{ is truly good}

AI 应用场景

场景一:推理模型的强化学习对齐训练

阶段:模型对齐(RLHF 的强化学习阶段)

解决的问题:数学/代码任务使用 PPO 需要价值网络,显存开销大且训练不稳;GRPO 去掉价值网络后,用组内相对优势估计替代,显存显著下降、方差收敛更快。

具体案例:某团队训练 7B 数学推理模型,走 DeepSeek-R1 式流程:SFT 冷启动后,对每个问题采样 8 个回答,用规则奖励核验答案正确性,再以 GRPO 更新策略。相比 PPO,单卡可承载的序列长度提升约 40%,训练吞吐提高约 1.8 倍。

场景二:开放域排序式偏好优化

阶段:在线偏好收集与策略微调

解决的问题:创意文案等任务难以给出绝对分数,但用户可以对同一 prompt 生成的多个结果排出好坏;GRPO 的组内相对优势恰好把“排序比较”变成训练信号,避免不同用户评分尺度不一致带来的方差。

具体案例:营销文案模型对同一产品描述生成 4 条候选,让用户点击“最想要的一条”;把 4 条候选看作一组,用点击结果构造奖励,再经 GRPO 组内标准化后微调,文案采纳率提升约 25%。

场景三:PPO 服务框架的无痛升级

阶段:训练基础设施改造

解决的问题:已有 PPO 的 RLHF 框架希望降低显存与运维成本,但不想重写整套训练管线。

具体案例:某公司在 8 × A100 上训练 70B 模型,去掉价值网络、保留原有裁剪与 KL 机制后,显存余量增加约 40%,训练速度提升约 30%,代码改动仅集中在优势计算与 loss 构造两处。

Python 演示

python51 行
import mathimport random G = 6          # 组内采样个数K = 10         # 动作数:模拟词汇表大小LR = 0.08      # 学习率BETA = 0.05    # KL 惩罚系数CLIP = 0.2     # 裁剪系数EPS = 1e-6     # 归一化防除零EPOCHS = 4ITER = 150 def true_reward(a):    return 2.0 if a in (6, 7, 8) else 0.2 if a in (3, 4, 5) else -0.5 def softmax(logits):    mx = max(logits)    e = [math.exp(x - mx) for x in logits]    s = sum(e)    return [x / s for x in e] def grad_kl(p):    ent = -sum(x * math.log(x) for x in p)    return [x * (math.log(x) + ent) for x in p] def train():    logits = [0.0] * K    for it in range(ITER):        p0 = softmax(logits)        acts = [random.choices(range(K), weights=p0)[0] for _ in range(G)]        rs = [true_reward(a) for a in acts]        mean = sum(rs) / G        std = math.sqrt(sum((r - mean) ** 2 for r in rs) / G) + EPS        adv = [(r - mean) / std for r in rs]        for _ in range(EPOCHS):            p = softmax(logits)            grads = [0.0] * K            for a, A in zip(acts, adv):                rho = p[a] / p0[a]                rho_c = max(min(rho, 1 + CLIP), 1 - CLIP)                if rho * A < rho_c * A:                    for j in range(K):                        grads[j] += A * rho * ((1 if j == a else 0) - p[j])            gkl = grad_kl(p)            logits = [z + LR * (g - BETA * kg) for z, g, kg in zip(logits, grads, gkl)]        if it % 50 == 0:            best = max(range(K), key=lambda a: p0[a])            print('iter', it, 'best', best, 'p=', round(p0[best], 3))    print('done') train()
目的:用纯 Python 实现一个玩具版 GRPO——对 10 个动作的“小词汇表”做组内采样、相对优势归一化与裁剪策略更新,观察策略逐步学会高奖励动作。
  1. p0 = softmax(logits)冻结当前策略作为“旧策略”,之后用它采样一组输出。
  2. acts = [random.choices(range(K), weights=p0)[0] for _ in range(G)]从旧策略下采样 G 条动作,对应 GRPO 的组内试跳。
  3. mean = sum(rs) / G计算这一组奖励的均值,作为组内平均线。
  4. adv = [(r - mean) / std for r in rs]核心一步:组内相对优势,先减均值再除标准差。
  5. rho = p[a] / p0[a]计算新策略对该动作的概率比,衡量更新幅度。
  6. if rho * A < rho_c * A:判断是否处于未裁剪分支,超出信任域就丢弃该样本的梯度。
  7. grads[j] += A * rho * ((1 if j == a else 0) - p[j])策略梯度:提升被表扬动作的概率、压低被惩罚动作。
  8. gkl = grad_kl(p)对参照分布(均匀分布)求 KL 梯度,充当“别忘基本功”的刹车。
  9. logits = [z + LR * (g - BETA * kg) for z, g, kg in zip(logits, grads, gkl)]合成更新:优势梯度叠加 KL 惩罚。

常见误区

误区“GRPO 不是去掉了价值网络吗?那奖励模型和奖励信号是不是也不需要了?我直接用模型自己生成的答案排序不就行了?”

正解去掉的是“价值网络”(负责估计状态基准分的辅助网络),奖励信号依然必须——它是裁判给出的绝对分。GRPO 只是不再需要助理把绝对分换算成“基准分 + 优势”,而是直接用组内统计量完成换算。奖励模型或规则奖励该用还得用,否则无从谈“好动作”与“坏动作”。

为何常见:“价值网络”和“奖励”都以价值/分数的面目出现,初学者很容易把“去价值网络”误解成“去奖励”。

误区“既然是比较,那我把组内输出排个名次,第一名正奖励、最后一名负奖励,不就和 GRPO 一样吗?”

正解排名只保留序关系,丢了差距的大小。GRPO 的标准化同时保留方向与幅度:高出平均线 3 个标准差与高出 0.3 个标准差的强化力度完全不同。减均值、除标准差是连续统计量,比单纯排序的信息量丰富得多。

为何常见:“相对”一词容易让人联想到排行榜、名次,忽略了均值与标准差背后的数学实质。

误区“既然 DeepSeek-R1 用了 GRPO,说明 PPO 已经过时了,以后所有对齐任务都用 GRPO 就行。”

正解GRPO 的胜出依赖“奖励可核验 + 组内采样成本可接受”这两个条件。在开放域对话、长程智能体等奖励难以客观量化的场景,价值网络提供的长期回报估计仍有价值;PPO 在通用强化学习中依然广泛使用。正确的做法是按任务特性与训练成本选择,而非盲目替换。

为何常见:明星模型的光环效应,让人忽略了其成功背后的任务特性——数学与代码的可核验奖励。

误区“GRPO 把价值网络都省了,那 KL 惩罚里的参照模型应该也不需要了吧?反正可以再省一个模型。”

正解π_ref(参照模型)与价值网络是两回事。价值网络用于估计优势,参照模型用于约束策略漂移、抑制奖励黑客。GRPO 目标函数里的 KL 惩罚项照样存在,实践中也要保留一个参照模型(通常取 SFT 后或 RL 之前的快照)。

为何常见:把“省价值网络”扩大成“省所有辅助模型”,忽略了 KL 刹车是策略优化稳定性的另一半支柱。

误区“DPO 和 GRPO 都是不用价值网络的新方法,参数改一改就能互换,效果应该差不多。”

正解DPO 是离线、静态偏好对上的隐式奖励优化,一轮数据一次迭代,不做在线探索;GRPO 是在线采样、显式奖励上的近端优化,可以持续利用环境反馈。前者不能替代后者做在线强化,后者也不能直接消费静态偏好对(需要额外构造奖励)。二者常在同一对齐流程的不同阶段配合使用。

为何常见:论文速览只看到“去价值网络”这个共同点,忽略了在线/离线、隐式/显式奖励这些根本差异。

面试题

Q1. GRPO 相对 PPO 最核心的结构性改动是什么?

单选题 · easy

  • A.增加策略网络参数量来拟合奖励
  • B.去掉价值网络改用组内相对优势← 正确答案
  • C.用监督学习直接替代强化学习
  • D.用人类反馈直接替换奖励信号

答案:B。GRPO 的核心改动就是辞掉评分助理(价值网络),改用同一组试跳(组内输出)的成绩互相比较来估计优势。A 方向相反,C 把问题扯到监督学习,D 把奖励换成人类反馈,都不是 GRPO 的结构性改动。

Q2. GRPO 计算组内相对优势时,使用以下哪组统计量?

单选题 · easy

  • A.价值网络给出的长期折扣回报
  • B.单条轨迹累积奖励的总和值
  • C.奖励模型输出的绝对打分值
  • D.组内奖励的均值与标准差← 正确答案

答案:D。“相对优势”的“相对”落在减均值、除标准差两步上,正是组内归一化。价值网络回报(A)、绝对打分(C)、累积奖励(B)都不是组内相对统计量,无法实现方差压缩。

Q3. GRPO 最适合应用于以下哪类对齐任务?

单选题 · easy

  • A.答案可自动核验的数学与代码← 正确答案
  • B.纯视觉生成且无文本奖励
  • C.开放式闲聊无客观评判标准
  • D.语音合成且无偏好可用数据

答案:A。GRPO 的奖励要求可自动核验,数学与代码最吻合。视觉生成、开放闲聊、语音合成缺乏客观的规则奖励信号,无法直接用“对/错”打分,GRPO 的组内比较优势难以发挥。

Q4. 关于 GRPO 删除价值网络,下列哪项说法正确?

单选题 · mid

  • A.训练必然发散因为缺少额外监督
  • B.导致策略更新幅度完全失去约束
  • C.消除了移动目标使训练更加稳定← 正确答案
  • D.只节省显存却不减少任何计算量

答案:C。价值网络是个不断被策略更新改写的“移动目标”,去掉它之后训练信号更稳(C 正确)。A、B、D 都是夸大其词:删除价值网络不会必然发散,更新仍由裁剪与 KL 约束,计算量同样显著下降。

Q5. GRPO 目标中 min 与 clip 联合起到的作用是?

单选题 · mid

  • A.提高组内采样频率以加快数据利用
  • B.删除奖励中所有噪声以稳定训练
  • C.让新旧策略始终保持完全一致
  • D.限制单次更新幅度维持信任域← 正确答案

答案:D。min 配合 clip 构成信任域机制:允许表扬与批评,但不允许一步把动作改得面目全非(D 正确)。A 说采样频率、B 说消除噪声、C 说新旧策略完全一致,都不是这对组合的真实作用。

Q6. 下列哪些属于 GRPO 相对 PPO 的优势?

多选题 · mid

  • A.省去价值网络降低显存与计算开销← 正确答案
  • B.不再依赖价值网络自举累加误差← 正确答案
  • C.组内归一化有助于压缩奖励方差← 正确答案
  • D.完全不再需要任何人类标注数据

答案:ABC。A、B、C 分别对应显存节省、无自举误差、方差压缩,都是 GRPO 相对 PPO 的真实优势。D 错误:GRPO 仍然依赖奖励信号,而奖励来源依然可能需要人类设计或标注。

Q7. DPO 与 GRPO 在数据利用上的关键区别是?

单选题 · mid

  • A.一个用组内奖励,一个用状态价值
  • B.一个用静态偏好对,一个在线采样← 正确答案
  • C.两者都需要价值网络来估计优势
  • D.两者都只能用于监督微调阶段

答案:B。DPO 直接消费静态偏好对,GRPO 则在线采样组并利用奖励信号(B 正确)。A 描述的“组内奖励/状态价值”是优势来源而非数据形态;C 说两者都要价值网络,错误;D 说两者都只能用于微调,与事实不符。

Q8. GRPO 在开放环境中可能面临的挑战有哪些?

多选题 · hard

  • A.奖励无法客观核验容易被模型钻空子← 正确答案
  • B.整组输出低质仍给最优者正优势← 正确答案
  • C.训练中输出长度激增导致奖励游戏化← 正确答案
  • D.价值网络显存占用成为最大瓶颈

答案:ABC。开放环境奖励难以核验(A)、全组都差时矮子里拔将军(B)、输出长度被奖励模型误判(C)都是真实存在的风险。D 错误:GRPO 恰恰没有价值网络,显存瓶颈根本不在价值网络上。

Q9. 为什么组内相对优势能降低策略梯度的方差?

单选题 · hard

  • A.因为减均值除标准差实现自归一化← 正确答案
  • B.因为奖励模型不再需要参与训练过程
  • C.因为每组样本数量因此自动增加一倍
  • D.因为策略网络参数量因此大幅缩减了

答案:A。减均值、除标准差把不同尺度的奖励统一到同一量纲,相当于把“差多少分”换算成“差几个身位”,梯度天然稳定(A 正确)。奖励模型是否参与、样本数量、参数量都与方差压缩没有直接因果关系。

Q10. 关于 GRPO 目标中的 KL 惩罚项,下列哪些说法正确?

多选题 · extreme

  • A.防止策略偏离参照模型过远产生突变← 正确答案
  • B.用价值网络替代组内优势的估计
  • C.让策略更新稳定且输出不至于退化← 正确答案
  • D.计算参照模型与策略之间的距离← 正确答案

答案:ACD。KL 惩罚衡量参照模型与策略分布之间的距离(D),防止策略跑偏过远(A),从而让更新稳定、输出不退化(C),并能部分缓解奖励黑客。B 错误:GRPO 根本没有价值网络,KL 项的作用也从来不是替代优势估计。