3.4 GRPO:用“组内相对优势”替代 Critic 的 RLHF-PPO 改进

大模型对齐场景里,PPO 往往被用作 Online、On-Policy 的强化学习算法:模型在给定问题 qqq 的条件下生成回答 ooo,再由奖励信号引导策略更新。在经典 RLHF-PPO 框架中,训练与推理链路通常涉及四类模型:

  • Actor(策略模型)πθ(o∣q)\pi_\theta(o|q)πθ(oq),需要更新参数;
  • Critic(价值模型)Vψ(⋅)V_\psi(\cdot)Vψ(),需要更新参数;
  • Reward Model(奖励模型)rφ(q,o)r_\varphi(q,o)rφ(q,o),只推理;
  • Reference Model(参考模型)πref(⋅)\pi_{\text{ref}}(\cdot)πref(),只推理(用于 KL 约束)。

在传统强化学习里,Actor/Critic 往往是轻量网络、环境奖励是“自带的规则函数”,因此 4 个模块的代价并不夸张。但在 LLM/RLHF 场景下,四个模块通常都接近“一个大模型的规模”(至少是大模型级别的推理图),这会造成:

  1. 计算/显存成本巨大:同一条轨迹需要多次前向(Actor 生成、Reward 打分、Reference 计算 KL、Critic 估值/回传)。
  2. 误差累积更严重:Reward/Critic 的偏差、KL 估计误差、以及优势估计噪声都会叠加到策略梯度上。
  3. On-policy 不稳定:采样分布随策略快速变化,优势高方差导致训练容易震荡或塌缩。

因此,很多工作从“能不能少一个模型?”开始重新审视 PPO 结构:
Actor 是必须的;Reference 虽然可以理论上去掉(退化为最大熵/无约束 RL),但实际为了防止策略偏离太快通常仍保留;Reward 无论是 rule-based 还是 model-based 都不可或缺;于是最自然的切入点是:

能不能去掉 Critic(Value Model),仍然得到稳定可用的优势函数?

GRPO(Group Relative Policy Optimization)正是围绕这个问题提出的一类思路,其代表性实践可见于 DeepSeekMath 等工作。


1. 回顾:PPO 为什么依赖 Critic?

在 PPO 中,Actor 的更新依赖 优势函数 AtA_tAt。典型的 PPO Actor 更新写为:

Actor_loss=−min⁡(πθ(at∣st)πθold(at∣st)At, clip(πθ(at∣st)πθold(at∣st),1−ϵ,1+ϵ)At) \text{Actor\_loss}= -\min\left( \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)}A_t,\ \text{clip}\left(\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)},1-\epsilon,1+\epsilon\right)A_t \right) Actor_loss=min(πθold(atst)πθ(atst)At, clip(πθold(atst)πθ(atst),1ϵ,1+ϵ)At)

而 Critic 的训练通常基于 TD 误差(或其变体):

Critic_loss=(rt+γVψ(st+1)−Vψ(st))2 \text{Critic\_loss}=\left(r_t+\gamma V_\psi(s_{t+1})-V_\psi(s_t)\right)^2 Critic_loss=(rt+γVψ(st+1)Vψ(st))2

优势函数常见用 GAE(Generalized Advantage Estimation) 估计:

AtGAE=∑l=0∞(γλ)lδt+l,δt=rt+γVψ(st+1)−Vψ(st) A_t^{\text{GAE}} \mathrm{}= \sum_{l=0}^{\infty}(\gamma\lambda)^l\delta_{t+l}, \quad \delta_t=r_t+\gamma V_\psi(s_{t+1})-V_\psi(s_t) AtGAE=l=0(γλ)lδt+l,δt=rt+γVψ(st+1)Vψ(st)

可以看到:GAE 的核心就是 Critic 参与对未来回报的低方差估计。没有 Critic,就很难在一般 MDP 中得到稳定的 AtA_tAt


2. GRPO 的关键观察:Outcome Reward 场景是“一步 MDP”

在很多 LLM 强化学习设置里(尤其是数学、代码、对话质量的 RLHF),奖励往往是对 整段输出 的一个标量打分,例如 ORM(Outcome Reward Model)给出 r(q,o)r(q,o)r(q,o)

这意味着交互可以被近似成“一步决策”:

  • 状态:s=qs=qs=q(问题本身)
  • 动作:a=oa=oa=o(整段回答)
  • 奖励:R(s,a)=r(q,o)R(s,a)=r(q,o)R(s,a)=r(q,o)(只在结束时给一次)

此时回报就是一步奖励:

G=R(s,a) G = R(s,a) G=R(s,a)

于是价值函数与动作价值函数退化为:

V(s)=Ea∼π(⋅∣s)[R(s,a)],Q(s,a)=R(s,a) V(s)=\mathbb{E}_{a\sim\pi(\cdot|s)}[R(s,a)], \quad Q(s,a)=R(s,a) V(s)=Eaπ(s)[R(s,a)],Q(s,a)=R(s,a)

那么优势函数:

A(s,a)=Q(s,a)−V(s)=R(s,a)−Ea′∼π(⋅∣s)[R(s,a′)] A(s,a)=Q(s,a)-V(s) =R(s,a)-\mathbb{E}_{a'\sim\pi(\cdot|s)}[R(s,a')] A(s,a)=Q(s,a)V(s)=R(s,a)Eaπ(s)[R(s,a)]

这个式子非常关键:
优势就是“当前输出奖励”减去“同一问题下策略期望奖励”

而 GRPO 的做法是:对同一问题 qqq,用旧策略 πθold\pi_{\theta_{\text{old}}}πθold 采样出一组回答(group):

{o1,o2,…,oG}∼πθold(⋅∣q) \{o_1,o_2,\ldots,o_G\}\sim \pi_{\theta_{\text{old}}}(\cdot|q) {o1,o2,,oG}πθold(q)

然后 Reward Model 给出一组标量奖励:

r={r1,r2,…,rG},ri=r(q,oi) \mathbf{r}=\{r_1,r_2,\ldots,r_G\},\quad r_i=r(q,o_i) r={r1,r2,,rG},ri=r(q,oi)

接下来用 组内统计量 近似 V(q)V(q)V(q),从而得到优势估计:

A^i=ri−mean(r)std(r) \hat{A}_i \mathrm{}= \frac{r_i-\text{mean}(\mathbf{r})}{\text{std}(\mathbf{r})} A^i=std(r)rimean(r)

其中:

mean(r)=1G∑i=1Gri,std(r)=1G∑i=1G(ri−mean(r))2 \text{mean}(\mathbf{r})=\frac{1}{G}\sum_{i=1}^{G}r_i, \quad \text{std}(\mathbf{r})=\sqrt{\frac{1}{G}\sum_{i=1}^{G}(r_i-\text{mean}(\mathbf{r}))^2} mean(r)=G1i=1Gri,std(r)=G1i=1G(rimean(r))2

直觉解释:

  • rir_iri 近似 Q(q,oi)Q(q,o_i)Q(q,oi)
  • mean(r)\text{mean}(\mathbf{r})mean(r) 近似 V(q)V(q)V(q)(同题下策略平均表现);
  • 再除以标准差是为了做尺度归一化,减少不同 batch / 不同题目奖励尺度差异带来的训练不稳定。

因此,GRPO 在 ORM(结果奖励)场景下可以做到 Critic-Free:不再训练 VψV_\psiVψ,而是直接用 group 的相对奖励构造优势。


3. 一个具体例子:组内相对优势是怎么工作的?

假设对同一个问题 qqq,采样 G=4G=4G=4 个回答,Reward Model 输出:

r={0.20, 0.25, 0.10, 0.45} \mathbf{r}=\{0.20,\ 0.25,\ 0.10,\ 0.45\} r={0.20, 0.25, 0.10, 0.45}

先算均值:

mean(r)=0.20+0.25+0.10+0.454=1.004=0.25 \text{mean}(\mathbf{r})=\frac{0.20+0.25+0.10+0.45}{4}=\frac{1.00}{4}=0.25 mean(r)=40.20+0.25+0.10+0.45=41.00=0.25

再算方差项(这里用总体方差形式):

14∑i=14(ri−0.25)2=14((−0.05)2+(0.00)2+(−0.15)2+(0.20)2)=14(0.0025+0+0.0225+0.0400)=0.06504=0.01625 \begin{aligned} \frac{1}{4}\sum_{i=1}^{4}(r_i-0.25)^2 &= \frac{1}{4}\left( ( -0.05)^2+(0.00)^2+(-0.15)^2+(0.20)^2 \right) \\ &=\frac{1}{4}\left(0.0025+0+0.0225+0.0400\right) =\frac{0.0650}{4}=0.01625 \end{aligned} 41i=14(ri0.25)2=41((0.05)2+(0.00)2+(0.15)2+(0.20)2)=41(0.0025+0+0.0225+0.0400)=40.0650=0.01625

标准差:

std(r)=0.01625≈0.1275 \text{std}(\mathbf{r})=\sqrt{0.01625}\approx 0.1275 std(r)=0.01625 0.1275

于是优势:

A^={0.20−0.250.1275,0.25−0.250.1275,0.10−0.250.1275,0.45−0.250.1275}≈{−0.392, 0, −1.176, 1.569} \hat{A}= \left\{ \frac{0.20-0.25}{0.1275}, \frac{0.25-0.25}{0.1275}, \frac{0.10-0.25}{0.1275}, \frac{0.45-0.25}{0.1275} \right\} \approx \{-0.392,\ 0,\ -1.176,\ 1.569\} A^={0.12750.200.25,0.12750.250.25,0.12750.100.25,0.12750.450.25}{0.392, 0, 1.176, 1.569}

含义非常直接:

  • 第 4 个回答显著高于组内平均,优势为正且最大,会被强化;
  • 第 3 个回答显著低于平均,优势为负且绝对值大,会被强烈抑制;
  • 第 2 个回答刚好等于平均,几乎不更新;
  • 第 1 个略低于平均,小幅惩罚。

最重要的是:这个优势完全不需要 Critic。


4. “广播到每个 token”意味着什么?

在序列生成里,策略是按 token 自回归的:

πθ(o∣q)=∏t=1∣o∣πθ(ot∣q,o<t) \pi_\theta(o|q)=\prod_{t=1}^{|o|}\pi_\theta(o_t|q,o_{<t}) πθ(oq)=t=1oπθ(otq,o<t)

但 ORM 只给整段输出一个标量奖励 rir_iri。GRPO 的做法是把同一个 A^i\hat{A}_iA^i 广播 到该回答的每个 token 上:

A^i,t=A^i,t=1,…,∣oi∣ \hat{A}_{i,t}=\hat{A}_i,\quad t=1,\ldots,|o_i| A^i,t=A^i,t=1,,oi

这等价于说:对于回答 oio_ioi 里的每一步 token 选择,更新方向和强度由同一个“整段回答的相对好坏”决定。

这种做法的优点:

  • 实现简单,不需要 step-level 的价值估计;
  • 对于“一步 MDP”近似合理(整段输出就是一个动作)。

但它也带来潜在问题:

  • 如果奖励噪声较大,广播会把噪声传播到所有 token;
  • 长序列中,重复片段可能因整体奖励较高而被整体强化,导致重复模式更容易固化。

这也是后面“重复/塌缩”问题的重要背景。


5. PRM(过程奖励)下的 GRPO:优势如何构造?

当奖励来自 PRM(Process Reward Model)时,奖励不再只在最终给一次,而是对若干“步骤终止点”给分。

记第 iii 个输出 oio_ioiKiK_iKi 个步骤,在这些步骤的 end token 位置 index(j)\text{index}(j)index(j) 给奖励 riindex(j)r_i^{\text{index}(j)}riindex(j)。则奖励集合可以写成:

R={{r1index(1),⋯ ,r1index(K1)},⋯ ,{rGindex(1),⋯ ,rGindex(KG)}} \mathbf{R}= \left\{ \left\{r_{1}^{\text{index}(1)},\cdots,r_{1}^{\text{index}(K_1)}\right\},\cdots, \left\{r_{G}^{\text{index}(1)},\cdots,r_{G}^{\text{index}(K_G)}\right\} \right\} R={{r1index(1),,r1index(K1)},,{rGindex(1),,rGindex(KG)}}

GRPO 的直观做法是对“步骤奖励”做组内归一化,然后构造从当前位置到后续步骤的累计优势:

A^i,t=∑index(j)≥tr~iindex(j),r~iindex(j)=riindex(j)−mean(r)std(r) \hat{A}_{i,t} \mathrm{}= \sum_{\text{index}(j)\ge t}\tilde{r}_{i}^{\text{index}(j)} ,\quad \tilde{r}_{i}^{\text{index}(j)} \mathrm{}= \frac{r_{i}^{\text{index}(j)}-\text{mean}(\mathbf{r})}{\text{std}(\mathbf{r})} A^i,t=index(j)tr~iindex(j),r~iindex(j)=std(r)riindex(j)mean(r)

其中 mean(r)\text{mean}(\mathbf{r})mean(r)std(r)\text{std}(\mathbf{r})std(r) 是对同题 group 内相应步骤奖励的统计量(具体实现可能对齐到同类步骤、或聚合所有步骤再统计)。

直觉解释:

  • 每个步骤先被转成“相对于组内平均的好坏”;
  • token 位置 ttt 的优势累积了“从当前步骤到后续步骤”的相对收益;
  • 相当于给了一个“后续期望”的近似,但并不是严格的价值函数推导,更像是工程上合理的 shaping。

6. GRPO 的整体目标:PPO 形式 + 组内优势 + 显式 KL

GRPO 的目标函数通常写成(按 token 级别求和):

JGRPO(θ)=Eq∼P(Q),{oi}i=1G∼πθold(O∣q)[1G∑i=1G1∣oi∣∑t=1∣oi∣(min⁡(ρi,tA^i,t, clip(ρi,t,1−ε,1+ε)A^i,t)−β DKL[πθ∣∣πref])] \begin{aligned} \mathcal{J}_{\text{GRPO}}(\theta) &= \mathbb{E}_{q\sim P(Q),\{o_i\}_{i=1}^{G}\sim\pi_{\theta_{\text{old}}}(O|q)} \left[ \frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_i|}\sum_{t=1}^{|o_i|} \Bigg( \min\Big( \rho_{i,t}\hat{A}_{i,t},\ \text{clip}(\rho_{i,t},1-\varepsilon,1+\varepsilon)\hat{A}_{i,t} \Big) -\beta\,\mathbb{D}_{KL}[\pi_\theta||\pi_{\text{ref}}] \Bigg) \right] \end{aligned} JGRPO(θ)=EqP(Q),{oi}i=1Gπθold(Oq) G1i=1Goi1t=1oi(min(ρi,tA^i,t, clip(ρi,t,1ε,1+ε)A^i,t)βDKL[πθ∣∣πref])

其中重要性比率:

ρi,t=πθ(oi,t∣q,oi,<t)πθold(oi,t∣q,oi,<t) \rho_{i,t} \mathrm{}= \frac{\pi_\theta(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{\text{old}}}(o_{i,t}|q,o_{i,<t})} ρi,t=πθold(oi,tq,oi,<t)πθ(oi,tq,oi,<t)

与 PPO 的一个常见差别在于:GRPO 往往把 KL 作为 显式正则项 放在目标函数里,而不是像 PPO 那样把 KL “揉进奖励”:

  • GRPO 的 KL 项可能使用一个无偏估计形式(写成对某种比率的函数):
    DKL[πθ∣∣πref]=πref(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)−log⁡πref(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)−1 \mathbb{D}_{KL}[\pi_{\theta}||\pi_{\text{ref}}] = \frac{\pi_{\text{ref}}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})} -\log\frac{\pi_{\text{ref}}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})} -1 DKL[πθ∣∣πref]=πθ(oi,tq,oi,<t)πref(oi,tq,oi,<t)logπθ(oi,tq,oi,<t)πref(oi,tq,oi,<t)1

  • PPO 常见是把 KL 惩罚写成 token 级奖励的惩罚项:
    rt=rφ(q,o≤t)−βlog⁡πθ(ot∣q,o<t)πref(ot∣q,o<t) r_t = r_{\varphi}(q,o_{\le t}) -\beta \log\frac{\pi_{\theta}(o_t|q,o_{<t})}{\pi_{\text{ref}}(o_t|q,o_{<t})} rt=rφ(q,ot)βlogπref(otq,o<t)πθ(otq,o<t)

这两者的核心作用相同:限制策略不要过快偏离参考策略,缓解 reward hacking 与分布漂移,但实现形式不同会影响训练动态与稳定性。


7. 为什么 GRPO 更省资源?

从“模型数量”角度看,GRPO 的主要收益在于:

  • 去掉 Critic/Value Model:不再需要训练一个价值头或独立价值模型,也不再需要 GAE 的价值估计链路。
  • 对 ORM 场景尤其成立:优势由组内 reward 直接构造。

因此训练推理链路从(Actor + Critic + Reward + Ref)变为(Actor + Reward + Ref),计算和显存压力显著下降,工程复杂度也降低。


8. 训练中常见问题:为什么会出现大量重复内容?

在 LLM 的 On-Policy 强化学习(包括 GRPO)中,一个高频现象是生成越来越重复、模板化。常见机制包括:

8.1 Entropy Collapse(策略熵塌缩)

GRPO 是 Critic-Free 的,优势信号往往更噪、更“硬”,并且对长序列的 token 广播会放大更新的整体一致性。策略为了降低不确定性,倾向于收缩到低熵模式,表现为:

  • 输出多样性下降;
  • 同一类句式、同一类推理模板被反复选择;
  • 甚至出现循环、冗余段落。

从目标角度看,当 A^i,t\hat{A}_{i,t}A^i,t 在整段 token 上同号时,梯度会推动整段输出概率整体上升或下降,容易造成“单一模式被快速放大”。

8.2 Reward Hacking(奖励黑客)

如果 Reward Model 隐含地偏好某些形式特征(例如更长、更详细、更像“解释”的文本),模型会找到低成本的策略去最大化奖励:

  • 用重复内容拉长长度;
  • 用大量同义改写堆叠信息密度不高的段落;
  • 用固定模板迎合 RM 的偏好。

这在“只看结果评分”的 ORM 场景尤其明显:RM 可能无法区分“有效信息”与“冗余堆叠”。

8.3 偏好数据分布本身会促使“温度锐化”

即使 RM 完美,如果训练偏好(或验证规则)更倾向于“常见答案/常见表达”,最优策略也可能收敛到更尖锐的分布:
高频模式被进一步强化,尾部探索被抑制,表现为输出趋同。


9. 常用缓解手段(思路级别)

下面给出几类常见的缓解方向,它们分别从“熵控制”“局部更新稳定性”“训练信号质量”“超参调节”四条线入手。

9.1 任意熵策略优化:更可控地稳定熵

传统做法常加 entropy bonus,但在 LLM 长序列与 KL 约束并存时,熵项很容易与 KL、奖励目标互相拉扯,难以精确控制。

AEPO 的核心思想是:不依赖简单的 entropy bonus,而是在温度调整后的分布上构造策略梯度,使策略熵能被更稳定、可预期地调节。直观上它把“要保持多少随机性”变成更直接的优化对象,从而减缓熵塌缩。

9.2 基于协方差的局部裁剪:抑制 token 级高方差更新

在长序列里,局部 token 的梯度噪声可能非常大。传统 PPO 的 ϵ\epsilonϵ-clip 更像是对整体重要性比率的约束,未必能精准抑制“某些局部 token 引发的剧烈更新”。

Clip-Cov 一类方法强调 token-level 的稳定:裁剪那些协方差大、对更新最不稳定的 token,使更新更平滑,减少局部突变造成的重复模式固化。

直觉类比:

  • 传统 clip 像是“限制整段走太远”;
  • token-level 稳定化像是“限制某一步别迈太猛”。

9.3 策略过滤:只用高信噪比样本更新

PF-PPO 的思想是:在采样后过滤掉奖励信号不够可靠、方差大或介于中间的样本,只用高信噪比子集更新策略。

从学习角度看,这相当于提高梯度估计的 SNR(signal-to-noise ratio):

  • 噪声样本少了,策略更不容易把“奖励噪声”当规律去拟合;
  • 过拟合导致的模式塌缩会被缓解;
  • 但代价是样本利用率下降,需要更好的采样与筛选策略平衡。

9.4 调参:最常见也最直接的手段

在很多系统里,重复问题首先是“训练动态没压住”,调参往往立竿见影。

(1) Rollout 采样温度
即使策略本身在收缩,提高 rollout 阶段的采样温度也能让 buffer 保留更多多样化轨迹,增加组内对比的有效性,避免 group 内样本高度同质化。

(2) KL 系数 βKL\beta_{KL}βKL
βKL\beta_{KL}βKL 过低会让策略过于激进地追逐 RM,容易快速偏离参考分布,导致 reward hacking 与熵塌缩。实践中通常需要监控 KL 与多样性指标(例如 Distinct-N 等),动态调节 βKL\beta_{KL}βKL

(3) 裁剪阈值 ε\varepsilonε
在 GRPO/DAPO 等实践中,较高的 ε\varepsilonε(例如 ε=0.28\varepsilon=0.28ε=0.28)允许更激进的更新,有时反而能对抗早期收缩,但它也可能带来更强的震荡风险,需要与 KL 约束、采样温度一起配合。


10. 小结:GRPO 的核心价值与局限

核心价值:

  • 利用同题 group 采样,把优势函数从“Critic 估计”改为“组内相对奖励”:
    A^i=ri−mean(r)std(r) \hat{A}_i=\frac{r_i-\text{mean}(\mathbf{r})}{\text{std}(\mathbf{r})} A^i=std(r)rimean(r)
  • 在 ORM 一步 MDP 近似下合理,从而 去掉 Critic,显著降低训练资源需求与工程复杂度。
  • 组内相对比较天然减少奖励尺度不一致问题,提高训练可控性。

主要局限:

  • 对长序列广播优势会放大噪声与模式固化风险;
  • Reward hacking 与 entropy collapse 在 on-policy 下仍然普遍,需要配套的熵控制、稳定化与过滤策略;
  • PRM 场景的优势构造更偏工程启发式,稳定性与一致性更依赖实现细节。

整体而言,GRPO 可以看作是面向 LLM/RLHF 资源瓶颈与稳定性问题的一次结构性改造:
用“同题多采样的组内相对优势”替代 Critic,使强化学习更轻量、更贴合结果奖励的生成式任务,同时也把训练稳定性的压力转移到采样策略、KL 约束与防塌缩机制上。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐