DPO (Direct Preference Optimization,直接偏好优化) 是由斯坦福大学研究团队提出的一种用于微调大语言模型(LLM)的算法。它的核心贡献在于:绕过了传统 RLHF(基于人类反馈的强化学习)中复杂的奖励模型(Reward Model)训练和强化学习(PPO)阶段,直接在偏好数据上优化模型。
1. 为什么需要 DPO?
传统的 RLHF 是"Prompt x→x \rightarrowx→ 生成 y→y \rightarrowy→ RM 打分 →\rightarrow→ PPO 优化"。DPO 简化为: 对于同一个 Prompt xxx,给定两条轨迹(Response)ywy_wyw(更优)和 yly_lyl(稍差)。目标: 让模型生成的 ywy_wyw 的相对概率越来越大,而 yly_lyl 的相对概率越来越小。
公式推导本质: 利用最优策略与奖励函数之间的解析映射(Bradley-Terry 模型),把原本需要训练 RM 和做强化学习的过程,直接简化成了一个在偏好对(Preference Pairs)上的二分类交叉熵损失函数。
2. DPO 的数学公式
DPO 的精髓在于通过数学推导,证明了最优策略与奖励函数之间存在一种解析解的关系。
核心损失函数
DPO 的损失函数公式如下:
LDPO(πθ;πref)=−E(x,yw,yl)∼D[logσ(βlogπθ(yw∣x)πref(yw∣x)−βlogπθ(yl∣x)πref(yl∣x))]L_{DPO}(\pi_\theta; \pi_{ref}) = -\mathbb{E}{(x, y_w, y_l) \sim D} \left[ \log \sigma \left( \beta \log \frac{\pi\theta(y_w | x)}{\pi_{ref}(y_w | x)} - \beta \log \frac{\pi_\theta(y_l | x)}{\pi_{ref}(y_l | x)} \right) \right]LDPO(πθ;πref)=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
变量解释:
- xxx:输入的提示词(Prompt)。
- ywy_wyw:人类偏好的回答(Winning response)。
- yly_lyl:人类拒绝的回答(Losing response)。
- πθ\pi_\thetaπθ:正在训练的策略模型(我们要优化的模型)。
- πref\pi_{ref}πref:参考模型(通常是 SFT 后的模型,参数冻结)。
- β\betaβ:一个超参数,控制对参考模型的偏离程度(类似于 RLHF 中的 KL 散度约束权重)。β\betaβ 越大,模型越保守。
- σ\sigmaσ:Sigmoid 函数,将数值映射到 (0,1)(0, 1)(0,1) 区间。
3. 如何理解这个公式?
我们可以把公式拆解为两部分来看:
-
对数比值的差值 (Log-ratio difference):
(logπθ(yw∣x)πref(yw∣x)−logπθ(yl∣x)πref(yl∣x))\left( \log \frac{\pi_\theta(y_w | x)}{\pi_{ref}(y_w | x)} - \log \frac{\pi_\theta(y_l | x)}{\pi_{ref}(y_l | x)} \right)(logπref(yw∣x)πθ(yw∣x)−logπref(yl∣x)πθ(yl∣x))- 前半部分表示:当前模型相对于原始模型,在多大程度上提高了 选出好答案 (ywy_wyw) 的概率。
- 后半部分表示:当前模型相对于原始模型,在多大程度上提高了 选出坏答案 (yly_lyl) 的概率。
- 两者的差值: 衡量了模型区分"好"与"坏"的能力。
-
梯度的动力学:
- 当模型把 ywy_wyw 的概率提升得比 yly_lyl 更多时,括号内的值变大。
- 由于前面有负号和 logσ\log \sigmalogσ,最小化这个损失函数会迫使模型最大化这个差值。
- 结果: 模型会学习在输入 xxx 时,尽可能提高 ywy_wyw 的生成概率,同时压低 yly_lyl 的生成概率。
4. DPO 的优势与局限
优点
- 简单高效: 只需要像普通微调(SFT)一样训练一个模型,不需要训练奖励模型,也不需要采样生成。
- 性能强劲: 在许多基准测试中,DPO 的效果达到甚至超过了 PPO。
- 稳定性: 移除了强化学习中不稳定的因素,训练过程非常平滑。
局限
- 对数据质量敏感: DPO 极度依赖于 (yw,yl)(y_w, y_l)(yw,yl) 这种对偶数据的质量。
- 泛化能力: 有研究指出,DPO 在未见过的分布上可能不如 PPO 健壮,因为它更像是在做"分类"而非真正的"探索"。
- 容易过拟合: 如果 β\betaβ 设置不当,模型可能会为了迎合偏好数据而损失掉基本的语言表达能力。
总结
DPO 的出现将大模型的对齐从一个"强化学习问题"转化为了一个"有监督的分类问题"。它用极其简洁的数学手段实现了复杂的对齐目标,是目前工业界处理模型偏好学习的首选方案之一。