✨ 复制成功!

以文会友,打造好学人设!

📋 已复制到剪贴板:

DPO 相比 PPO 做了哪些简化?为什么 DPO 不需要显式训练奖励模型?DPO 的损失函数背后是什么直觉?它和 RLHF 的效果差距在哪里?

创建时间:2026-09-18 更新时间:2026-09-18 阅读次数:1316 次 分类:微调与对齐技术

一、DPO 的核心思想

DPO(Direct Preference Optimization,直接偏好优化)是 RLHF 的重要简化方案。

它的核心思想是:跳过奖励模型和强化学习,直接用偏好数据优化语言模型,把 RLHF 的目标转化为一个简单的分类损失。

RLHF 的流程是:

$$ \text{SFT} \rightarrow \text{RM} \rightarrow \text{PPO} $$

DPO 的流程是:

$$ \text{SFT} \rightarrow \text{DPO} $$

一句话总结:DPO 把 RLHF 的三阶段压缩成两阶段,用数学推导把奖励模型隐式地融入策略模型,训练更简单、更稳定。


二、DPO 相比 PPO 做了哪些简化

1、流程简化

维度 PPO DPO
阶段数 SFT + RM + PPO SFT + DPO
需要奖励模型 是 否
需要 Critic 是 否
需要采样 是,在线采样 否,离线数据
模型数量 4 个 2 个
训练方式 在线 RL 离线监督
稳定性 较差 较好
超参数 多 少
计算成本 高 低

2、模型数量简化

PPO 需要四个模型:

  • Actor(策略模型);
  • Critic(价值模型);
  • Reward Model(奖励模型);
  • Reference Model(参考模型)。

DPO 只需要两个模型:

  • Policy Model(策略模型,要训练的);
  • Reference Model(参考模型,冻结的 SFT 模型)。

3、训练方式简化

PPO:

  • 在线采样;
  • 策略模型生成回答;
  • 奖励模型打分;
  • 计算优势;
  • 更新策略。

DPO:

  • 离线数据;
  • 直接用偏好对;
  • 计算 DPO 损失;
  • 更新策略。

不需要采样,不需要奖励模型,不需要 Critic。

4、超参数简化

PPO 需要调:

  • 学习率;
  • KL 系数 $\beta$;
  • clip 范围 $\epsilon$;
  • batch size;
  • GAE 参数;
  • 奖励缩放。

DPO 只需要调:

  • 学习率;
  • $\beta$;
  • batch size。

超参数少很多,调参更容易。

5、工程简化

  • 不需要分布式 RL 框架;
  • 不需要协调四个模型;
  • 不需要处理奖励黑客;
  • 不需要 Critic 训练;
  • 实现简单,代码量小。

三、为什么 DPO 不需要显式训练奖励模型

1、RLHF 的目标

RLHF 的优化目标是:

$$ \max_{\pi_\theta} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta(y|x)} \left[ r_\phi(x, y) \right] - \beta \cdot \text{KL}(\pi_\theta(y|x) | \pi_{\text{ref}}(y|x)) $$

其中:

  • $r_\phi$ 是奖励模型;
  • $\pi_{\text{ref}}$ 是参考模型;
  • $\beta$ 是 KL 系数。

2. 最优策略的闭式解

可以证明,在上述目标下,最优策略为:

$$ \pi^*(y|x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y|x) \exp\left( \frac{1}{\beta} r_\phi(x, y) \right) $$

其中 $Z(x)$ 是归一化因子:

$$ Z(x) = \sum_y \pi_{\text{ref}}(y|x) \exp\left( \frac{1}{\beta} r_\phi(x, y) \right) $$

3、反解奖励

对上式取对数,可以反解出奖励:

$$ r_\phi(x, y) = \beta \log \frac{\pi^*(y|x)}{\pi_{\text{ref}}(y|x)} + \beta \log Z(x) $$

关键洞察:

奖励可以用策略模型和参考模型的概率比来表示。

4、代入偏好模型

Bradley-Terry 偏好模型:

$$ P(y_w \succ y_l | x) = \sigma(r(x, y_w) - r(x, y_l)) $$

把奖励表达式代入:

$$ r(x, y_w) - r(x, y_l) = \beta \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)} $$

注意 $Z(x)$ 在相减时消掉了,因为 $Z(x)$ 只依赖 $x$,不依赖 $y$。

5、得到 DPO 损失

$$ \mathcal{L}_{\text{DPO}} = -\mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \sigma\left( \beta \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)} \right) \right] $$

这就是 DPO 的损失函数。

6、为什么不需要奖励模型

因为:

  • 奖励已经被策略模型和参考模型的概率比隐式表示;
  • 优化策略模型等价于优化隐式奖励;
  • 不需要单独训练奖励模型;
  • 不需要显式的奖励信号。

一句话总结:DPO 把奖励模型“内化”到了策略模型里,用概率比代替奖励。


四、DPO 损失函数背后的直觉

1、损失函数形式

$$ \mathcal{L}_{\text{DPO}} = -\log \sigma\left( \beta \left( \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)} \right) \right) $$

定义隐式奖励:

$$ \hat{r}_\theta(x, y) = \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)} $$

则损失为:

$$ \mathcal{L}_{\text{DPO}} = -\log \sigma\left( \hat{r}_\theta(x, y_w) - \hat{r}_\theta(x, y_l) \right) $$

这和奖励模型的 Bradley-Terry 损失形式完全一样。

2、直觉解释

DPO 的核心直觉是:

提高好回答的概率,降低差回答的概率,但用参考模型做约束。

具体来说:

  • 对于好回答 $y_w$:希望 $\pi_\theta(y_w|x)$ 比 $\pi_{\text{ref}}(y_w|x)$ 大;
  • 对于差回答 $y_l$:希望 $\pi_\theta(y_l|x)$ 比 $\pi_{\text{ref}}(y_l|x)$ 小;
  • 两者的对数比之差越大,损失越小。

3、梯度分析

DPO 的梯度为:

$$ \nabla_\theta \mathcal{L}_{\text{DPO}} = -\beta \sigma\left( \hat{r}_\theta(x, y_l) - \hat{r}_\theta(x, y_w) \right) \left( \nabla_\theta \log \pi_\theta(y_w|x) - \nabla_\theta \log \pi_\theta(y_l|x) \right) $$

直觉:

  • 如果模型已经认为 $y_w$ 比 $y_l$ 好,$\sigma$ 接近 1,梯度小;
  • 如果模型判断错误,$\sigma$ 接近 0,梯度大;
  • 梯度方向是提高 $y_w$ 的概率,降低 $y_l$ 的概率。

4、参考模型的作用

参考模型 $\pi_{\text{ref}}$ 的作用:

  • 提供基线;
  • 防止策略偏离太远;
  • 相当于 KL 约束;
  • 保持语言质量。

5、和奖励模型的关系

DPO 的隐式奖励:

$$ \hat{r}_\theta(x, y) = \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)} $$

这和 RLHF 中最优策略反解的奖励形式一致。

所以 DPO 本质上是在用策略模型本身作为奖励模型。


五、DPO 和 RLHF 的效果差距

1、理论上

  • DPO 和 RLHF 优化的是同一个目标;
  • 在最优解下,两者等价;
  • 所以理论上效果应该接近。

2、实际中

  • DPO 通常略逊于 RLHF,但差距不大;
  • 在某些任务上,DPO 可以接近甚至超过 RLHF;
  • 差距主要来自实现和训练细节。

3、差距来源

(1)离线 vs 在线

  • RLHF 在线采样,能探索新回答;
  • DPO 离线数据,只能利用已有偏好对;
  • 在线探索可能找到更好的策略。

(2)奖励模型的作用

  • RLHF 的奖励模型可以泛化到新回答;
  • DPO 的隐式奖励依赖偏好数据覆盖;
  • 数据分布外,DPO 可能表现差。

(3)KL 控制

  • RLHF 可以动态调 KL;
  • DPO 的 $\beta$ 固定;
  • 控制粒度不同。

(4)训练稳定性

  • DPO 更稳定;
  • RLHF 可能崩溃;
  • 但 RLHF 调好后可能更好。

(5)数据质量

  • DPO 对数据质量更敏感;
  • RLHF 可以通过奖励模型缓解。

4、实证结果

  • 原始 DPO 论文:DPO 在多个任务上接近或超过 PPO;
  • 后续研究:RLHF 在复杂任务上仍有一定优势;
  • 但 DPO 的简单性和稳定性使其广受欢迎。

5. 实际选择

  • 资源有限:DPO;
  • 追求最佳效果:RLHF 或 DPO + 在线;
  • 快速迭代:DPO;
  • 复杂对齐:RLHF。

六、DPO 的变体和改进

1、IPO(Identity Preference Optimization)

  • 解决 DPO 过拟合问题;
  • 用 identity 映射代替 sigmoid。

2、KTO(Kahneman-Tversky Optimization)

  • 不需要成对偏好;
  • 只需要好/坏标签。

3、ORPO(Odds Ratio Preference Optimization)

  • 把 SFT 和偏好优化合并;
  • 不需要参考模型。

4、SimPO(Simple Preference Optimization)

  • 不需要参考模型;
  • 用长度归一化。

5、GRPO(Group Relative Policy Optimization)

  • DeepSeek 使用;
  • 不需要 Critic;
  • 在线采样。

七、简单评价这道面试题

1、这道题的价值

  • 这是大模型对齐中非常核心的一道题;
  • 一道题能考察 DPO 的推导、直觉、和 RLHF 的对比;
  • 区分度好,初级可能只知道 DPO 更简单,中级能说清损失函数,高级能推导并讲清效果差距;
  • 贴近实战,DPO 是当前最常用的对齐方法之一。

2、这道题的不足

  • 题目偏难,需要概率和推导基础;
  • 没有涉及 DPO 的变体细节;
  • 对在线 vs 离线的讨论可以更深入;
  • 没有涉及 DPO 的实际调参经验。

3、建议的追问方向

  • DPO 的损失函数怎么从 RLHF 推导出来?
  • 为什么 $Z(x)$ 会消掉?
  • DPO 的 $\beta$ 怎么选?
  • DPO 和 IPO、KTO、ORPO 有什么区别?
  • DPO 为什么会过拟合?
  • DPO 和在线 DPO 的效果差距?

4、总体评价

这是一道很好的大模型对齐面试题,适合考察候选人对 DPO 和 RLHF 的理解。它既能考察数学推导,也能延伸到实际效果和工程选择。如果候选人能把 DPO 的简化、无需奖励模型的原因、损失函数的直觉以及和 RLHF 的效果差距都讲清楚,基本可以判断其具备大模型对齐的扎实基础。


📌 面试天下网:一款服务于大一新生的口袋书,让大家在无聊的公共课上可以学习大模型技术!
📌 网站公告:【悬赏 200 元/篇】寻找“大模型面试战场”的一手回忆录
📌 网站公告:【大模型/Agent面试陪练1V1指导】正式启动......

评论专区

评论加载中...