返回博客

/ LLM算法

[LLM算法-1] 从比较信号理解 PPO、DPO 与 GRPO

从策略梯度与 KL 正则化出发,推导 PPO、DPO、GRPO 的目标函数,厘清 Critic、Reward、Old Policy 与 Reference Policy 的角色,并分析三者的适用场景和常见误区。

26 minLLM · Post-training · PPO · DPO

PPO、DPO 和 GRPO 经常一起出现在大模型后训练的讨论里。它们都在改变模型的输出分布,但真正训练起来,三者需要的数据、模型组件和反馈回路并不相同。

如果只记算法名,很容易把它们都理解成“让好回答概率上升、坏回答概率下降”。这句话没有错,却漏掉了最关键的问题:一个回答究竟要和谁比较,才算好或坏?

我更愿意用“比较信号”来区分三者:

PPO:实际回报与 Critic 预测比较\boxed{\text{PPO:实际回报与 Critic 预测比较}} DPO:chosen/rejected 的相对偏好与 Reference Policy 比较\boxed{\text{DPO:chosen/rejected 的相对偏好与 Reference Policy 比较}} GRPO:同一 Prompt 下的回答在组内比较\boxed{\text{GRPO:同一 Prompt 下的回答在组内比较}}

对应到训练范式:

算法数据从哪里来核心比较信号典型训练方式
PPO当前或旧策略在线采样回报减去 Critic 估计的 baselineReward + Critic + 近似 on-policy RL
DPO固定的 chosen/rejected 偏好对当前策略相对 reference 的偏好 margin离线 pairwise logistic optimization
GRPO对每个 Prompt 在线采样一组回答单个回答相对组内均值的奖励Reward + Group Baseline + 近似 on-policy RL

这里先纠正一个常见误解:GRPO 省掉的是 PPO 中通常使用的 Critic 或 Value Model,不是 reward signal。 GRPO 仍然要给回答打分,只是这个分数不一定来自一个学习出来的 Reward Model。它也可以来自数学答案验证器、代码测试、规则、格式检查、LLM Judge,或者多种信号的组合。

1. 共同起点:把生成写成策略优化#

给定 Prompt xx,模型生成回答:

y=(y1,y2,,yT).y=(y_1,y_2,\ldots,y_T).

自回归语言模型给整段回答分配的概率是:

πθ(yx)=t=1Tπθ(ytx,y<t).\pi_\theta(y\mid x) = \prod_{t=1}^{T} \pi_\theta(y_t\mid x,y_{<t}).

在强化学习语言里,可以做如下对应:

强化学习概念大模型生成中的含义
state sts_tPrompt 与已经生成的前缀 (x,y<t)(x,y_{<t})
action ata_t下一个 token yty_t
policy πθ\pi_\theta语言模型的 next-token distribution
trajectory一条完整回答 yy
reward R(x,y)R(x,y)对回答质量的标量或过程评分

最直接的目标是让当前策略生成的回答获得更高期望奖励:

J(θ)=ExD,yπθ(x)[R(x,y)].J(\theta) = \mathbb E_{x\sim\mathcal D,\,y\sim\pi_\theta(\cdot\mid x)} [R(x,y)].

但在大模型后训练里,通常还不希望策略为了一个狭窄 reward 大幅偏离原模型。因此更常见的是 KL 正则化目标:

JKL(π)=Eyπ(x)[R(x,y)]βDKL(π(x)πref(x)).J_{\mathrm{KL}}(\pi) = \mathbb E_{y\sim\pi(\cdot\mid x)}[R(x,y)] - \beta D_{\mathrm{KL}} \left( \pi(\cdot\mid x)\,\Vert\,\pi_{\mathrm{ref}}(\cdot\mid x) \right).

其中 πref\pi_{\mathrm{ref}} 通常是冻结的 SFT 模型。这个 reference 改变了优化目标本身,它不是用来降低梯度方差的 baseline。

1.1 五个角色不要混在一起#

PPO 和 GRPO 的实现里常同时出现多个“模型副本”,它们各自解决不同问题:

角色是否更新用途
Current Policy πθ\pi_\theta正在被优化的模型
Old Policy πold\pi_{\mathrm{old}}每轮快照产生 rollout,并构造 PPO/GRPO 的 probability ratio
Reference Policy πref\pi_{\mathrm{ref}}通常冻结通过 KL 约束长期漂移
Critic VϕV_\phiPPO 中通常更新预测状态价值,构造低方差 advantage
Reward Model rψr_\psiRL 阶段通常冻结在经典 RLHF 中给回答打分

特别需要区分两组概念:

  • Old Policy 与 Reference Policy:前者服务于近似 on-policy 更新,会随 rollout 轮次刷新;后者是长期锚点,通常固定。
  • Reward signal 与 Reward Model:算法需要 reward,不代表必须训练神经网络 Reward Model。可验证任务可以直接使用测试器或规则。

2. 策略梯度:PPO 与 GRPO 的共同数学底座#

离散 token 是采样出来的,不能沿着“采样 token -> reward”这条路径直接对 reward 反向传播。策略梯度绕开了这个问题。

先固定一个 Prompt,把期望奖励写成求和:

Jx(θ)=yπθ(yx)R(x,y).J_x(\theta) = \sum_y \pi_\theta(y\mid x)R(x,y).

利用恒等式:

θπθ(yx)=πθ(yx)θlogπθ(yx),\nabla_\theta \pi_\theta(y\mid x) = \pi_\theta(y\mid x) \nabla_\theta\log\pi_\theta(y\mid x),

可以得到 REINFORCE:

θJx(θ)=Eyπθ[R(x,y)θlogπθ(yx)].\nabla_\theta J_x(\theta) = \mathbb E_{y\sim\pi_\theta} \left[ R(x,y)\nabla_\theta\log\pi_\theta(y\mid x) \right].

再利用序列 log probability 的可加性:

logπθ(yx)=t=1Tlogπθ(ytst),\log\pi_\theta(y\mid x) = \sum_{t=1}^{T} \log\pi_\theta(y_t\mid s_t),

于是:

θJx(θ)=E[t=1TR(x,y)θlogπθ(ytst)].\nabla_\theta J_x(\theta) = \mathbb E \left[ \sum_{t=1}^{T} R(x,y) \nabla_\theta\log\pi_\theta(y_t\mid s_t) \right].

REINFORCE 的单样本梯度系数是 RR,但 reward 的绝对零点没有稳定含义:给所有 reward 加同一个常数,不会改变理想策略梯度的期望。只有引入 baseline 后,advantage 的正负才可以稳定地解释成相对鼓励或抑制。

2.1 Baseline 为什么能降低方差#

直接用 RR 加权通常方差很大。只要 baseline b(s)b(s) 不依赖当前采样动作,并且在求策略梯度时被视为常数,就有:

Eaπθ[b(s)θlogπθ(as)]=b(s)aθπθ(as)=b(s)θ1=0.\begin{aligned} \mathbb E_{a\sim\pi_\theta} \left[ b(s)\nabla_\theta\log\pi_\theta(a\mid s) \right] &= b(s)\sum_a\nabla_\theta\pi_\theta(a\mid s)\\ &= b(s)\nabla_\theta 1\\ &=0. \end{aligned}

因此可以把 RR 换成 advantage:

A(s,a)=Q(s,a)V(s),A(s,a)=Q(s,a)-V(s),

而不改变理想估计器的期望方向。直觉上,模型不再问“奖励绝对值有多高”,而是问“这次结果比当前状态下通常能得到的结果好多少”。

不过,这个零期望证明有明确前提:baseline 必须与当前动作无关。GRPO 的组均值包含当前样本自己的 reward,并不原封不动满足这个条件,后面会单独分析。

3. PPO:用 Critic 估计“通常水平”#

PPO 的核心任务是用旧策略采集的数据更新当前策略,同时避免 surrogate objective 鼓励一次过激的概率变化。它通常与 Actor-Critic 结构一起使用:PPO 原论文 给出 clipped surrogate objective,GAE 则提供了常用的 advantage 估计方法。

3.1 Value Model 与 GAE#

Critic 预测当前生成前缀的期望回报:

Vϕ(st)E[Gtst].V_\phi(s_t) \approx \mathbb E[G_t\mid s_t].

其中 GtG_t 是从第 tt 步开始的 return。一步 TD residual 为:

δt=rt+γVϕ(st+1)Vϕ(st).\delta_t = r_t+\gamma V_\phi(s_{t+1})-V_\phi(s_t).

GAE 把未来 TD residual 做指数加权:

A^tGAE=l=0Tt(γλ)lδt+l.\hat A_t^{\mathrm{GAE}} = \sum_{l=0}^{T-t} (\gamma\lambda)^l\delta_{t+l}.

这里沿用前文 t=1,,Tt=1,\ldots,T 的编号,并令终止状态 Vϕ(sT+1)=0V_\phi(s_{T+1})=0

λ\lambda 控制 bias-variance tradeoff:

  • λ=0\lambda=0 时只依赖一步 TD,方差低,但更依赖 Critic 的准确性;
  • λ\lambda 接近 11 时更接近 Monte Carlo return,偏差通常更低,方差更高。

Critic 自身通过回归目标 return 训练,例如:

LV(ϕ)=Et[(Vϕ(st)G^t)2].L_V(\phi) = \mathbb E_t \left[ \left(V_\phi(s_t)-\hat G_t\right)^2 \right].

在只有终局 task reward 的语言模型任务里,中间 token 的 rtr_t 可能主要来自逐 token KL shaping,最终 token 再收到回答级 reward。GAE 和 Critic 试图把这些回报分配到不同生成位置。

3.2 Probability ratio 与 clipped objective#

rollout 由 πold\pi_{\mathrm{old}} 采样。对其中第 tt 个 token,定义:

ρt(θ)=πθ(atst)πold(atst).\rho_t(\theta) = \frac{ \pi_\theta(a_t\mid s_t) }{ \pi_{\mathrm{old}}(a_t\mid s_t) }.

如果不做 clipping,常见 surrogate 是 ρtA^t\rho_t\hat A_t。PPO-Clip 改为最大化:

Jclip(θ)=Et[min(ρt(θ)A^t,clip(ρt(θ),1ϵclip,1+ϵclip)A^t)].J_{\mathrm{clip}}(\theta) = \mathbb E_t \left[ \min\left( \rho_t(\theta)\hat A_t, \operatorname{clip}(\rho_t(\theta),1-\epsilon_{\mathrm{clip}},1+\epsilon_{\mathrm{clip}})\hat A_t \right) \right].

A^t>0\hat A_t>0 时,样本希望提高该 token 的概率;当 ratio 超过 1+ϵclip1+\epsilon_{\mathrm{clip}} 后,截断分支不再为这个方向提供额外 surrogate 收益。反过来,当 A^t<0\hat A_t<0 时,样本希望降低概率;低于 1ϵclip1-\epsilon_{\mathrm{clip}} 后,目标也不再奖励继续向优势方向移动。

这里有一个很重要的边界:

PPO clip 不是把所有 probability ratio 强制限制在 [1ϵclip,1+ϵclip][1-\epsilon_{\mathrm{clip}},1+\epsilon_{\mathrm{clip}}] 内,也不是严格的 KL trust region。

一个参数更新会同时影响很多 token 和状态。即使某个样本的目标已经进入平坦区,其他样本的梯度仍可能把它的 ratio 推到区间外。PPO-Clip 提供的是一个局部、悲观的 surrogate,而不是硬约束。实践中仍然常监控 approximate KL,并在 KL 过大时 early stop 或调整系数。

3.3 PPO-RLHF 中 reward、reference 与 old policy 的位置#

经典 RLHF 流程通常是:

SFT -> preference data -> Reward Model -> PPO

Reward Model 常用 Bradley-Terry 假设训练。对于同一个 Prompt 的 preferred answer ywy_w 和 rejected answer yly_l

P(ywylx)=σ(rψ(x,yw)rψ(x,yl)),P(y_w\succ y_l\mid x) = \sigma\left(r_\psi(x,y_w)-r_\psi(x,y_l)\right), LRM(ψ)=E[logσ(rψ(x,yw)rψ(x,yl))].L_{\mathrm{RM}}(\psi) = -\mathbb E \left[ \log\sigma\left(r_\psi(x,y_w)-r_\psi(x,y_l)\right) \right].

只最大化 Reward Model 容易产生 reward hacking,因此 LLM PPO 通常再加入与 reference 的 KL 惩罚。KL 有两种常见的记账方式。

方式一:在 rollout 时把 KL 写进 shaped reward。 采样完成后 reward 与 advantage 应固定,因此公式使用采样时的 old policy:

rttotal=rttaskβlogπold(ytst)πref(ytst).r_t^{\mathrm{total}} = r_t^{\mathrm{task}} - \beta \log\frac{\pi_{\mathrm{old}}(y_t\mid s_t)}{\pi_{\mathrm{ref}}(y_t\mid s_t)}.

Critic 和 GAE 随后基于 rttotalr_t^{\mathrm{total}} 得到 A^ttotal\hat A_t^{\mathrm{total}}。示意性的待最大化目标为:

JPPOreward KL=Jclip(A^total)cVLV+cHH(πθ).J_{\mathrm{PPO}}^{\mathrm{reward\ KL}} = J_{\mathrm{clip}}(\hat A^{\mathrm{total}}) -c_VL_V +c_H\mathcal H(\pi_\theta).

方式二:把 KL 保留为显式 regularizer。 此时先用 task reward 计算 A^ttask\hat A_t^{\mathrm{task}},再最大化:

JPPOexplicit KL=Jclip(A^task)cVLV+cHH(πθ)βDKL(πθπref).J_{\mathrm{PPO}}^{\mathrm{explicit\ KL}} = J_{\mathrm{clip}}(\hat A^{\mathrm{task}}) -c_VL_V +c_H\mathcal H(\pi_\theta) -\beta D_{\mathrm{KL}}(\pi_\theta\Vert\pi_{\mathrm{ref}}).

这两式是对 KL 的两种实现选择,不应在 A^total\hat A^{\mathrm{total}} 已经包含同一 KL 惩罚时,又无意地重复减去一次。无论采用哪种方式,都要记住:

  • πold\pi_{\mathrm{old}} 出现在 ρt=πθ/πold\rho_t=\pi_\theta/\pi_{\mathrm{old}} 中,处理 rollout 数据的策略滞后;
  • πref\pi_{\mathrm{ref}} 出现在 KL 中,限制最终解相对 SFT 锚点的漂移。

不同代码库会把 KL 放进 reward 或目标,并对 value loss 使用不同形式;读实现时首先要确认它写的是待最大化 objective,还是待最小化 loss,避免符号混乱。

3.4 PPO 的代价在哪里#

PPO 的优势是 advantage 可以随状态变化,并能通过在线 rollout 探索新回答。但代价也很明确:

  • Critic 的预测误差会直接污染 advantage;
  • Actor、Critic、Reward、Reference 与 Old Policy 带来显存和调度复杂度;
  • rollout 必须足够新鲜,多 epoch 复用又不能让策略漂得太远;
  • reward hacking、长度偏置和 KL 控制仍然存在。

严格来说,PPO 的数学形式并不强制必须使用一个独立 Critic;但在大模型 RLHF 的常规 Actor-Critic 配置里,Value Model 是最典型、也是成本最高的组件之一。

4. DPO:把 KL 正则化 RL 改写成偏好分类#

DPO 不执行在线 rollout,也不显式拟合 Reward Model。它从 KL 正则化的 reward maximization 出发,把未知 reward 消去,最终得到一个直接作用在偏好对上的 logistic loss。DPO 论文 的关键就在这个闭式变换。

4.1 KL 正则化目标的闭式最优策略#

对固定 Prompt xx,考虑:

J(π)=yπ(yx)r(x,y)βyπ(yx)logπ(yx)πref(yx),J(\pi) = \sum_y\pi(y\mid x)r(x,y) - \beta\sum_y\pi(y\mid x) \log\frac{\pi(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)},

并满足 yπ(yx)=1\sum_y\pi(y\mid x)=1。对这个约束优化问题使用拉格朗日乘子,可以得到:

πr(yx)=πref(yx)exp(r(x,y)/β)Z(x),\pi_r^*(y\mid x) = \frac{ \pi_{\mathrm{ref}}(y\mid x) \exp\left(r(x,y)/\beta\right) }{Z(x)},

其中:

Z(x)=yπref(yx)exp(r(x,y)/β).Z(x) = \sum_y \pi_{\mathrm{ref}}(y\mid x) \exp\left(r(x,y)/\beta\right).

把它反解为 reward:

r(x,y)=βlogπr(yx)πref(yx)+βlogZ(x).r(x,y) = \beta\log \frac{\pi_r^*(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)} + \beta\log Z(x).

对于同一个 Prompt 下的两个回答,βlogZ(x)\beta\log Z(x) 会在 reward difference 中抵消:

r(x,yw)r(x,yl)=β[logπr(ywx)πref(ywx)logπr(ylx)πref(ylx)].\begin{aligned} r(x,y_w)-r(x,y_l) =\beta\Bigg[ &\log\frac{\pi_r^*(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)}\\ -&\log\frac{\pi_r^*(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)} \Bigg]. \end{aligned}

这一步说明:偏好只依赖 reward difference,因此无需恢复 reward 的绝对零点。

4.2 从 Bradley-Terry 到 DPO loss#

仍然使用 Bradley-Terry 偏好模型:

P(ywylx)=σ(r(x,yw)r(x,yl)).P(y_w\succ y_l\mid x) = \sigma\left(r(x,y_w)-r(x,y_l)\right).

用参数化策略 πθ\pi_\theta 逼近闭式最优策略,并定义 reference-relative margin:

mθ(x,yw,yl)=logπθ(ywx)πref(ywx)logπθ(ylx)πref(ylx).m_\theta(x,y_w,y_l) = \log\frac{\pi_\theta(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)} - \log\frac{\pi_\theta(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)}.

DPO 最小化:

LDPO(θ)=E(x,yw,yl)[logσ(βmθ(x,yw,yl))]\boxed{ L_{\mathrm{DPO}}(\theta) = -\mathbb E_{(x,y_w,y_l)} \left[ \log\sigma\left(\beta m_\theta(x,y_w,y_l)\right) \right] }

这里的 response log probability 是回答 token 的 log probability 之和:

logπθ(yx)=t=1ylogπθ(ytx,y<t),\log\pi_\theta(y\mid x) = \sum_{t=1}^{|y|} \log\pi_\theta(y_t\mid x,y_{<t}),

训练时通常 mask 掉 Prompt token,不把它们算进 response likelihood。

如果记 z=βmθz=\beta m_\theta,则单个样本的梯度是:

θLDPO=βσ(z)[θlogπθ(ywx)θlogπθ(ylx)].\nabla_\theta L_{\mathrm{DPO}} = -\beta\sigma(-z) \left[ \nabla_\theta\log\pi_\theta(y_w\mid x) - \nabla_\theta\log\pi_\theta(y_l\mid x) \right].

因此:

  • 模型把偏好方向排错,z0z\ll0 时,σ(z)1\sigma(-z)\approx1,更新较强;
  • 当前策略已经相对 reference 拉开足够 margin,z0z\gg0 时,梯度自动衰减;
  • 优化的不是简单的 logπθ(yw)logπθ(yl)\log\pi_\theta(y_w)-\log\pi_\theta(y_l),而是它相对 reference 的增量。

4.3 DPO 中 β\beta 的两层含义#

在原始 KL 正则化目标中,β\beta 是 KL 惩罚系数。闭式解:

πr(yx)πref(yx)er(x,y)/β\pi_r^*(y\mid x) \propto \pi_{\mathrm{ref}}(y\mid x)e^{r(x,y)/\beta}

表明固定 reward 下,β\beta 越大,理论最优策略越接近 reference。

但在实际 DPO loss 中,β\beta 还直接缩放 sigmoid logit。有限数据、有限模型容量、优化器、回答长度与标签噪声都会影响最终结果,所以不能把“调大 β\beta”机械等价成某个确定的经验 KL 变化。它仍然需要和学习率、batch 与数据分布一起验证。

4.4 “DPO 等价于 RLHF”的适用边界#

上面的推导依赖若干假设:

  • 存在一个标量 reward,并且偏好满足 Bradley-Terry 形式;
  • reference 对相关回答有概率支持;
  • 闭式最优策略可被当前参数化模型表示并有效优化;
  • 偏好数据能够代表目标分布。

真实数据可能包含矛盾标签、位置偏置、长度偏置和多维偏好,神经网络优化也不是对所有分布的无约束全局优化。因此 DPO 应理解为由 KL 正则化 RLHF 严格启发出的偏好目标,而不是与任意 RLHF pipeline 在有限条件下完全等价。

DPO 没有“当前策略采样 -> 评分 -> 再更新”的反馈回路,所以没有 PPO/GRPO 式在线探索。不过,它仍会通过参数共享泛化到训练集中没有逐字出现的回答;另外也存在迭代采样偏好数据的 online/iterative DPO 变体。准确的说法是:标准 DPO 本身是离线优化,不代表训练后的模型只能复述已有答案。

5. GRPO:用组内相对奖励替代 Critic#

GRPO 保留了 PPO 的 rollout、probability ratio 和 clipping,但不训练 Value Model。它对同一 Prompt 采样多个回答,用组内奖励统计构造 advantage。DeepSeekMath 对这一方法进行了系统化描述。DeepSeekMath

5.1 Group Relative Advantage#

对每个 Prompt xx,从 old policy 采样 GG 个回答:

y1,,yGiidπold(x),y_1,\ldots,y_G \overset{\mathrm{iid}}{\sim} \pi_{\mathrm{old}}(\cdot\mid x),

并得到奖励 R1,,RGR_1,\ldots,R_G。定义组均值和标准差:

μR=1Gi=1GRi,\mu_R=\frac{1}{G}\sum_{i=1}^{G}R_i, σR=1Gi=1G(RiμR)2.\sigma_R = \sqrt{ \frac{1}{G} \sum_{i=1}^{G}(R_i-\mu_R)^2 }.

最常见的组内标准化 advantage 是:

A^i=RiμRσR+εstd.\hat A_i = \frac{R_i-\mu_R}{\sigma_R+\varepsilon_{\mathrm{std}}}.

例如二元奖励为:

R=[1,1,0,1,0,0,0,1],R=[1,1,0,1,0,0,0,1],

μR=0.5\mu_R=0.5σR=0.5\sigma_R=0.5;忽略极小的数值稳定项 εstd\varepsilon_{\mathrm{std}} 时,正确回答得到 +1+1,错误回答得到 1-1

这个比较方式天然适配 Prompt 难度差异。困难题里一个绝对分数不高但组内最好的回答仍可获得正 advantage;简单题里一个看似不错但落后于同组的回答可能获得负 advantage。

5.2 GRPO clipped objective#

对回答 ii 的第 tt 个 token,定义:

ρi,t(θ)=πθ(yi,tx,yi,<t)πold(yi,tx,yi,<t).\rho_{i,t}(\theta) = \frac{ \pi_\theta(y_{i,t}\mid x,y_{i,<t}) }{ \pi_{\mathrm{old}}(y_{i,t}\mid x,y_{i,<t}) }.

在 outcome supervision 下,回答中的 token 通常共享同一个 A^i\hat A_i。一个常见的待最大化目标可以写成:

JGRPO(θ)=E[1Gi=1G1yit=1yi(min(ρi,tA^i,clip(ρi,t,1ϵclip,1+ϵclip)A^i)βD^KL,i,t)].\begin{aligned} J_{\mathrm{GRPO}}(\theta) = \mathbb E\Bigg[ \frac{1}{G}\sum_{i=1}^{G} \frac{1}{|y_i|}\sum_{t=1}^{|y_i|} \Bigg(& \min\big( \rho_{i,t}\hat A_i, \operatorname{clip}(\rho_{i,t},1-\epsilon_{\mathrm{clip}},1+\epsilon_{\mathrm{clip}})\hat A_i \big)\\ &-\beta\widehat D_{\mathrm{KL},i,t} \Bigg) \Bigg]. \end{aligned}

它看起来与 PPO 很像,因为主体确实沿用了 PPO-style surrogate。差别集中在 advantage 的来源:

PPO:A^t 来自 Critic 与 GAE,\text{PPO:}\hat A_t\text{ 来自 Critic 与 GAE}, GRPO:A^i 来自同 Prompt 的组内 reward 统计.\text{GRPO:}\hat A_i\text{ 来自同 Prompt 的组内 reward 统计}.

需要注意,1/yi1/|y_i| 的序列长度归一化是具体目标中的设计选择,会改变不同长度轨迹的相对权重;它不是从原始 REINFORCE 唯一推导出来的必然形式。

5.3 组均值和传统无偏 baseline 并不完全相同#

把组均值称为 baseline 很直观,但这里需要更严格一点。对第 ii 个回答来说:

μR=Ri+jiRjG\mu_R=\frac{R_i+\sum_{j\ne i}R_j}{G}

包含了 RiR_i 自己,因此会随 yiy_i 变化。它不满足“baseline 与当前 action 独立”的标准证明前提。

如果先忽略标准差,只做均值中心化,并记:

gi=θlogπθ(yix),g_i=\nabla_\theta\log\pi_\theta(y_i\mid x),

为了看清组均值本身的影响,先考虑一个理想化分析:行为策略等于当前策略,y1:Giidπθy_{1:G}\overset{\mathrm{iid}}{\sim}\pi_\theta,reward/evaluator 固定,并忽略 clipping、随机标准差和 1/yi1/|y_i| 长度归一化。此时纯 REINFORCE mean-centering 满足:

Ey1:Gπθ[1Gi=1Ggi(RiμR)]=G1GθJx(θ).\mathbb E_{y_{1:G}\sim\pi_\theta} \left[ \frac1G\sum_{i=1}^{G}g_i(R_i-\mu_R) \right] = \frac{G-1}{G} \nabla_\theta J_x(\theta).

也就是说,纯 mean-centering 在这个理想条件下主要把期望梯度缩放了 (G1)/G(G-1)/G,方向仍一致,但并非原样无偏。再除以随机的组标准差后,估计器引入额外的非线性偏差。

如果改用 leave-one-out baseline:

bi=1G1jiRj,b_{-i}=\frac{1}{G-1}\sum_{j\ne i}R_j,

那么它对 yiy_i 独立。纯 on-policy、stop-gradient 的 leave-one-out mean-centering 在不再除以 action-dependent group std 时,可以恢复传统 baseline 的无偏条件;如果仍然除以包含 RiR_i 的随机标准差,完整系数依旧依赖 yiy_i。RLOO 类方法会明确使用 leave-one-out 思路。GRPO 的选择则是接受组内标准化带来的估计差异,换取 prompt-relative 尺度和不训练 Critic 的工程简化。

5.4 奖励全相同时,任务信号消失#

当一组回答的 reward 全部相同:

RiμR=0,R_i-\mu_R=0,

于是所有 A^i=0\hat A_i=0。此时没有来自 task reward 的策略梯度;如果目标中保留显式 reference KL,KL 项仍可能继续更新策略。

对于二元奖励,设单次采样成功率为 pp,组内同时包含成功与失败回答的概率是:

P(mixed group)=1pG(1p)G.P(\text{mixed group}) = 1-p^G-(1-p)^G.

这个式子很直观地解释了 GRPO 的有效区域:

  • pp 接近 00 时,几乎所有回答都错,组内难以产生相对信号;
  • pp 接近 11 时,几乎所有回答都对,同样没有区分度;
  • 中等成功率时,最容易同时采到正负样本。

因此 group size、采样温度、题目难度、课程学习和 reward granularity 都会影响有效样本率。增加 GG 可以提高看到 mixed group 的机会,但也会线性增加生成与评分成本。

5.5 Outcome supervision 与 process supervision#

只有终局 reward 时,最简单的做法是:

A^i,t=A^i,t=1,,yi.\hat A_{i,t}=\hat A_i, \qquad t=1,\ldots,|y_i|.

于是整个正确回答都被鼓励,整个错误回答都被压低。这种 credit assignment 很粗:最终答案正确不代表每一步都可靠,最终答案错误也不代表前面的推理没有价值。

如果能对推理步骤提供过程奖励,可以先对过程 reward 做可比尺度的标准化,再让 token 获得其后续步骤奖励之和。一个通用写法是:

A^i,t=k:tti,kr~i,k,\hat A_{i,t} = \sum_{k:\,t\le t_{i,k}} \widetilde r_{i,k},

其中 ti,kt_{i,k} 是第 kk 个评分步骤的位置,r~i,k\widetilde r_{i,k} 是标准化后的过程奖励。这样能把“哪一步导致成功或失败”更细地传回生成轨迹,但代价是过程标注或 Process Reward Model 更难获得,也可能带来新的 reward hacking 面。

5.6 GRPO 中常见的 KL 估计#

DeepSeekMath 的 GRPO 目标使用了一个逐样本非负的 KL 形式。令:

u=πref(as)πθ(as),u = \frac{\pi_{\mathrm{ref}}(a\mid s)}{\pi_\theta(a\mid s)},

定义:

D^KL=ulogu1.\widehat D_{\mathrm{KL}} = u-\log u-1.

因为 ulogu10u-\log u-1\ge0,单个样本也不会给出负值。当动作严格采样自当前 πθ\pi_\theta,并且 πθ\pi_\thetaπref\pi_{\mathrm{ref}} 使用相同 action mask、在该状态具有共同 support 时:

Eaπθ[u1]=aπref(as)1=0,\mathbb E_{a\sim\pi_\theta}[u-1] = \sum_a\pi_{\mathrm{ref}}(a\mid s)-1 =0,

所以:

Eaπθ[ulogu1]=DKL(πθπref).\mathbb E_{a\sim\pi_\theta} [u-\log u-1] = D_{\mathrm{KL}}(\pi_\theta\Vert\pi_{\mathrm{ref}}).

这个“无偏”结论同样有采样条件。GRPO rollout 实际来自 πold\pi_{\mathrm{old}};一旦当前策略经过多次更新并离 old policy 较远,在没有额外 importance correction 时,上式不再对当前策略的 forward KL 严格无偏。近似 on-policy 更新之所以重要,也体现在这里。

5.7 GRPO 没有 Critic,但仍会继承 RL 的风险#

GRPO 省掉 Value Model 后,显存、参数同步和训练调度通常更简单,但它没有消除以下问题:

  • reward 设计错误仍会导致 reward hacking;
  • 组内标准化会让更新尺度依赖组构成;
  • 全同 reward 会浪费整组 rollout;
  • outcome reward 的 token credit assignment 仍然粗糙;
  • 多次复用 rollout 仍会产生 off-policy 偏差;
  • reference KL、长度归一化和采样温度仍需调参。

所以 GRPO 更准确的定位是“用额外 rollout 换掉 learned critic”,而不是“免费、更稳定的 PPO”。

6. 用同一组回答看三种比较信号#

假设一个数学 Prompt 采样了 8 个回答,验证器给出:

R=[1,1,0,1,0,0,0,1].R=[1,1,0,1,0,0,0,1].

三种算法会以不同方式使用这些信息。

6.1 PPO 的视角#

γ=1\gamma=1,假设只有终局 0/10/1 reward,没有 KL shaping 或其他过程奖励,并暂时忽略 GAE 的逐 token 差异。如果 Critic 对某个回答起始状态预测 V(s)=0.35V(s)=0.35,那么成功回答的粗略 advantage 是:

Asuccess10.35=0.65,A_{\mathrm{success}}\approx1-0.35=0.65,

失败回答则是:

Afailure00.35=0.35.A_{\mathrm{failure}}\approx0-0.35=-0.35.

比较对象是 Critic 预测的期望水平。Critic 若估错,系数也会跟着偏。

6.2 GRPO 的视角#

组均值与标准差都是 0.50.5。忽略 εstd\varepsilon_{\mathrm{std}} 时:

Asuccess=+1,Afailure=1.A_{\mathrm{success}}=+1, \qquad A_{\mathrm{failure}}=-1.

比较对象是这 8 个同 Prompt rollout。它无需 Critic,但需要一次生成 8 个回答。

6.3 DPO 的视角#

DPO 不直接接收这组 0/10/1 reward。需要先把成功回答和失败回答组成偏好对,例如 (yw,yl)(y_w,y_l),再优化:

logπθ(ywx)πref(ywx)logπθ(ylx)πref(ylx).\log\frac{\pi_\theta(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)} - \log\frac{\pi_\theta(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)}.

比较对象同时包括 pair 内的 rejected answer 和冻结 reference。标准 DPO 训练时不会根据新策略的变化重新采样这 8 个回答。

同一批“哪些回答好”的信息,就这样变成了三种不同的优化信号。

7. 三个训练循环到底差在哪里#

7.1 PPO#

1. 从 current policy 得到 old policy 快照
2. 用 old policy 生成 rollout
3. 用 Reward Model、验证器或规则打分
4. 用 Critic 计算 value,并通过 GAE 得到 token advantage
5. 用 clipped policy objective 更新 Actor
6. 回归 return,更新 Critic
7. 监控 KL、clip fraction、reward 与 value error
8. 刷新 old policy,进入下一轮 rollout

7.2 DPO#

1. 读取固定的 (prompt, chosen, rejected) 数据
2. 分别计算 policy 与 frozen reference 的 response log probability
3. 形成 reference-relative preference margin
4. 最小化 -log sigmoid(beta * margin)
5. 无 rollout、无 Critic、无显式 Reward Model

7.3 GRPO#

1. 从 current policy 得到 old policy 快照
2. 对每个 Prompt 用 old policy 生成 G 个回答
3. 用 Reward Model、验证器或规则打分
4. 在每个 Prompt 的组内中心化或标准化 reward
5. 用 PPO-style clipped objective 与 reference KL 更新 policy
6. 无 Critic 更新
7. 刷新 old policy,进入下一轮 rollout

这也解释了成本差异:DPO 把问题变成常规 teacher-forcing 前向与反向;PPO 多了 rollout、reward、value 和策略更新;GRPO 去掉了 value 路径,却要为每个 Prompt 生成一组回答。

8. 统一对比与选择#

维度PPODPOGRPO
训练范式在线或近似 on-policy RL标准形式为离线偏好优化在线或近似 on-policy RL
训练输入Prompt 与策略 rollout固定 chosen/rejected pairsPrompt 与每题一组 rollout
标量 reward signal需要不直接需要需要
Learned Reward Model经典 RLHF 常用,但非算法必需不需要可选,验证器也可以
Critic / Value Model通常使用不需要不需要
Reference PolicyLLM RLHF 中通常使用标准 DPO 需要通常使用
Old Policy需要不需要需要
Advantage 来源Value + return,常用 GAE无显式 advantage组内相对 reward
PPO-style clip通常有
在线采样反馈标准 DPO 没有
主要计算成本rollout + reward + value + policypolicy + reference log probabilitygroup rollout + reward + policy
典型优势状态相关 credit assignment,在线探索实现简单、稳定、数据利用直接无 Critic,适合可验证 reward
典型风险Critic 误差、系统复杂、reward hacking数据覆盖与偏好偏置、无在线反馈homogeneous group、组归一化偏差、粗粒度 credit assignment

选择时可以先问三个问题。

8.1 手里是什么监督信号#

  • 已有大量高质量 chosen/rejected pairs,且不想运行在线生成系统:优先考虑 DPO。
  • 能稳定计算 reward,希望模型持续发现新解法:考虑 PPO 或 GRPO。
  • reward 很稀疏但有可靠过程价值估计,或者需要细粒度 token credit assignment:PPO 的 Critic/GAE 更有表达力。
  • 同一 Prompt 可以廉价采样多次,验证器可靠,不想承担 Critic 成本:GRPO 很自然。

8.2 训练系统能承担什么成本#

DPO 的工程路径最接近监督微调。PPO 的模型角色和状态最多。GRPO 减少了 Critic,却会把成本转移到 group rollout 和 reward evaluation。不能只按“模型数量”判断总成本,还要看回答长度、group size、验证器吞吐和 rollout 利用率。

8.3 任务是否真正需要在线探索#

聊天风格、安全偏好和固定产品行为往往能由高覆盖偏好数据有效表达。数学、代码与可验证推理更可能从在线采样中发现训练集没有直接提供的轨迹。不过,在线 RL 的探索价值只有在 reward 可信且采样能覆盖有效区域时才能兑现。

9. 最容易混淆的六件事#

9.1 Baseline 不是 Reference Policy#

baseline 决定一个采样动作的梯度权重,理想情况下只降方差,不改变目标最优解;reference KL 直接改变目标,决定策略允许偏离锚点多少。

9.2 Old Policy 不是 Reference Policy#

old policy 负责说明 rollout 来自哪个行为策略,进入 importance ratio;reference policy 负责长期正则。二者有时初始权重相同,但生命周期和数学用途不同。

9.3 GRPO 不等于“没有 Reward Model”#

它不需要 Critic,但必须有 reward。reward 可以是 learned RM,也可以是程序验证器。是否使用 Reward Model 取决于任务反馈能否直接计算。

9.4 PPO clip 不是硬边界#

ϵclip=0.2\epsilon_{\mathrm{clip}}=0.2 不代表所有 ratio 永远处于 [0.8,1.2][0.8,1.2]。它只改变采样 surrogate 在特定方向上的局部激励。

9.5 DPO 不只是 chosen SFT 减去 rejected SFT#

DPO 的核心 logit 是 reference-relative pairwise margin,梯度权重 σ(z)\sigma(-z) 还会根据当前区分程度动态变化。

9.6 组内全零 advantage 不代表训练完全静止#

它表示没有 task-reward policy-gradient signal。只要目标里还有 reference KL 或其他辅助 loss,参数仍可能更新。

10. 最后用三句话记住#

PPO 问的是:

这次 rollout 是否比 Critic 预测的水平更好?\boxed{\text{这次 rollout 是否比 Critic 预测的水平更好?}}

GRPO 问的是:

这个回答是否比同一 Prompt 的其他回答更好?\boxed{\text{这个回答是否比同一 Prompt 的其他回答更好?}}

DPO 问的是:

当前策略是否比 Reference 更强化 chosen 相对 rejected 的优势?\boxed{\text{当前策略是否比 Reference 更强化 chosen 相对 rejected 的优势?}}

三者真正共享的不是同一个训练流程,而是同一种建模思想:不要只看一个输出的绝对好坏,要先定义它相对于什么更好,再把这个相对信号变成概率更新。

PPO 用 learned value 建立相对尺度,GRPO 用同 Prompt rollout 建立相对尺度,DPO 用偏好对和 reference 建立相对尺度。理解了比较对象,Critic、group reward、pairwise margin、old policy 与 reference policy 的位置就不会再混在一起。

参考资料#

  1. Schulman et al., Proximal Policy Optimization Algorithms, 2017.
  2. Schulman et al., High-Dimensional Continuous Control Using Generalized Advantage Estimation, 2015.
  3. Ouyang et al., Training Language Models to Follow Instructions with Human Feedback, 2022.
  4. Rafailov et al., Direct Preference Optimization: Your Language Model is Secretly a Reward Model, 2023.
  5. Shao et al., DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models, 2024.