先回顾:传统 RLHF 在优化什么?
RLHF(Reinforcement Learning from Human Feedback)的核心目标是让大模型生成的回答 更符合人类偏好,同时 不要偏离原始 SFT 模型太远(避免幻觉、胡说八道)。
数学上,这个目标通常写成:
$$ J(\pi) = \mathbb{E}_{x \sim \mathcal{D},\, y \sim \pi(\cdot|x)} \Big[ r(x,y) \Big] - \beta \, \mathrm{KL}\big(\pi(\cdot|x) \parallel \pi_{\text{ref}}(\cdot|x)\big) $$- 第一项:期望奖励最大化($r(x,y)$ 是 Reward Model 给出的分数)。
- 第二项:KL 散度惩罚,强迫新策略 $\pi$ 不能离参考模型(通常是 SFT 后的模型)$\pi_{\text{ref}}$ 太远。
- $\beta$ 是超参数,控制惩罚强度($\beta$ 越大,模型越“保守”)。
传统做法是用 PPO(或其它 RL 算法)去最大化这个 $J(\pi)$。但 PPO 训练不稳定、采样开销大,还需要单独训练一个 Reward Model。DPO 的天才之处在于:它发现这个目标其实有解析解!
直观理解:最优策略长什么样?
想象一下:对于一个固定的问题 $x$,我们希望生成的回答 $y$ 既得分高($r(x,y)$ 大),又不能离 $\pi_{\text{ref}}$ 太远。
最优策略应该怎么做?
- 对奖励高的回答,指数级地提高它的概率;
- 对奖励低的回答,指数级地压低它的概率;
- 同时用 $\pi_{\text{ref}}$ 做“锚点”保持稳定性。
这听起来像 softmax,但奖励被指数放大了!
数学上,我们猜测最优策略的形式是:
归一化之后就得到闭式关系(closed-form relation):
$$ \pi^*(y|x) = \frac{1}{Z(x)} \, \pi_{\text{ref}}(y|x) \, \exp\left( \frac{r(x,y)}{\beta} \right) $$其中 $Z(x)$ 是归一化常数(partition function):
$$ Z(x) = \sum_{y} \pi_{\text{ref}}(y|x) \exp\left( \frac{r(x,y)}{\beta} \right) $$(如果是连续 token 分布,就换成积分。)
一句话直觉:最优策略 = 参考模型 × “奖励指数放大器”。$\beta$ 控制放大器的强度。
严谨推导:为什么这个形式是最优的?
现在我们来证明上面的猜想是唯一的最优解。固定一个 $x$,目标简化为最大化内层期望:
$$ \max_{\pi(\cdot|x)} \ \mathbb{E}_{y \sim \pi} \left[ r(x,y) - \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} \right] $$这是一个带约束的优化问题($\sum_y \pi(y|x) = 1$)。我们构造 Lagrangian:
$$ L(\pi, \lambda) = \mathbb{E}_{y\sim\pi} \Big[ r(x,y) - \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} \Big] + \lambda \left(1 - \sum_y \pi(y|x)\right) $$对 $\pi(y|x)$ 求变分导数(functional derivative)并令其为零:
$$ \frac{\partial L}{\partial \pi(y|x)} = r(x,y) - \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} - \beta - \lambda = 0 $$解得:
$$ \log \pi(y|x) = \log \pi_{\text{ref}}(y|x) + \frac{r(x,y)}{\beta} - 1 - \frac{\lambda}{\beta} $$两边取指数并归一化($\lambda$ 由归一化条件决定),正好得到我们之前的闭式关系:
$$ \boxed{\pi^*(y|x) = \frac{1}{Z(x)} \, \pi_{\text{ref}}(y|x) \, \exp\left( \frac{r(x,y)}{\beta} \right)} $$这个推导其实是指数族分布的经典结果:在 KL 正则化下,最优分布一定是参考分布乘以指数加权的似然。DPO 只是把它应用到了语言模型上。
从最优策略反推奖励函数
现在我们把闭式关系“反过来用”。对两边取对数:
$$ \log \frac{\pi^*(y|x)}{\pi_{\text{ref}}(y|x)} = \frac{r(x,y)}{\beta} - \log Z(x) $$两边乘 $\beta$ 得到:
$$ r(x,y) = \beta \log \frac{\pi^*(y|x)}{\pi_{\text{ref}}(y|x)} + \beta \log Z(x) $$关键观察来了:$\beta \log Z(x)$ 只依赖于输入 $x$,与具体回答 $y$ 无关。
在人类偏好数据里,我们总是成对比较两个回答(chosen $y_w$ 和 rejected $y_l$)。此时 $Z(x)$ 在两个回答上完全抵消:
$$ r(x,y_w) - r(x,y_l) = \beta \log \frac{\pi^*(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi^*(y_l|x)}{\pi_{\text{ref}}(y_l|x)} $$这意味着:我们可以直接把策略模型 $\pi_\theta$ 本身当成一个隐式的 Reward Model!
定义隐式奖励:
$$ r_\theta(x,y) \triangleq \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)} $$自然导出 DPO 损失函数
有了这个等价关系,DPO 就水到渠成了。我们把隐式奖励代入 Bradley-Terry 偏好模型(人类更喜欢 $y_w$ 胜过 $y_l$ 的概率):
$$ P(y_w \succ y_l | x) = \sigma \big( r(x,y_w) - r(x,y_l) \big) $$代入隐式奖励,得到 DPO 的最终损失(负对数似然):
$$ \mathcal{L}_{\text{DPO}}(\pi_\theta) = -\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 直接让策略提高 chosen 相对 reference 的概率,同时压低 rejected 相对 reference 的概率,整个过程只用一个模型、一次 offline 训练,干净、稳定、高效。
附录:变分导数这一步的详细推导
背景知识
- 我们优化的对象不是模型参数 $\theta$,而是整个概率分布函数 $\pi(\cdot|x)$,这属于变分学(calculus of variations)。
- 语言模型是离散的,但 RL 文献常用泛函导数记号,因为它对连续动作空间也成立,且更简洁。
离散情况(最推荐的直观方式)
固定 $x$,令 $p_y = \pi(y|x)$,$q_y = \pi_{\rm ref}(y|x)$,$r_y = r(x,y)$。目标:
$$ J(p) = \sum_y p_y r_y - \beta \sum_y p_y \log \frac{p_y}{q_y}, \quad \sum_y p_y = 1 $$Lagrangian:
$$ L = \sum_y p_y r_y - \beta \sum_y p_y (\log p_y - \log q_y) + \lambda (1 - \sum_y p_y) $$对某个具体 $p_k$ 求偏导 $\frac{\partial L}{\partial p_k}$:
- $p_k r_k$ → 贡献 $r_k$
- $-\beta p_k \log p_k$ → 贡献 $-\beta (\log p_k + 1)$ (关键!因为 $\frac{d}{dp}(p \log p) = \log p + 1$)
- $+\beta p_k \log q_k$ → 贡献 $+\beta \log q_k$
- 约束 → 贡献 $-\lambda$
合起来:
$$ r_k - \beta \log \frac{p_k}{q_k} - \beta - \lambda = 0 $$这个“-$\beta$”正是来自负熵项 $p \log p$ 的导数特性。解出 $p_k \propto q_k \exp(r_k / \beta)$,归一化即得闭式解。
连续情况(泛函导数)
目标写成积分形式。给 $\pi$ 一个微小扰动 $\pi_\epsilon = \pi + \epsilon \eta$($\int \eta = 0$),要求变分为零:
计算后同样得到:
$$ r(y) - \beta \log \frac{\pi(y)}{q(y)} - \beta - \lambda = 0 $$离散和连续结果完全一致。那个“-$\beta$”项在两种情况下都必然出现。
小扰动直观法(无需记住公式)
在某个 $y$ 上多给一点概率 $\delta p$(同时在别处减掉保持归一化),目标变化必须为零:
- 奖励:$+\delta p \cdot r(y)$
- KL 变化:$\delta p \cdot (-\beta \log \frac{\pi}{q}) - \beta \delta p$
平衡后得到完全相同的条件。
这个技巧来自最大熵强化学习(MaxEnt RL)和 TRPO/PPO 的理论基础,是现代对齐方法的共同基石。