跳至内容

PPO、DPO 与 GRPO

PPO 与 GRPO 根据奖励更新策略,DPO 直接学习回答偏好。

  • RLHF
  • PPO
  • DPO
  • GRPO

PPO 根据奖励估计优势,通过裁剪目标抑制过大的策略更新。

DPO 直接利用回答之间的偏好训练策略,无需单独训练奖励模型,也不需要在线采样的强化学习循环。

GRPO 对同一问题生成一组回答,根据组内奖励计算相对优势,省去价值模型。

PPO 与 GRPO 都属于强化学习方法,DPO 则把偏好学习写成直接训练语言模型的损失。三者都能用于大模型后训练,但使用的数据、更新参数的依据和计算开销不同。

1. RLHF

1.1 预训练、SFT 与偏好数据

自回归语言模型在预训练中根据已有文本预测下一个 token。SFT(Supervised Fine-Tuning,监督微调)使用“问题—示范回答”训练模型,让生成结果接近期望的回答方式。

SFT 能通过示范体现偏好,但普通 SFT 样本没有明确记录两个回答之间的优劣关系。偏好数据通常写成三元组 (x,yw,yl)(x,y_w,y_l):

  • xx:问题或提示词。
  • ywy_w:被选中的回答,称为优选回答(chosen)。
  • yly_l:未被选中的回答,称为劣选回答(rejected)。

假设要为这条请求收集偏好数据:“请把‘把文件发给我’改得礼貌一点。”模型给出两个回答:

  • 回答 A:“方便把文件发给我吗?谢谢。”
  • 回答 B:“赶紧把文件发给我。”

标注者选择 A,就记录为 xx 是这条请求、ywy_w 是回答 A、yly_l 是回答 B。这条记录只说明 A 比 B 更符合要求,不需要给两个回答分别打分。

RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)将人类反馈转为训练信号,调整模型生成回答的策略。

1.2 经典 RLHF 流程

InstructGPT 采用的典型流程包含三个环节:InstructGPT 论文

  1. 监督微调:使用人工示范训练 SFT 模型。
  2. 训练奖励模型:收集同一问题下多个回答的比较结果,让奖励模型学会给更受偏好的回答打更高的分。
  3. 优化生成策略:模型生成新回答,奖励模型评分,PPO 根据评分更新生成策略。
    flowchart TB
    A[预训练模型] -->|示范数据与 SFT| B[SFT 模型]
    C[回答比较数据] -->|训练| D[奖励模型]
    B -->|初始化| E[策略模型]
    B -->|保留为参考| F[参考模型]
    E -->|生成| G[新回答]
    G --> D
    D -->|奖励| H[PPO 更新]
    F -->|约束策略偏移| H
    H --> E
  

人工比较主要用于构建偏好数据。策略优化时,新生成的回答通常由奖励模型评分,不需要人对每条回答实时打分。

图中省略了 PPO 内部的价值模型,后文单独解释。

在这条流程里,PPO 负责第 3 步的策略优化,GRPO 也能承担这个环节。DPO 则把第 2、3 步换成偏好对上的直接训练,不再单独训练奖励模型。

1.3 语言生成中的策略与奖励

给定问题 xx,回答为 y=(y1,…,yT)y=(y_1,\ldots,y_T)。在生成第 tt 个 token 时:

  • 状态 st=(x,y<t)s_t=(x,y_{<t}):问题和已经生成的回答前缀。
  • 动作 at=yta_t=y_t:本次生成的 token。
  • 策略 πθ(at∣st)\pi_\theta(a_t\mid s_t):参数为 θ\theta 的语言模型给出的 token 概率分布。
  • 奖励 r(x,y)r(x,y):对生成结果的评价,可以来自奖励模型或任务验证规则。

完整回答的概率是各 token 条件概率的乘积,因此其对数概率为:

log⁡πθ(y∣x)=∑t=1Tlog⁡πθ(yt∣x,y<t).\log\pi_\theta(y\mid x)=\sum_{t=1}^{T}\log\pi_\theta(y_t\mid x,y_{<t}).

奖励评价这次生成的表现,训练通过调整 token 概率改变模型之后的回答。

1.4 奖励与 KL 约束

奖励模型只近似表达偏好。持续追求高分,可能让策略生成奖励模型喜欢、实际质量却不高的回答。典型 RLHF 会保留一个参考策略 πref\pi_{\mathrm{ref}},限制策略偏移。

对一个问题 xx,常见的优化目标是:

Jx(θ)=Ey∼πθ(⋅∣x)[r(x,y)]−βDKL ⁣(πθ(⋅∣x) ∥ πref(⋅∣x)).J_x(\theta)= \mathbb E_{y\sim\pi_\theta(\cdot\mid x)}[r(x,y)] -\beta D_{\mathrm{KL}}\!\left(\pi_\theta(\cdot\mid x)\,\|\,\pi_{\mathrm{ref}}(\cdot\mid x)\right).

KL 散度衡量两个概率分布的差异:

DKL(p∥q)=Ey∼p[log⁡p(y)−log⁡q(y)].D_{\mathrm{KL}}(p\|q)=\mathbb E_{y\sim p}[\log p(y)-\log q(y)].

分布相同时,KL 散度为 00。这里比较的是同一问题下,策略模型与参考模型的回答概率分布。

训练时,对数据集中的问题求平均,并最大化这个目标。其中:

  • 奖励项鼓励模型生成高奖励回答。
  • KL 惩罚项限制生成分布偏离参考模型。

固定奖励函数时,β>0\beta>0 越大,偏移的代价越高。参考模型通常来自当前训练阶段的初始模型。RLHF 目标与 DPO 推导

2. PPO

2.1 训练中的模型角色

PPO(Proximal Policy Optimization,近端策略优化)是一类策略优化算法。 大模型 RLHF 中常用 PPO-Clip,训练时需要区分以下角色。

角色作用典型 PPO 策略训练阶段
策略模型 Actor输出下一个 token 的概率分布更新参数
奖励模型 Reward Model给生成结果评分固定参数
价值模型 Critic估计当前前缀下的预期回报更新参数
参考模型 Reference提供 KL 约束的比较基准固定参数
旧策略 Old Policy记录这批回答由哪个策略生成本批更新期间固定,重新采样时刷新

奖励模型评价回答,价值模型预测从当前前缀继续生成能获得多少回报。 两者输出都可能是标量,但预测对象和训练目标不同。

表中区分的是各自负责的工作,不代表必须同时保存五份完整模型。旧策略所需的信息通常只要保存采样时的 token 对数概率就够了。

2.2 回报与优势

回报是从当前位置开始累计获得的奖励。 价值模型 Vψ(st)V_\psi(s_t) 预测当前策略从状态 sts_t 继续生成,预计能获得多少回报。

优势(Advantage)描述一次动作的表现比预期好多少或差多少。

最直接的估计是“采样得到的回报减去预测价值”:

A^t=Gt−Vψ(st),Gt=∑k=tTγk−tr~k.\hat A_t=G_t-V_\psi(s_t), \qquad G_t=\sum_{k=t}^{T}\gamma^{k-t}\tilde r_k.

r~k\tilde r_k 是第 kk 步用于训练的奖励,γ\gamma 是折扣系数。

  • A^t>0\hat A_t>0:该次动作的表现高于预期。
  • A^t<0\hat A_t<0:该次动作的表现低于预期。

在典型的回答级奖励设置中,奖励模型的分数加在回答末尾,各 token 的训练奖励还包含相对参考策略的 KL 惩罚。因此,计算回报时要累计这些奖励,不能只看最后的评分。

末尾奖励也会进入前面位置的累计回报,给这些位置提供训练信号。

PPO 常采用 GAE(Generalized Advantage Estimation,广义优势估计),结合一步预测误差与后续误差:

δt=r~t+γVψ(st+1)−Vψ(st),A^t=∑l=0T−t(γλ)lδt+l.\begin{aligned} \delta_t&=\tilde r_t+\gamma V_\psi(s_{t+1})-V_\psi(s_t),\\ \hat A_t&=\sum_{l=0}^{T-t}(\gamma\lambda)^l\delta_{t+l}. \end{aligned}

完整回答结束时,终止状态的价值取 00。δt\delta_t 比较“这一步奖励加上对剩余回报的预测”与原来的价值预测;λ\lambda 控制后续误差的权重。

较小的 λ\lambda 更依赖价值模型的短期预测,较大的 λ\lambda 会计入更后面的实际奖励。计算这批样本的优势时,使用采样阶段的价值估计;更新策略期间,优势保持固定。

2.3 概率比与裁剪目标

PPO 使用旧策略 πold\pi_{\mathrm{old}} 采样一批回答,并在这批样本上执行若干次更新。对于一个已采样的 token,定义概率比:

ρt(θ)=πθ(at∣st)πold(at∣st).\rho_t(\theta)=\frac{\pi_\theta(a_t\mid s_t)}{\pi_{\mathrm{old}}(a_t\mid s_t)}.
  • ρt=1\rho_t=1:生成该 token 的概率没有变化。
  • ρt>1\rho_t>1:概率增加。
  • ρt<1\rho_t<1:概率减少。

分母在这批更新中保持不变,分子随训练变化。概率比表示:同一个动作在当前策略下出现的可能性,是采样时的多少倍。

如果只最大化 ρtA^t\rho_t\hat A_t,正优势会推动概率增加,负优势会推动概率减少。反复使用同一批数据更新,可能让策略变化过大。

PPO-Clip 为这种更新加入裁剪,最大化以下目标:

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

Et\mathbb E_t 表示对采样位置求平均,ϵ\epsilon 控制裁剪范围。clip⁡\operatorname{clip} 将输入截到指定区间,外面的 min⁡\min 则选择较小的目标值。

设 ϵ=0.2\epsilon=0.2,裁剪区间为 [0.8,1.2][0.8,1.2]。

  • 正优势 A^t=2\hat A_t=2:某 token 的概率由 0.20.2 增至 0.30.3,则 ρt=1.5\rho_t=1.5。未裁剪项为 33,裁剪项为 2.42.4,取较小值 2.42.4。
  • 负优势 A^t=−2\hat A_t=-2:概率由 0.20.2 降至 0.10.1,则 ρt=0.5\rho_t=0.5。未裁剪项为 −1-1,裁剪项为 −1.6-1.6,取较小值 −1.6-1.6。

此时,正优势样本继续增大概率,或负优势样本继续减小概率,都不能让对应的裁剪目标值继续增加。

裁剪限制的是沿优势方向继续扩大更新的收益,不是把模型输出概率强制锁在某个区间。 多个样本共享模型参数,其他梯度仍可能使某个概率比越界。

Clip 与参考模型的 KL 惩罚也不同:

  • Clip 关注当前策略相对采样时旧策略的变化。
  • KL 惩罚关注当前策略相对参考模型的偏移。

2.4 一轮 PPO 训练

  1. 当前策略生成一批回答,保存采样时的 token 对数概率。
  2. 奖励模型评分,结合参考模型的概率计算训练奖励。
  3. 价值模型估计各位置的价值,通过 GAE 计算优势,构建价值训练目标。
  4. 固定本批样本的旧概率、优势和训练目标,执行若干次策略更新与价值模型更新。
  5. 使用更新后的策略采样新回答,进入下一轮。

策略模型最大化裁剪目标。价值模型的一种常见训练目标为:

R^t=A^t+Vold(st).\hat R_t=\hat A_t+V_{\mathrm{old}}(s_t).

VoldV_{\mathrm{old}} 是这批样本采集时保存的价值预测。价值模型通过减小 (Vψ(st)−R^t)2(V_\psi(s_t)-\hat R_t)^2,让预测接近回报估计 R^t\hat R_t;这个目标在本批更新中保持固定。

实际优化器通常最小化损失,因此策略损失写成裁剪目标的负数。

PPO 的开销来自在线生成、奖励评分、价值模型训练及参考模型计算。对大模型而言,单独的价值模型还会增加权重、梯度和优化器状态的存储。

3. DPO

3.1 偏好对直接参与训练

DPO(Direct Preference Optimization,直接偏好优化)直接使用 (x,yw,yl)(x,y_w,y_l) 训练策略。 它保留了参考模型,但不需要单独训练奖励模型,也不需要在每次参数更新时生成新回答。

DPO 使用同一问题下两条回答的比较结果。SFT 如果只拿优选回答做示范,就不会利用劣选回答;DPO 的损失会同时计算两条回答在策略模型和参考模型下的概率。

3.2 奖励与策略的对应关系

Bradley–Terry 模型将两条回答之间的偏好概率写成奖励差的函数:

P(yw≻yl∣x)=σ ⁣(r(x,yw)−r(x,yl)),σ(z)=11+e−z.P(y_w\succ y_l\mid x)=\sigma\!\left(r(x,y_w)-r(x,y_l)\right), \qquad \sigma(z)=\frac{1}{1+e^{-z}}.

奖励差为 00 时,偏好概率为 0.50.5;优选回答的奖励高得越多,模型预测它被选择的概率越大。这是对偏好数据的建模假设。

对于第 1.4 节的 KL 正则目标,如果奖励函数固定,策略又能取任意回答分布,那么最优策略满足:

π∗(y∣x)=1Z(x)πref(y∣x)exp⁡ ⁣(r(x,y)β).\pi^*(y\mid x)=\frac{1}{Z(x)}\pi_{\mathrm{ref}}(y\mid x) \exp\!\left(\frac{r(x,y)}{\beta}\right).

Z(x)Z(x) 是归一化因子,使所有回答的概率之和为 11。这条关系表明:最优策略在参考分布上,按奖励的指数值重新分配概率。

取对数并移项:

r(x,y)=βlog⁡π∗(y∣x)πref(y∣x)+βlog⁡Z(x).r(x,y)=\beta\log\frac{\pi^*(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}+\beta\log Z(x).

同一问题下,两条回答共用 Z(x)Z(x)。计算奖励差时,βlog⁡Z(x)\beta\log Z(x) 抵消,偏好概率就能直接用策略与参考模型的概率表示。DPO 论文,第 4 节

3.3 DPO 损失

DPO 不单独训练奖励模型,而是用可训练策略 πθ\pi_\theta 与参考模型的概率比定义隐式奖励:

r^θ(x,y)=βlog⁡πθ(y∣x)πref(y∣x).\hat r_\theta(x,y)=\beta\log\frac{\pi_\theta(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}.

两条回答的隐式奖励差记为 βΔθ\beta\Delta_\theta,其中:

Δθ=log⁡πθ(yw∣x)πref(yw∣x)−log⁡πθ(yl∣x)πref(yl∣x).\Delta_\theta= \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)}.

将这个奖励差代入 Bradley–Terry 模型,优选回答被选中的概率就是 σ(βΔθ)\sigma(\beta\Delta_\theta)。对数据集中的选择结果取负对数似然,得到 DPO 损失:

LDPO(θ)=−E(x,yw,yl)∼D[log⁡σ(βΔθ)].\mathcal L_{\mathrm{DPO}}(\theta)= -\mathbb E_{(x,y_w,y_l)\sim\mathcal D}\left[\log\sigma(\beta\Delta_\theta)\right].

Δθ\Delta_\theta 比较的是:相对参考模型,优选回答和劣选回答各自的概率变了多少。增大这个对数概率差,σ(βΔθ)\sigma(\beta\Delta_\theta) 就会增大,也就是模型预测“优选回答被选中”的概率上升,损失随之下降。

β\beta 对应原优化目标中的 KL 正则系数,在这个损失中控制偏好差值的缩放。

假设两条回答相对参考模型的概率倍率最初都是 11,则 Δθ=0\Delta_\theta=0。若训练后优选回答的倍率变为 22,劣选回答变为 0.50.5,则 Δθ=log⁡4\Delta_\theta=\log 4,这条样本的 DPO 损失下降。

这里的概率是完整回答的条件概率,实际计算使用各回答 token 的对数概率之和。 模型只需对已有的优选与劣选序列计算概率,无需为了计算这项损失重新生成回答。

这个对应关系建立在前面的 KL 正则目标和偏好模型假设上。实际训练只有有限数据,DPO 与 PPO 不一定得到相同的模型。

3.4 训练成本与数据限制

原始 DPO 的训练流程为:读取偏好对,计算策略与参考模型的序列对数概率,计算损失,更新策略参数。

参考模型保持固定,其对数概率还能预先计算并保存。DPO 训练文档

DPO 省去了在线生成与价值模型训练,但仍要收集偏好数据。标注有偏差、问题覆盖不全,或训练问题与实际使用场景差得太远,都会影响结果。

固定数据还有一个限制:模型训练中产生的新错误,不会自动出现在已有的偏好对里。

4. GRPO

4.1 组内奖励替代价值模型

GRPO(Group Relative Policy Optimization,组相对策略优化)使用同一问题下多条回答的奖励估计优势,省去单独训练的价值模型。 它由 DeepSeekMath 提出,保留了 PPO 的概率比与裁剪思路。

对于问题 xx,旧策略生成 GG 条回答,每条回答得到一个分数 rir_i。如果只在回答结束时评分,这种方式称为结果监督,其优势计算为:

rˉ=1G∑i=1Gri,A^i=ri−rˉstd⁡(r1,…,rG).\bar r=\frac{1}{G}\sum_{i=1}^{G}r_i, \qquad \hat A_i=\frac{r_i-\bar r}{\operatorname{std}(r_1,\ldots,r_G)}.

减去组内均值,得到该回答比平均分高多少或低多少;除以标准差,让差值以组内分数的离散程度为尺度。

高于组内平均分的回答具有正优势,低于平均分的回答具有负优势。

4.2 一组回答的计算例子

假设同一道题采样四个回答,奖励为 [1,1,0,0][1,1,0,0],其中答对得 11,答错得 00。

组内均值为 0.50.5。按总体标准差计算,标准差为 0.50.5,得到优势 [1,1,−1,−1][1,1,-1,-1]。

两条答对的回答提供正向更新信号,两条答错的回答提供负向更新信号。比较只用到了这道题的四个回答,不需要价值模型预测它们的回报。

在这种结果监督形式下,同一回答中的所有 token 共用该回答的优势:

A^i,t=A^i.\hat A_{i,t}=\hat A_i.

各 token 的概率比和对应梯度可以不同,因此共用优势不代表它们对更新的贡献完全相同。

这样会把整段回答的得分用于训练每个 token,并没有逐步判断推理是否正确。过程奖励能为中间步骤提供更细的评价,但需要额外的步骤评价能力。

4.3 裁剪目标与 KL 惩罚

对第 ii 条回答的第 tt 个 token,概率比为:

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

将 PPO 的单个裁剪项记为:

C(ρ,A)=min⁡{ρA,clip⁡(ρ,1−ϵ,1+ϵ)A}.C(\rho,A)=\min\left\{\rho A,\operatorname{clip}(\rho,1-\epsilon,1+\epsilon)A\right\}.

原始 GRPO 对一组回答最大化以下目标:

J^GRPO=1G∑i=1G1Ti∑t=1Ti[C(ρi,t,A^i)−βD^i,t].\hat J_{\mathrm{GRPO}}= \frac{1}{G}\sum_{i=1}^{G}\frac{1}{T_i}\sum_{t=1}^{T_i} \left[C(\rho_{i,t},\hat A_i)-\beta\widehat D_{i,t}\right].

TiT_i 是第 ii 条回答的长度,D^i,t\widehat D_{i,t} 是当前策略相对参考策略的逐 token KL 惩罚估计。目标对每条回答的 token 求平均,再对组内回答求平均。

组内优势只根据奖励计算;KL 惩罚作为独立项加入优化目标。 这与前文将 KL 惩罚并入训练奖励的典型 PPO 写法不同。

一轮训练中,策略为每个问题生成一组回答。评分后计算组内优势,结合裁剪目标和 KL 惩罚更新策略。生成与评分的开销仍然存在,省掉的是价值模型的训练。

4.4 GRPO 与可验证奖励

GRPO 规定策略如何更新,奖励来源由任务决定。 DeepSeekMath 原始方案使用了奖励模型;GRPO 本身并不要求取消奖励模型。

数学答案核对、代码测试等规则能提供可验证奖励,这类训练常称为 RLVR(Reinforcement Learning with Verifiable Rewards,基于可验证奖励的强化学习)。GRPO 可以利用这些分数计算组内优势。

DeepSeek-R1 的两个训练方案也需要分开看:

  • DeepSeek-R1-Zero 使用规则奖励评价准确性与格式,没有使用神经奖励模型。
  • 完整 DeepSeek-R1 的后续训练还引入了模型奖励,处理一般场景中的偏好。

4.5 采样成本与奖励差异

省去价值模型会减少相应训练和显存开销,但每个问题需要生成多条回答。总成本还取决于组大小、回答长度、评分方式和生成吞吐量。

当组内奖励完全相同时,标准差为 00,上述归一化公式会除以零,实现时需要单独处理。即使解决了除零问题,各回答与均值的差仍为 00,这组奖励也无法告诉模型应该更偏向哪条回答。

组内奖励没有差异,不等于整个训练目标没有梯度。 若目标中保留 KL 项,整体梯度不一定为零。

对于二值奖励,题目过难导致全错,或过易导致全对,都可能出现这种情况。题目难度和采样多样性会影响一组回答能提供多少训练信息。

5. 三种方法的比较

以下对比采用典型 PPO-RLHF、原始 DPO 和原始结果监督 GRPO。

比较项PPODPOGRPO
策略训练数据策略持续生成回答已有的偏好对每个问题生成一组回答
评价信号回答或步骤奖励优选与劣选关系组内各回答的奖励
独立奖励模型经典 RLHF 中使用不需要可使用,也可接规则评分
价值模型典型实现中训练不需要不需要
更新依据价值模型辅助估计优势相对参考模型的偏好概率损失组内奖励归一化形成优势
主要开销生成、评分、价值模型与策略训练偏好数据构建、成对序列训练多次生成、评分与策略训练

选择方法时,考虑已有数据和训练成本:

  • 已有覆盖充分的偏好对:DPO 的训练流程更直接。
  • 需要持续评价模型新生成的回答:可以考虑 PPO 或 GRPO。
  • 在 PPO 与 GRPO 之间选择:看价值模型估计得是否准确,以及多次采样和训练价值模型各自的成本。

三种方法的效果都受训练信号质量影响:

  • 偏好标注可能偏爱某种措辞或回答长度。
  • 奖励模型可能给某类回答过高的分数。
  • 验证规则可能漏掉错误。

比较算法效果时,还要交代初始模型、训练数据、奖励方式和计算预算。

评论

使用 GitHub 登录后参与讨论,评论将公开保存在 GitHub。

阅读到这里时加载评论。