PPO、DPO 与 GRPO
PPO 与 GRPO 根据奖励更新策略,DPO 直接学习回答偏好。
PPO 根据奖励估计优势,通过裁剪目标抑制过大的策略更新。
DPO 直接利用回答之间的偏好训练策略,无需单独训练奖励模型,也不需要在线采样的强化学习循环。
GRPO 对同一问题生成一组回答,根据组内奖励计算相对优势,省去价值模型。
PPO 与 GRPO 都属于强化学习方法,DPO 则把偏好学习写成直接训练语言模型的损失。三者都能用于大模型后训练,但使用的数据、更新参数的依据和计算开销不同。
1. RLHF
1.1 预训练、SFT 与偏好数据
自回归语言模型在预训练中根据已有文本预测下一个 token。SFT(Supervised Fine-Tuning,监督微调)使用“问题—示范回答”训练模型,让生成结果接近期望的回答方式。
SFT 能通过示范体现偏好,但普通 SFT 样本没有明确记录两个回答之间的优劣关系。偏好数据通常写成三元组 :
- :问题或提示词。
- :被选中的回答,称为优选回答(chosen)。
- :未被选中的回答,称为劣选回答(rejected)。
假设要为这条请求收集偏好数据:“请把‘把文件发给我’改得礼貌一点。”模型给出两个回答:
- 回答 A:“方便把文件发给我吗?谢谢。”
- 回答 B:“赶紧把文件发给我。”
标注者选择 A,就记录为 是这条请求、 是回答 A、 是回答 B。这条记录只说明 A 比 B 更符合要求,不需要给两个回答分别打分。
RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)将人类反馈转为训练信号,调整模型生成回答的策略。
1.2 经典 RLHF 流程
InstructGPT 采用的典型流程包含三个环节:InstructGPT 论文
- 监督微调:使用人工示范训练 SFT 模型。
- 训练奖励模型:收集同一问题下多个回答的比较结果,让奖励模型学会给更受偏好的回答打更高的分。
- 优化生成策略:模型生成新回答,奖励模型评分,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 语言生成中的策略与奖励
给定问题 ,回答为 。在生成第 个 token 时:
- 状态 :问题和已经生成的回答前缀。
- 动作 :本次生成的 token。
- 策略 :参数为 的语言模型给出的 token 概率分布。
- 奖励 :对生成结果的评价,可以来自奖励模型或任务验证规则。
完整回答的概率是各 token 条件概率的乘积,因此其对数概率为:
奖励评价这次生成的表现,训练通过调整 token 概率改变模型之后的回答。
1.4 奖励与 KL 约束
奖励模型只近似表达偏好。持续追求高分,可能让策略生成奖励模型喜欢、实际质量却不高的回答。典型 RLHF 会保留一个参考策略 ,限制策略偏移。
对一个问题 ,常见的优化目标是:
KL 散度衡量两个概率分布的差异:
分布相同时,KL 散度为 。这里比较的是同一问题下,策略模型与参考模型的回答概率分布。
训练时,对数据集中的问题求平均,并最大化这个目标。其中:
- 奖励项鼓励模型生成高奖励回答。
- KL 惩罚项限制生成分布偏离参考模型。
固定奖励函数时, 越大,偏移的代价越高。参考模型通常来自当前训练阶段的初始模型。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 回报与优势
回报是从当前位置开始累计获得的奖励。 价值模型 预测当前策略从状态 继续生成,预计能获得多少回报。
优势(Advantage)描述一次动作的表现比预期好多少或差多少。
最直接的估计是“采样得到的回报减去预测价值”:
是第 步用于训练的奖励, 是折扣系数。
- :该次动作的表现高于预期。
- :该次动作的表现低于预期。
在典型的回答级奖励设置中,奖励模型的分数加在回答末尾,各 token 的训练奖励还包含相对参考策略的 KL 惩罚。因此,计算回报时要累计这些奖励,不能只看最后的评分。
末尾奖励也会进入前面位置的累计回报,给这些位置提供训练信号。
PPO 常采用 GAE(Generalized Advantage Estimation,广义优势估计),结合一步预测误差与后续误差:
完整回答结束时,终止状态的价值取 。 比较“这一步奖励加上对剩余回报的预测”与原来的价值预测; 控制后续误差的权重。
较小的 更依赖价值模型的短期预测,较大的 会计入更后面的实际奖励。计算这批样本的优势时,使用采样阶段的价值估计;更新策略期间,优势保持固定。
2.3 概率比与裁剪目标
PPO 使用旧策略 采样一批回答,并在这批样本上执行若干次更新。对于一个已采样的 token,定义概率比:
- :生成该 token 的概率没有变化。
- :概率增加。
- :概率减少。
分母在这批更新中保持不变,分子随训练变化。概率比表示:同一个动作在当前策略下出现的可能性,是采样时的多少倍。
如果只最大化 ,正优势会推动概率增加,负优势会推动概率减少。反复使用同一批数据更新,可能让策略变化过大。
PPO-Clip 为这种更新加入裁剪,最大化以下目标:
表示对采样位置求平均, 控制裁剪范围。 将输入截到指定区间,外面的 则选择较小的目标值。
设 ,裁剪区间为 。
- 正优势 :某 token 的概率由 增至 ,则 。未裁剪项为 ,裁剪项为 ,取较小值 。
- 负优势 :概率由 降至 ,则 。未裁剪项为 ,裁剪项为 ,取较小值 。
此时,正优势样本继续增大概率,或负优势样本继续减小概率,都不能让对应的裁剪目标值继续增加。
裁剪限制的是沿优势方向继续扩大更新的收益,不是把模型输出概率强制锁在某个区间。 多个样本共享模型参数,其他梯度仍可能使某个概率比越界。
Clip 与参考模型的 KL 惩罚也不同:
- Clip 关注当前策略相对采样时旧策略的变化。
- KL 惩罚关注当前策略相对参考模型的偏移。
2.4 一轮 PPO 训练
- 当前策略生成一批回答,保存采样时的 token 对数概率。
- 奖励模型评分,结合参考模型的概率计算训练奖励。
- 价值模型估计各位置的价值,通过 GAE 计算优势,构建价值训练目标。
- 固定本批样本的旧概率、优势和训练目标,执行若干次策略更新与价值模型更新。
- 使用更新后的策略采样新回答,进入下一轮。
策略模型最大化裁剪目标。价值模型的一种常见训练目标为:
是这批样本采集时保存的价值预测。价值模型通过减小 ,让预测接近回报估计 ;这个目标在本批更新中保持固定。
实际优化器通常最小化损失,因此策略损失写成裁剪目标的负数。
PPO 的开销来自在线生成、奖励评分、价值模型训练及参考模型计算。对大模型而言,单独的价值模型还会增加权重、梯度和优化器状态的存储。
3. DPO
3.1 偏好对直接参与训练
DPO(Direct Preference Optimization,直接偏好优化)直接使用 训练策略。 它保留了参考模型,但不需要单独训练奖励模型,也不需要在每次参数更新时生成新回答。
DPO 使用同一问题下两条回答的比较结果。SFT 如果只拿优选回答做示范,就不会利用劣选回答;DPO 的损失会同时计算两条回答在策略模型和参考模型下的概率。
3.2 奖励与策略的对应关系
Bradley–Terry 模型将两条回答之间的偏好概率写成奖励差的函数:
奖励差为 时,偏好概率为 ;优选回答的奖励高得越多,模型预测它被选择的概率越大。这是对偏好数据的建模假设。
对于第 1.4 节的 KL 正则目标,如果奖励函数固定,策略又能取任意回答分布,那么最优策略满足:
是归一化因子,使所有回答的概率之和为 。这条关系表明:最优策略在参考分布上,按奖励的指数值重新分配概率。
取对数并移项:
同一问题下,两条回答共用 。计算奖励差时, 抵消,偏好概率就能直接用策略与参考模型的概率表示。DPO 论文,第 4 节
3.3 DPO 损失
DPO 不单独训练奖励模型,而是用可训练策略 与参考模型的概率比定义隐式奖励:
两条回答的隐式奖励差记为 ,其中:
将这个奖励差代入 Bradley–Terry 模型,优选回答被选中的概率就是 。对数据集中的选择结果取负对数似然,得到 DPO 损失:
比较的是:相对参考模型,优选回答和劣选回答各自的概率变了多少。增大这个对数概率差, 就会增大,也就是模型预测“优选回答被选中”的概率上升,损失随之下降。
对应原优化目标中的 KL 正则系数,在这个损失中控制偏好差值的缩放。
假设两条回答相对参考模型的概率倍率最初都是 ,则 。若训练后优选回答的倍率变为 ,劣选回答变为 ,则 ,这条样本的 DPO 损失下降。
这里的概率是完整回答的条件概率,实际计算使用各回答 token 的对数概率之和。 模型只需对已有的优选与劣选序列计算概率,无需为了计算这项损失重新生成回答。
这个对应关系建立在前面的 KL 正则目标和偏好模型假设上。实际训练只有有限数据,DPO 与 PPO 不一定得到相同的模型。
3.4 训练成本与数据限制
原始 DPO 的训练流程为:读取偏好对,计算策略与参考模型的序列对数概率,计算损失,更新策略参数。
参考模型保持固定,其对数概率还能预先计算并保存。DPO 训练文档
DPO 省去了在线生成与价值模型训练,但仍要收集偏好数据。标注有偏差、问题覆盖不全,或训练问题与实际使用场景差得太远,都会影响结果。
固定数据还有一个限制:模型训练中产生的新错误,不会自动出现在已有的偏好对里。
4. GRPO
4.1 组内奖励替代价值模型
GRPO(Group Relative Policy Optimization,组相对策略优化)使用同一问题下多条回答的奖励估计优势,省去单独训练的价值模型。 它由 DeepSeekMath 提出,保留了 PPO 的概率比与裁剪思路。
对于问题 ,旧策略生成 条回答,每条回答得到一个分数 。如果只在回答结束时评分,这种方式称为结果监督,其优势计算为:
减去组内均值,得到该回答比平均分高多少或低多少;除以标准差,让差值以组内分数的离散程度为尺度。
高于组内平均分的回答具有正优势,低于平均分的回答具有负优势。
4.2 一组回答的计算例子
假设同一道题采样四个回答,奖励为 ,其中答对得 ,答错得 。
组内均值为 。按总体标准差计算,标准差为 ,得到优势 。
两条答对的回答提供正向更新信号,两条答错的回答提供负向更新信号。比较只用到了这道题的四个回答,不需要价值模型预测它们的回报。
在这种结果监督形式下,同一回答中的所有 token 共用该回答的优势:
各 token 的概率比和对应梯度可以不同,因此共用优势不代表它们对更新的贡献完全相同。
这样会把整段回答的得分用于训练每个 token,并没有逐步判断推理是否正确。过程奖励能为中间步骤提供更细的评价,但需要额外的步骤评价能力。
4.3 裁剪目标与 KL 惩罚
对第 条回答的第 个 token,概率比为:
将 PPO 的单个裁剪项记为:
原始 GRPO 对一组回答最大化以下目标:
是第 条回答的长度, 是当前策略相对参考策略的逐 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 采样成本与奖励差异
省去价值模型会减少相应训练和显存开销,但每个问题需要生成多条回答。总成本还取决于组大小、回答长度、评分方式和生成吞吐量。
当组内奖励完全相同时,标准差为 ,上述归一化公式会除以零,实现时需要单独处理。即使解决了除零问题,各回答与均值的差仍为 ,这组奖励也无法告诉模型应该更偏向哪条回答。
组内奖励没有差异,不等于整个训练目标没有梯度。 若目标中保留 KL 项,整体梯度不一定为零。
对于二值奖励,题目过难导致全错,或过易导致全对,都可能出现这种情况。题目难度和采样多样性会影响一组回答能提供多少训练信息。
5. 三种方法的比较
以下对比采用典型 PPO-RLHF、原始 DPO 和原始结果监督 GRPO。
| 比较项 | PPO | DPO | GRPO |
|---|---|---|---|
| 策略训练数据 | 策略持续生成回答 | 已有的偏好对 | 每个问题生成一组回答 |
| 评价信号 | 回答或步骤奖励 | 优选与劣选关系 | 组内各回答的奖励 |
| 独立奖励模型 | 经典 RLHF 中使用 | 不需要 | 可使用,也可接规则评分 |
| 价值模型 | 典型实现中训练 | 不需要 | 不需要 |
| 更新依据 | 价值模型辅助估计优势 | 相对参考模型的偏好概率损失 | 组内奖励归一化形成优势 |
| 主要开销 | 生成、评分、价值模型与策略训练 | 偏好数据构建、成对序列训练 | 多次生成、评分与策略训练 |
选择方法时,考虑已有数据和训练成本:
- 已有覆盖充分的偏好对:DPO 的训练流程更直接。
- 需要持续评价模型新生成的回答:可以考虑 PPO 或 GRPO。
- 在 PPO 与 GRPO 之间选择:看价值模型估计得是否准确,以及多次采样和训练价值模型各自的成本。
三种方法的效果都受训练信号质量影响:
- 偏好标注可能偏爱某种措辞或回答长度。
- 奖励模型可能给某类回答过高的分数。
- 验证规则可能漏掉错误。
比较算法效果时,还要交代初始模型、训练数据、奖励方式和计算预算。
评论
使用 GitHub 登录后参与讨论,评论将公开保存在 GitHub。
站长管理删除会同步到 GitHub,无法撤销。
阅读到这里时加载评论。