# DPO 为什么只做偏好分类,却“自带” KL 约束?
> 更喜欢手写体的可以看手稿。下面三页是我下午完整手推的过程,展开即可查看。
展开手稿(共三页)



> 关键词:DPO、RLHF、KL Divergence、Reference Policy、Bradley–Terry Model、Partition Function
DPO大家都很熟悉,也知道他的基本原理以及适用场景,KL散度大家也很熟悉,也知道它的基本原理和适用场景,老生常谈。DPO 的训练形式看起来只是一个二分类问题。给定同一个 Prompt 下的 `chosen response` 和 `rejected response`,模型只需要提高前者胜过后者的概率。此文主要讲DPO的偏好模型是怎么构建的,以及为什么其他的后训练算法都在添加KL散度,但DPO的损失函数却如此纯粹?
比如说,DPO Loss 中为什么又会出现当前策略与 Reference Policy 的对数概率比:
$$
\log\frac{\pi_\theta(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}.
$$
这个形式与 KL Divergence 的核心组成完全一致。难道说?????但,DPO并没有显式计算KL散度
> DPO 明明没有在 Loss 中显式计算 KL Divergence,为什么仍然带有相对于 Reference Policy 的 KL 约束?
本文结合手稿进行如下结论的推算:
> DPO 并不是在普通偏好分类目标之外“自动生成”了一个 KL 项。它先从带 KL Regularization 的 RLHF 目标出发,把最优策略反解成隐式 Reward,再代入 Bradley–Terry Preference Model。因此,最后看起来只是分类的 Loss,实际上继承了原始 RL 目标的 KL 结构。
一句话结论,Reference Policy 并不是后来人为塞进 DPO Loss 的技巧,而是原始 KL-Regularized RL 目标经过解析推导后自然留下来的结构。下面从最基础的 Reward Maximization 开始,一步步把这个关系推出来。
---
## 一、符号定义
| 符号 | 含义 |
| --- | --- |
| $x$ | Prompt |
| $y$ | 针对 Prompt $x$ 的一条完整回答 |
| $y_w$ | Preferred / Chosen Response |
| $y_l$ | Dispreferred / Rejected Response |
| $\pi_\theta(y\mid x)$ | 当前可训练策略生成回答 $y$ 的概率 |
| $\pi_{\mathrm{ref}}(y\mid x)$ | 固定的 Reference Policy |
| $r(x,y)$ | 回答 $y$ 在 Prompt $x$ 下的 Reward |
| $\beta>0$ | KL Regularization 系数 |
| $Z(x)$ | 固定 Prompt 下的归一化因子,即 Partition Function |
这里的 $\pi_\theta(y\mid x)$ 表示完整回答的序列概率。对自回归语言模型,有:
$$
\log\pi_\theta(y\mid x)
=
\sum_{t=1}^{T}
\log\pi_\theta(y_t\mid x,y_{ DPO 的 Preference Logit 使用了由 KL-Regularized RL 最优策略诱导出的隐式 Reward 参数化,因此继承了 Reference Policy 所定义的相对概率坐标系。
### 8.3 DPO 的梯度在做什么
单个样本的梯度为:
$$
\nabla_\theta\ell_{\mathrm{DPO}}
=
-\beta\sigma(-m_\theta)
\left[
\nabla_\theta\log\pi_\theta(y_w\mid x)
-
\nabla_\theta\log\pi_\theta(y_l\mid x)
\right].
$$
从这个梯度看,DPO 会提高 Chosen Response 的 Log Probability,并降低 Rejected Response 的 Log Probability。
Reference Policy 是固定的,不会产生参数梯度;但它参与 $m_\theta$ 的计算,从而决定当前偏好对是否已经被模型正确拉开,以及该样本的梯度权重 $\sigma(-m_\theta)$ 有多大。
---
## 九、“DPO 自带 KL”的准确含义
“DPO 自带 KL”可以作为直观表述,但必须明确其适用边界。
### 可以这样理解
1. DPO 的理论起点是带 Reference KL 的 Reward Maximization;
2. 最优策略通过 $\pi^*/\pi_{\mathrm{ref}}$ 表达;
3. Reward 被重参数化为相对于 Reference Policy 的 Log Ratio;
4. Preference Difference 消去了同一 Prompt 下共享的 $Z(x)$;
5. 最终得到只依赖策略概率比的分类 Loss。
所以,DPO 虽然没有显式训练 Reward Model,也没有运行 Policy Gradient RL Loop,但其目标形式继承了 KL-Regularized RLHF 的结构。
### 不能过度理解成
$$
\mathcal L_{\mathrm{DPO}}
=
\mathcal L_{\mathrm{preference}}
+
\beta D_{\mathrm{KL}}
(\pi_\theta\Vert\pi_{\mathrm{ref}}).
$$
标准 DPO Loss 并不是上述两个 Loss 的简单相加,也不会在每一步训练中显式枚举完整回答空间并计算 KL。
因此,在有限偏好数据、有限模型容量和非凸参数优化下,不能仅凭“隐含 KL”就断言实际测得的 KL 一定被严格限制在某个范围内。DPO 与 KL-Regularized RL 的对应关系,首先是目标函数最优解层面的理论对应。
---
## 十、完整推导链条
完整过程可以压缩成下面这条链:
$$
\boxed{
\begin{aligned}
&\text{KL-Regularized Reward Maximization}\\
&\Downarrow\\
&\pi^*(y\mid x)
=
\frac{1}{Z(x)}
\pi_{\mathrm{ref}}(y\mid x)e^{r(x,y)/\beta}\\
&\Downarrow\\
&r(x,y)
=
\beta\log\frac{\pi^*(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}
+
\beta\log Z(x)\\
&\Downarrow\\
&\text{同一 Prompt 下做 Reward Difference,}Z(x)\text{ 消失}\\
&\Downarrow\\
&\text{使用 }\pi_\theta\text{ 拟合 }\pi^*\\
&\Downarrow\\
&\mathcal L_{\mathrm{DPO}}
\end{aligned}
}
$$
核心结论可以概括为:
> DPO 先利用 KL-Regularized RL 的最优解,把 Reward 写成 Policy 与 Reference Policy 的对数概率比;再利用同一 Prompt 内偏好比较只依赖 Reward Difference 的性质,消去共同的 $Z(x)$,最终将 RLHF 目标转换成可以直接训练 Policy 的二分类目标。
DPO 最巧妙的地方在于:它表面上绕开了 Reward Model 和 RL Loop,但并没有丢弃 RLHF 的理论结构,而是通过一次重参数化将其折叠进 Preference Classification。
---
## 十一、推导成立的条件与边界
为了避免将结论无限外推,还需要明确该推导依赖的基本条件:
1. $\beta>0$;
2. 在所讨论的回答支持集上,$\pi_{\mathrm{ref}}(y\mid x)>0$;
3. 解析求解时,先把策略视为可以自由优化的条件概率分布,而不是直接处理有限参数神经网络;
4. 偏好数据使用同一 Prompt 下的回答对;
5. 偏好概率能够由 Bradley–Terry Model,或相应的 Plackett–Luce Model 描述;
6. 实际训练使用参数化策略 $\pi_\theta$ 去逼近理论最优策略 $\pi^*$。
---
## 参考资料
- [Direct Preference Optimization: Your Language Model Is Secretly a Reward Model(arXiv:2305.18290)](https://arxiv.org/abs/2305.18290):提出 DPO,通过对 KL-Regularized RLHF 目标中的 Reward 进行策略重参数化,将 Reward Modeling 与 RL Policy Optimization 转换为单阶段偏好分类目标。