DPO和PPO详解及区别

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 在大模型对齐中也有明显缺点:

  1. 训练链路复杂

    PPO-RLHF 通常需要:

    • SFT 模型;
    • Reward Model;
    • Value Model / Critic;
    • Rollout 采样;
    • KL 控制;
    • 多个训练阶段。
  2. 工程成本高

    PPO 需要模型不断生成样本,再由奖励模型打分,训练过程显存和算力消耗较大。

  3. 超参数敏感

    例如:

    • learning rate;
    • KL penalty;
    • reward normalization;
    • clip range;
    • batch size;
    • rollout length。
  4. 可能出现 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 的主要优点包括:

  1. 训练流程简单

    不需要显式 Reward Model,不需要 PPO rollout,也通常不需要 Value Model。

  2. 稳定性较好

    DPO 本质上更接近监督学习中的二分类或排序优化,训练过程通常比 PPO 更容易控制。

  3. 算力成本较低

    DPO 可以直接在离线偏好数据上训练,减少了在线采样和奖励模型推理成本。

  4. 容易工程落地

    对企业私有模型、垂直领域助手、客服模型、代码助手等场景,DPO 通常更容易部署。


10. DPO 的缺点

DPO 也不是万能的,主要限制包括:

  1. 依赖偏好数据质量

    如果 chosen/rejected 数据质量差,模型就会学到错误偏好。

  2. 离线数据覆盖有限

    DPO 主要依赖已有偏好对。如果训练数据没有覆盖某些复杂场景,模型可能无法学会新的策略。

  3. 不适合强交互任务

    对于需要环境反馈、多轮探索、工具调用规划、机器人控制等任务,DPO 的离线偏好学习能力可能不足。

  4. 对参考模型敏感

    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=log⁡Pθ(yw∣x)−log⁡Pref(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=log⁡Pθ(yl∣x)−log⁡Pref(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 或其他强化学习方法。

参考资料

  1. Schulman et al., Proximal Policy Optimization Algorithms , 2017.

    https://arxiv.org/abs/1707.06347

  2. Ouyang et al., Training language models to follow instructions with human feedback , 2022.

    https://arxiv.org/abs/2203.02155

  3. Rafailov et al., Direct Preference Optimization: Your Language Model is Secretly a Reward Model , 2023.

    https://arxiv.org/abs/2305.18290

  4. OpenReview: Direct Preference Optimization: Your Language Model is Secretly a Reward Model .

    https://openreview.net/forum?id=HPuSIXJaa9

相关推荐
埃菲尔铁塔_CV算法43 分钟前
基于扩张卷积与双分支参数调控的低光照图像增强算法完整研究与工程解析
人工智能·神经网络·算法·机器学习·计算机视觉
hai3152475431 小时前
有规则的AI编制操作系统演进过程展示
人工智能·程序人生·算法·逻辑回归·创业创新
老鱼说AI1 小时前
统计学习方法第七章:支持向量机精讲(超硬核长文深入预警!)
人工智能·深度学习·神经网络·算法·机器学习·支持向量机·学习方法
bryant_meng1 小时前
【Claude Code】Claude Code Evolution
人工智能·大模型·vibe coding·claude code
文心快码BaiduComate1 小时前
Comate搭载MiniMax M3:支持超长百万上下文
前端·人工智能·后端
容器魔方1 小时前
KubeEdge SIG AI: 基于KubeEdge-Ianvs的大模型联邦微调算法
大数据·人工智能·算法·云原生·容器·云计算
AI 编程助手GPT1 小时前
ChatGPT 新手入门与实战操作指南
开发语言·人工智能·git·python·chatgpt
小陈phd1 小时前
多模态大模型学习笔记(四十四)——图像计数(Image Counting):多目标密集场景下的精确统计
人工智能