DPO 和 PPO 详解及区别
1. 一句话理解
PPO 是一种"先训练奖励模型,再用强化学习优化大模型"的方法。
DPO 是一种"直接用偏好对训练大模型,不显式训练奖励模型、不跑强化学习采样"的方法。
在大模型对齐中,二者通常都用于 SFT 之后的偏好对齐阶段。
2. PPO:Proximal Policy Optimization
PPO,全称 Proximal Policy Optimization,最早是强化学习中的策略优化算法。它的核心思想是:
更新策略时,不要让新策略相对旧策略变化过大。
这样可以避免强化学习训练中常见的策略崩溃问题。
在大模型 RLHF 中,PPO 通常位于以下流程的第三阶段:
text
预训练模型
↓
SFT 指令微调
↓
收集人类偏好数据
↓
训练 Reward Model
↓
PPO 强化学习优化
↓
对齐后的大模型
2.1 PPO 的核心思想
PPO 使用当前策略和旧策略的概率比值:
rt(θ)=πθ(at∣st)πθold(at∣st) r_t(\theta)=\frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{\text{old}}}(a_t \mid s_t)} rt(θ)=πθold(at∣st)πθ(at∣st)
其中:
- (\pi_\theta):当前策略;
- (\pi_{\theta_{\text{old}}}):更新前的旧策略;
- (a_t):动作;
- (s_t):状态。
PPO 的 clipped objective 通常写作:
LCLIP(θ)=Etmin(rt(θ)At,clip(rt(θ),1−ϵ,1+ϵ)At) L^{CLIP}(\theta)= \mathbb{E}_t \left \\min \\left( r_t(\\theta)A_t, \\text{clip}(r_t(\\theta),1-\\epsilon,1+\\epsilon)A_t \\right) \\right LCLIP(θ)=Etmin(rt(θ)At,clip(rt(θ),1−ϵ,1+ϵ)At)
其中:
- (A_t):优势函数;
- (\epsilon):裁剪范围;
clip:限制策略更新幅度。
直观理解:
- 如果新策略比旧策略变化不大,就正常更新;
- 如果变化过大,就进行裁剪;
- 这样可以提升训练稳定性。
3. PPO 在大模型 RLHF 中的作用
在语言模型中,可以把生成过程看成强化学习问题:
| 强化学习概念 | 大模型中的对应 |
|---|---|
| 状态 (s) | Prompt / 上下文 |
| 动作 (a) | 生成的 token 或 response |
| 策略 (\pi_\theta) | 当前语言模型 |
| 奖励 (r) | Reward Model 给出的分数 |
| 参考策略 (\pi_{\mathrm{ref}}) | SFT 模型 |
RLHF-PPO 的目标可以理解为:
R(x,y)=rϕ(x,y)−βDKL(πθ∥πref) R(x,y)=r_\phi(x,y)-\beta D_{\mathrm{KL}}(\pi_\theta \Vert \pi_{\mathrm{ref}}) R(x,y)=rϕ(x,y)−βDKL(πθ∥πref)
JPPO(θ)=ER(x,y) J_{\mathrm{PPO}}(\theta)=ER(x,y) JPPO(θ)=ER(x,y)
优化目标为:
maxθJPPO(θ) \max_\theta J_{\mathrm{PPO}}(\theta) θmaxJPPO(θ)
含义是:
模型既要生成高奖励回答,又不能偏离原始 SFT 模型太远。
其中:
- (r_\phi(x,y)):Reward Model 对回答的打分;
- (\beta):KL 惩罚系数;
- (\pi_{\mathrm{ref}}):参考模型。
4. PPO 的优点
PPO 的主要优势是 灵活性强。
它适合以下场景:
- 在线强化学习;
- 多轮 Agent 任务;
- 工具调用规划;
- 机器人控制;
- 游戏智能体;
- 长时序决策;
- 任务成功率可以由环境反馈;
- reward 不是简单的 chosen/rejected 偏好。
PPO 可以根据外部 reward 不断采样、探索和优化,因此适合复杂交互式任务。
5. PPO 的缺点
PPO 在大模型对齐中也有明显缺点:
-
训练链路复杂
PPO-RLHF 通常需要:
- SFT 模型;
- Reward Model;
- Value Model / Critic;
- Rollout 采样;
- KL 控制;
- 多个训练阶段。
-
工程成本高
PPO 需要模型不断生成样本,再由奖励模型打分,训练过程显存和算力消耗较大。
-
超参数敏感
例如:
- learning rate;
- KL penalty;
- reward normalization;
- clip range;
- batch size;
- rollout length。
-
可能出现 reward hacking
模型可能学会"欺骗"Reward Model,而不是生成真正更好的回答。
6. DPO:Direct Preference Optimization
DPO,全称 Direct Preference Optimization,是一种更直接的大模型偏好对齐方法。
它的核心思想是:
不显式训练 Reward Model,也不使用 PPO 强化学习采样,而是直接利用 chosen/rejected 偏好对训练模型。
DPO 使用的数据格式通常是:
text
(prompt, chosen_response, rejected_response)
例如:
text
Prompt:
解释 Transformer 的注意力机制。
Chosen:
Transformer 通过 Query、Key、Value 计算注意力权重,从而建模 token 之间的依赖关系。
Rejected:
Transformer 是一种 CNN 模型,主要通过卷积提取图像特征。
DPO 的目标是:
提高 chosen response 的相对概率,降低 rejected response 的相对概率。
7. DPO 的核心公式
DPO loss 通常写为:
$$
\mathcal{L}{DPO}(\pi\theta;\pi_{\mathrm{ref}})
\mathbb{E}*{(x,y_w,y_l)}
\left[
\log \sigma
\left(
\beta
\left[
\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)}
\right]
\right)
\right]
其中: * (x):prompt; * (y_w):winner response,也就是 chosen response; * (y_l):loser response,也就是 rejected response; * (\\pi_\\theta):当前训练模型; * (\\pi_{\\mathrm{ref}}):参考模型,通常是 SFT 模型; * (\\beta):控制模型偏离参考模型的强度; * (\\sigma):sigmoid 函数。 #### 7.1 公式直观解释 logπθ(yw∣x)πref(yw∣x) \\log \\frac{\\pi_\\theta(y_w \\mid x)}{\\pi_{\\mathrm{ref}}(y_w \\mid x)} logπref(yw∣x)πθ(yw∣x) 表示当前模型相对参考模型,对 chosen response 的提升程度。 logπθ(yl∣x)πref(yl∣x) \\log \\frac{\\pi_\\theta(y_l \\mid x)}{\\pi_{\\mathrm{ref}}(y_l \\mid x)} logπref(yl∣x)πθ(yl∣x) 表示当前模型相对参考模型,对 rejected response 的提升程度。 DPO 希望前者大于后者:
\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)}
$$
也就是说:
相比参考模型,新模型应该更偏向 chosen,而不是 rejected。
8. DPO 的训练流程
DPO 的训练流程比 PPO 简单很多:
text
预训练模型
↓
SFT 指令微调
↓
收集 chosen/rejected 偏好对
↓
DPO 直接优化语言模型
↓
对齐后的大模型
DPO 不需要单独训练 Reward Model,也不需要在训练过程中不断 rollout 采样。
9. DPO 的优点
DPO 的主要优点包括:
-
训练流程简单
不需要显式 Reward Model,不需要 PPO rollout,也通常不需要 Value Model。
-
稳定性较好
DPO 本质上更接近监督学习中的二分类或排序优化,训练过程通常比 PPO 更容易控制。
-
算力成本较低
DPO 可以直接在离线偏好数据上训练,减少了在线采样和奖励模型推理成本。
-
容易工程落地
对企业私有模型、垂直领域助手、客服模型、代码助手等场景,DPO 通常更容易部署。
10. DPO 的缺点
DPO 也不是万能的,主要限制包括:
-
依赖偏好数据质量
如果 chosen/rejected 数据质量差,模型就会学到错误偏好。
-
离线数据覆盖有限
DPO 主要依赖已有偏好对。如果训练数据没有覆盖某些复杂场景,模型可能无法学会新的策略。
-
不适合强交互任务
对于需要环境反馈、多轮探索、工具调用规划、机器人控制等任务,DPO 的离线偏好学习能力可能不足。
-
对参考模型敏感
DPO 通常依赖 SFT 模型作为参考模型。如果参考模型质量较差,DPO 的效果也会受到影响。
11. PPO 和 DPO 的核心区别
| 维度 | PPO | DPO |
|---|---|---|
| 方法类型 | 强化学习策略优化 | 直接偏好优化 |
| 是否需要 Reward Model | 需要 | 不需要显式 Reward Model |
| 是否需要 rollout 采样 | 需要 | 通常不需要 |
| 是否需要 Value Model | 通常需要 | 不需要 |
| 数据形式 | prompt + 模型采样 + reward | prompt + chosen/rejected |
| 优化目标 | 最大化 reward,同时加 KL 约束 | 提高 chosen 相对 rejected 的概率 |
| 工程复杂度 | 高 | 低 |
| 训练稳定性 | 较难调 | 通常更稳定 |
| 算力成本 | 高 | 较低 |
| 适合场景 | 在线 RL、Agent、复杂任务 | 离线偏好对齐、指令模型优化 |
| 主要风险 | reward hacking、训练不稳定 | 数据质量依赖强、覆盖不足 |
12. 从目标函数角度对比
PPO:显式 reward 最大化
R(x,y)=rϕ(x,y)−βDKL(πθ∥πref) R(x,y)=r_\phi(x,y)-\beta D_{\mathrm{KL}}(\pi_\theta \Vert \pi_{\mathrm{ref}}) R(x,y)=rϕ(x,y)−βDKL(πθ∥πref)
JPPO(θ)=ER(x,y) J_{\mathrm{PPO}}(\theta)=ER(x,y) JPPO(θ)=ER(x,y)
优化目标为:
maxθJPPO(θ) \max_\theta J_{\mathrm{PPO}}(\theta) θmaxJPPO(θ)
PPO 的核心是:
先训练 Reward Model,再用强化学习最大化 Reward Model 的分数。
DPO:隐式 reward 优化
Δw=logPθ(yw∣x)−logPref(yw∣x) \Delta_w=\log P_\theta(y_w \mid x)-\log P_{\mathrm{ref}}(y_w \mid x) Δw=logPθ(yw∣x)−logPref(yw∣x)
Δl=logPθ(yl∣x)−logPref(yl∣x) \Delta_l=\log P_\theta(y_l \mid x)-\log P_{\mathrm{ref}}(y_l \mid x) Δl=logPθ(yl∣x)−logPref(yl∣x)
LDPO(θ)=−logσ(β(Δw−Δl)) L_{\mathrm{DPO}}(\theta)=-\log\sigma(\beta(\Delta_w-\Delta_l)) LDPO(θ)=−logσ(β(Δw−Δl))
优化目标为:
minθLDPO(θ) \min_\theta L_{\mathrm{DPO}}(\theta) θminLDPO(θ)
优化目标为:
minθ LDPO(θ) \min_{\theta}\ \mathcal{L}_{\mathrm{DPO}}(\theta) θmin LDPO(θ)
DPO 的核心是:
不显式建模 reward,而是直接让模型学会 chosen 比 rejected 更好。
13. 从工程实现角度对比
PPO-RLHF 工程模块
PPO-RLHF 通常需要:
text
SFT Model
Reward Model
Reference Model
Value Model / Critic
Rollout Engine
KL Controller
PPO Trainer
Evaluation Pipeline
训练步骤大致为:
text
1. 输入 prompt
2. 当前模型生成 response
3. Reward Model 给 response 打分
4. 计算 KL penalty
5. 计算 advantage
6. PPO 更新策略模型
7. 控制模型不要偏离 reference model 太远
DPO 工程模块
DPO 通常只需要:
text
SFT Model
Reference Model
Preference Dataset
DPO Trainer
Evaluation Pipeline
训练步骤大致为:
text
1. 输入 prompt
2. 读取 chosen response 和 rejected response
3. 分别计算当前模型和参考模型的 log probability
4. 计算 DPO loss
5. 更新当前模型
因此,DPO 的训练链路明显短于 PPO。
14. 直观例子
假设 prompt 是:
text
请解释 ViT 的 Patch Embedding。
有两条回答:
text
A:ViT 将图像切成固定大小 patch,每个 patch 展平后线性映射成 token embedding,再加位置编码输入 Transformer。
B:ViT 主要使用 CNN 卷积提取特征,然后送入 RNN。
人类偏好 A,拒绝 B。
PPO 会怎么做?
PPO 的流程是:
text
1. 先训练 Reward Model,让它给 A 高分、B 低分。
2. 当前模型针对 prompt 生成新的回答。
3. Reward Model 给新回答打分。
4. PPO 根据 reward、KL penalty 和 advantage 更新模型。
DPO 会怎么做?
DPO 的流程是:
text
1. 直接读取 prompt、A、B。
2. 将 A 作为 chosen,B 作为 rejected。
3. 提高模型生成 A 的相对概率。
4. 降低模型生成 B 的相对概率。
因此:
PPO 是"生成---打分---强化学习更新",DPO 是"直接用偏好对更新"。
15. 什么时候选择 PPO?
优先考虑 PPO 的场景:
- 任务需要在线探索;
- reward 来自真实环境;
- 需要长时序决策;
- 模型需要学会工具调用;
- Agent 需要多步规划;
- 机器人控制任务;
- 游戏智能体训练;
- 任务结果可以通过环境自动评价。
例如:
text
模型调用工具完成任务
↓
环境返回成功 / 失败 / reward
↓
PPO 根据 reward 优化策略
PPO 更适合这种交互式、复杂 reward 的任务。
16. 什么时候选择 DPO?
优先考虑 DPO 的场景:
- 已经有高质量偏好对数据;
- 目标是提升回答质量;
- 目标是提升指令跟随能力;
- 目标是提升安全性、帮助性和风格一致性;
- 算力有限;
- 不想维护 Reward Model;
- 希望训练流程简单稳定;
- 做企业私有模型或垂直领域模型对齐。
例如:
text
SFT 模型
↓
领域偏好数据
↓
DPO 训练
↓
领域对齐模型
对于大多数离线 LLM 偏好对齐任务,DPO 往往比 PPO 更容易落地。
17. DPO 是否可以完全替代 PPO?
不能简单认为 DPO 完全替代 PPO。
更准确的说法是:
在离线大模型偏好对齐场景中,DPO 可以大幅简化 PPO-RLHF 流程;但在需要在线交互、环境反馈和长时序决策的任务中,PPO 仍然有价值。
DPO 适合"已有偏好数据"的场景。
PPO 适合"需要探索和环境反馈"的场景。
18. 总结
| 结论 | 说明 |
|---|---|
| PPO 更像强化学习优化器 | 需要 Reward Model、rollout、KL、Value Model |
| DPO 更像偏好分类训练 | 直接使用 chosen/rejected 数据 |
| PPO 更灵活 | 适合在线交互和复杂 reward |
| DPO 更简单 | 适合离线 LLM 偏好对齐 |
| PPO 成本更高 | 工程链路长、训练较难稳定 |
| DPO 成本更低 | 训练流程接近监督微调 |
| PPO 的主要风险 | reward hacking、超参数敏感 |
| DPO 的主要风险 | 偏好数据质量依赖强、覆盖不足 |
最终可以总结为:
PPO 是"先学奖励,再用强化学习优化";DPO 是"直接从偏好对中优化模型"。
在实际大模型训练中:
- 做的是 通用对话模型、企业助手、领域问答模型、客服模型、代码助手 ,优先考虑 DPO;
- 做的是 Agent、工具调用、机器人、游戏、多轮交互式任务 ,可以考虑 PPO 或其他强化学习方法。
参考资料
-
Schulman et al., Proximal Policy Optimization Algorithms , 2017.
-
Ouyang et al., Training language models to follow instructions with human feedback , 2022.
-
Rafailov et al., Direct Preference Optimization: Your Language Model is Secretly a Reward Model , 2023.
-
OpenReview: Direct Preference Optimization: Your Language Model is Secretly a Reward Model .