970 字
5 分钟
DPO:跳过奖励模型的直接偏好优化

能不能不用强化学习#

RLHF + PPO 的流程是:先训练奖励模型,再用 PPO 优化策略。它需要同时维护策略、评论、奖励、参考四个模型,采样成本高,训练也不稳定。

DPO(Direct Preference Optimization)观察到一个关键事实:带 KL 约束的 RLHF 最优策略,可以写成奖励函数的闭式解。把奖励用策略表示出来后,奖励模型就被消掉了,偏好对齐可以直接转化成一个类似分类的监督学习问题。

从 RLHF 目标出发#

RLHF 的目标是

max⁡πθ  Ex, y∼πθ[r(x,y)]−βKL⁡(πθ(⋅∣x) ∥ πref(⋅∣x))\max_{\pi_\theta}\; \mathbb{E}_{x,\,y \sim \pi_\theta}\left[r(x,y)\right] - \beta \operatorname{KL}\big(\pi_\theta(\cdot \mid x)\,\|\,\pi_{\text{ref}}(\cdot \mid x)\big)

在固定 xx 时,这个优化问题的最优解为

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

其中 Z(x)=∑yπref(y∣x)exp⁡(r(x,y)/β)Z(x) = \sum_y \pi_{\text{ref}}(y|x)\exp(r(x,y)/\beta) 是配分函数。反过来解出奖励:

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

这个式子说明:最优策略本身就隐含了奖励,奖励等于策略相对参考模型的 log-ratio(再加上一个只与 xx 有关的常数)。

用 Bradley–Terry 消掉奖励#

偏好数据形式为 (x,yw,yl)(x, y_w, y_l),ywy_w 是更受偏好的回答。Bradley–Terry 模型假设

P(yw≻yl∣x)=σ(r(x,yw)−r(x,yl))P(y_w \succ y_l \mid x) = \sigma\big(r(x,y_w) - r(x,y_l)\big)

把上面的隐式奖励代入,Z(x)Z(x) 在相减时抵消:

P(yw≻yl∣x)=σ(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x))P(y_w \succ y_l \mid x) = \sigma\left( \beta \log\frac{\pi_\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log\frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)} \right)

于是可以直接用偏好数据训练策略,不需要显式的奖励模型。DPO 的损失为

LDPO=−E(x,yw,yl)log⁡σ(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x))\mathcal{L}_{\text{DPO}} = -\mathbb{E}_{(x,y_w,y_l)} \log \sigma\left( \beta \log\frac{\pi_\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log\frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)} \right)

β\beta 控制允许策略偏离参考模型的程度:β\beta 越大,约束越强;β\beta 越小,越激进地拟合偏好数据。

梯度直觉#

对损失求梯度,可以得到

∇θLDPO=−β σ(−(Δw−Δl))[∇θlog⁡πθ(yw∣x)−∇θlog⁡πθ(yl∣x)]\nabla_\theta \mathcal{L}_{\text{DPO}} = -\beta\,\sigma\big(-(\Delta_w - \Delta_l)\big) \left[ \nabla_\theta \log \pi_\theta(y_w \mid x) - \nabla_\theta \log \pi_\theta(y_l \mid x) \right]

其中:

  • Δw\Delta_w:偏好回答的隐式奖励;
  • Δl\Delta_l:较差回答的隐式奖励。

梯度做两件事:

  • 提高偏好回答 ywy_w 的似然;
  • 降低较差回答 yly_l 的似然。

进一步看:

  • 样本权重:σ(−(Δw−Δl))\sigma(-(\Delta_w-\Delta_l)) 表示模型当前判断错得越离谱,梯度越大;如果模型已经把 ywy_w 排得远高于 yly_l,这个样本的权重就很小;
  • 隐式 KL 约束:πref\pi_{\text{ref}} 出现在 log-ratio 中,策略偏离参考模型越远,更新越受抑制。

与 PPO 的对比#

方面PPO + RLHFDPO
是否需要奖励模型需要不需要
是否需要在线采样需要,每轮生成回答不需要,离线偏好数据
训练形式强化学习二分类式监督学习
需要维护的模型策略、评论、奖励、参考策略、参考
稳定性较低,调参敏感较高,接近普通 SFT
计算成本高低
约束方式显式 KL / 裁剪隐式 KL(log-ratio)

DPO 的优点是简单、稳定、便宜,适合在固定偏好数据集上做对齐。它也有局限:

  • 离线数据:不能像 PPO 那样在训练中探索新回答,偏好数据覆盖不到的行为学不到;
  • 对数据质量敏感:偏好标注噪声会直接进入损失;
  • 可能过拟合:在训练集上过度降低 yly_l 的概率,会损害生成多样性;
  • 长度与风格偏差:偏好数据中若存在长度偏好,DPO 会学到“更长更好”;
  • 参考模型依赖:πref\pi_{\text{ref}} 的选择会影响约束强度和最终行为。

实践中常见做法是先用 SFT 得到参考模型和初始策略,再用 DPO 做偏好对齐;也有工作把 DPO 与在线采样结合,或用 IPO、KTO 等变体缓解过拟合和噪声问题。

相关阅读#

DPO:跳过奖励模型的直接偏好优化
https://biscuit0613.github.io/posts/nlp/09-02-dpo/
作者
Biscuit
发布于
2026-10-20
许可协议
CC BY-NC-SA 4.0
知识图谱:表示、构建与应用
知识增强的大语言模型