揭秘 DPO:Direct Preference Optimization 的工作原理 – wiki基地


揭秘 DPO:Direct Preference Optimization 的工作原理

引言:大型语言模型(LLM)的挑战与对齐的需求

近年来,以 GPT、BERT 等为代表的大型语言模型(LLM)在自然语言处理领域取得了举世瞩目的成就。它们通过在海量文本数据上进行预训练,展现出了强大的语言理解、生成和知识记忆能力。然而,仅仅基于文本数据的训练并不能完全保证模型生成的内容符合人类的价值观、偏好和安全标准。模型可能会生成不准确、有偏见、有害甚至危险的内容。

为了解决这个问题,让模型更好地“理解”和遵循人类的指令与偏好,研究人员提出了“模型对齐”(Model Alignment)的概念。对齐的目标是让模型的输出与人类的期望保持一致,使其更加有用、诚实和无害。

在模型对齐的技术路线中,人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF)是过去最为主流且成功的方法之一,比如 ChatGPT 就大量使用了 RLHF。RLHF 通过收集人类对模型输出的偏好数据,训练一个奖励模型(Reward Model, RM),然后利用这个奖励模型作为环境的反馈信号,使用强化学习算法(如 PPO, Proximal Policy Optimization)来微调语言模型(策略模型),使其最大化预期的奖励。

RLHF 取得了显著效果,但其过程复杂且不稳定。它通常涉及三个阶段:
1. 监督微调 (Supervised Fine-Tuning, SFT):在高质量的指令-响应对数据上微调预训练模型,使其能够遵循指令。
2. 奖励模型训练 (Reward Model Training):收集大量的模型输出对,让人类标记哪一个更好,然后训练一个分类器或回归模型来预测人类偏好,即奖励分数。
3. 强化学习微调 (RL Fine-Tuning):使用奖励模型作为强化学习环境的一部分,通过 PPO 等算法训练 SFT 模型,使其生成的响应获得更高的奖励。

这个多阶段的流程存在一些固有的挑战:
* 需要单独训练和维护一个奖励模型。奖励模型的质量直接影响最终策略模型的性能。
* 强化学习阶段(特别是 PPO)训练过程复杂,对超参数敏感,稳定性较差,容易陷入局部最优。
* RL 训练需要从策略中采样大量数据,计算效率较低。
* 奖励模型和策略模型之间的交互有时难以调优。

这些挑战促使研究人员探索更简单、更稳定、更高效的对齐方法。正是在这样的背景下,直接偏好优化(Direct Preference Optimization, DPO)方法应运而生。

DPO 的核心思想:直接优化策略

DPO 由 Stanford 大学的研究人员于 2023 年提出,其核心思想是绕过显式地训练奖励模型,而是直接利用人类的偏好数据来优化语言模型(策略模型)。DPO 将偏好学习问题转化为一个简单的二分类问题(或者更准确地说,一个基于对数概率比率的回归或分类问题),可以直接通过反向传播优化策略模型的参数。

与 RLHF 的间接优化(通过奖励模型)不同,DPO 实现的是直接优化。它基于一个关键的观察:在某些假设下(例如,偏好遵循 Bradley-Terry 模型或其变种),一个响应相对于另一个响应被偏好的概率,与它们各自在最优策略下被生成的对数概率之差存在直接的数学关系。换句话说,如果模型能够以更高的概率生成人类偏好的响应,并以更低的概率生成人类不偏好的响应,那么模型就能够捕捉到人类的偏好。DPO 就是利用这种关系,构造了一个损失函数,使得优化这个损失函数等价于最大化人类偏好的似然。

DPO 的数学原理揭秘

理解 DPO 的工作原理需要深入其数学基础。DPO 的理论推导建立在强化学习和偏好学习的一些基本概念之上。

  1. 奖励函数与最优策略的关系

在强化学习中,存在一个最优策略 $\pi^$,它能够最大化累积奖励。对于一个给定的状态(在语言模型中通常是 prompt x),生成某个响应 y 的概率 $\pi^(y|x)$ 与该响应的奖励 $R(x, y)$ 之间存在一定的关系。在最大熵强化学习的框架下,最优策略与奖励函数满足以下关系:
$$ \pi^(y|x) \propto \exp(\frac{1}{\beta} R(x, y)) $$
或者等价地:
$$ \log \pi^
(y|x) = \frac{1}{\beta} R(x, y) + C(x) $$
其中 $\beta$ 是一个正的标量,控制策略的随机性(类似于温度参数),$C(x)$ 是一个仅依赖于 prompt x 的归一化常数。这个公式表明,一个响应的对数概率与其奖励是线性相关的(忽略掉一个常数项和缩放因子 $\beta$)。

这个关系非常重要,它告诉我们,如果知道最优策略 $\pi^$,我们就可以反推出潜在的奖励函数 $R$(或者其相对值)。反之,如果知道奖励函数,就可以知道最优策略应该如何行动。RLHF 采取的是后者,先估计 $R$,再优化 $\pi$ 去适应 $R$。DPO 采取的是前者,它认为直接优化策略 $\pi$ 去拟合人类的偏好数据,就等价于让策略去适应一个符合人类偏好的隐式奖励函数*。

  1. 偏好数据与奖励函数的关系 (Bradley-Terry 模型)

DPO 使用的数据形式是成对比较的偏好数据:给定一个 prompt x,模型生成了两个响应 y1y2,人类反馈表明 y_w 是优选 (winner),y_l 是劣选 (loser)。这种偏好数据通常用概率模型来描述,最常用的是 Bradley-Terry 模型或其扩展。

Bradley-Terry 模型假设,一个响应 y1 被偏好于 y2 的概率,取决于它们各自潜在的“效用”或“奖励”。具体来说,给定 prompt xy_w 被偏好于 y_l 的概率可以表示为:
$$ P(y_w \succ y_l | x, R) = \frac{\exp(\frac{1}{\beta} R(x, y_w))}{\exp(\frac{1}{\beta} R(x, y_w)) + \exp(\frac{1}{\beta} R(x, y_l))} = \sigma(\frac{1}{\beta} (R(x, y_w) – R(x, y_l))) $$
其中 $R(x, y)$ 是响应 y 在 prompt x 下的奖励,$\beta$ 是一个正的标量,$\sigma$ 是 Sigmoid 函数。

  1. 将偏好概率与策略对数概率关联起来

现在,DPO 将上面两个关系结合起来。如果一个策略 $\pi$ 是“最优的”,即它符合人类的偏好,那么它生成的响应的对数概率应该与人类偏好所隐含的奖励函数 $R$ 成正比。将第一个关系式代入第二个关系式中的 $R(x, y)$,我们得到:
$$ P(y_w \succ y_l | x, \pi) = \sigma(\frac{1}{\beta} (\beta \log \pi(y_w|x) – \beta \log \pi(y_l|x) + C(x) – C(x))) = \sigma(\log \pi(y_w|x) – \log \pi(y_l|x)) $$
这里我们假设策略 $\pi$ 就是最优策略 $\pi^$,且常数项 $C(x)$ 在做差时抵消。这个公式至关重要,它建立了人类偏好概率策略生成响应的对数概率之差*之间的直接联系。它表明,最大化人类偏好的概率 $P(y_w \succ y_l | x, \pi)$ 等价于最大化策略在偏好对上生成的对数概率之差 $\log \pi(y_w|x) – \log \pi(y_l|x)$。

  1. 引入参考模型与 DPO 目标函数

然而,仅仅最大化 $\log \pi(y_w|x) – \log \pi(y_l|x)$ 是不够的。这就像 RLHF 中的 PPO 算法,需要加入一个 KL 散度惩罚项来防止策略 $\pi$ 偏离初始的监督微调 (SFT) 模型 $\pi_{ref}$ 太远。这个 KL 散度惩罚项在 RLHF 中用于保持策略的探索性和防止策略崩溃,在 DPO 中则对应于一个隐式的正则化。

在最大熵 RL 框架下,从参考策略 $\pi_{ref}$ 开始学习的最优策略 $\pi^*$ 应该最大化:
$$ \mathbb{E}{(x, y) \sim D} [R(x, y)] – \beta \cdot D{KL}(\pi || \pi_{ref}) $$
其中 $D$ 是数据分布,$D_{KL}$ 是 KL 散度。这个目标函数可以被重新排列和转化。关键在于,可以通过一个巧妙的数学推导,将最大化人类偏好似然的问题转化为优化以下形式的损失函数:
$$ L_{DPO}(\pi) = – \mathbb{E}{(x, y_w, y_l) \sim D{pref}} [\log \sigma(\beta \log \frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} – \beta \log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)})] $$
其中 $D_{pref}$ 是人类偏好数据集,$\pi$ 是当前需要优化的策略模型,$\pi_{ref}$ 是参考策略模型(通常是未进行 DPO 训练前的 SFT 模型),$\beta$ 是一个超参数,控制对齐的强度以及与参考模型的偏离程度。

我们来仔细分析这个损失函数。$\log \frac{\pi(y|x)}{\pi_{ref}(y|x)}$ 这一项可以理解为在当前策略下生成响应 y 相对于参考策略的对数似然比。它隐式地反映了当前策略给 y 赋予的相对“奖励”:如果这个比值大,说明当前策略更倾向于生成 y;如果小,则不那么倾向。

DPO 损失函数内部的项是 $\beta \log \frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} – \beta \log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)}$,这是优选响应 y_w 和劣选响应 y_l 的对数似然比差异,乘以 $\beta$。可以将其看作当前策略赋予 y_wy_l 的相对“隐式奖励”的差异。

整个损失函数 $-\log \sigma(\Delta_{隐式奖励})$ 是一个标准的二元交叉熵损失形式,其中 $\Delta_{隐式奖励} = \beta \log \frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} – \beta \log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)}$。最小化这个损失函数,相当于最大化 $\sigma(\Delta_{隐式奖励})$,也就是最大化 $\Delta_{隐式奖励}$。这意味着 DPO 训练会直接优化策略 $\pi$,使得它赋予优选响应 y_w 相对于参考模型更高的对数概率比率,同时赋予劣选响应 y_l 相对于参考模型更低的对数概率比率。

这个损失函数可以直接通过标准的反向传播算法计算梯度,并更新策略模型 $\pi$ 的参数。注意,训练过程中 $\pi_{ref}$ 是固定不变的,只有 $\pi$ 的参数在更新。

DPO 的实际操作流程

DPO 的实际应用流程比 RLHF 简单得多:

  1. 数据准备:收集人类偏好数据集,格式为 (prompt x, 优选响应 y_w, 劣选响应 y_l)。这些数据可以通过让人类对模型生成的多个响应进行两两比较来获得。
  2. 模型初始化:使用一个已经进行过监督微调 (SFT) 的语言模型作为初始策略模型 $\pi$ 和参考策略模型 $\pi_{ref}$。在训练过程中,$\pi_{ref}$ 的参数将被冻结。
  3. DPO 训练
    • 从偏好数据集中批量采样 (x, y_w, y_l) 对。
    • 使用当前的策略模型 $\pi$,计算在 prompt x 下生成 y_wy_l 的对数概率:$\log \pi(y_w|x)$ 和 $\log \pi(y_l|x)$。
    • 使用固定的参考策略模型 $\pi_{ref}$,计算在 prompt x 下生成 y_wy_l 的对数概率:$\log \pi_{ref}(y_w|x)$ 和 $\log \pi_{ref}(y_l|x)$。
    • 计算优选和劣选响应的对数概率比率差异:$\log \frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} – \log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)}$。
    • 计算 DPO 损失:$L_{DPO} = -\log \sigma(\beta \left( \log \frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} – \log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)} \right))$。
    • 计算损失相对于策略模型 $\pi$ 参数的梯度,并使用优化器(如 AdamW)更新 $\pi$ 的参数。
  4. 迭代:重复步骤 3,直到模型收敛或达到预设的训练轮次。

整个过程只需要一个模型(策略模型)和一份数据(偏好数据),训练目标函数形式简单,梯度计算直接,避免了奖励模型的训练以及复杂的强化学习算法。

DPO 相较于 RLHF 的优势

DPO 方法的出现为模型对齐带来了显著的改进,主要体现在以下几个方面:

  1. 简化训练流程:DPO 将模型对齐从三阶段(SFT -> RM -> RL)简化为两阶段(SFT -> DPO),去除了奖励模型的单独训练环节。
  2. 提高训练稳定性:DPO 训练是一个基于交叉熵损失的标准最大似然优化过程,相比于强化学习(特别是基于 On-policy 算法如 PPO)的训练更加稳定,对超参数不那么敏感,收敛性更好。RL 训练中常见的策略塌缩、梯度爆炸等问题在 DPO 中较少出现。
  3. 提升计算效率:DPO 训练无需在每一步与环境交互采样,只需要计算给定文本序列的对数概率,这可以通过神经网络的前向传播高效完成。相比之下,RLHF 中的 PPO 需要采样大量数据并进行重要性采样校正,计算开销更大。
  4. 直接优化策略:DPO 直接根据人类偏好对策略进行优化,目标明确。而 RLHF 依赖于奖励模型对人类偏好的准确建模,如果奖励模型有偏差,会直接影响最终策略的性能。
  5. 性能匹敌甚至超越 RLHF:研究表明,在许多对齐任务上,DPO 不仅训练更容易,其最终获得的模型性能也能匹敌甚至超越经过精心调优的 RLHF 模型。

DPO 的局限性与未来方向

尽管 DPO 带来了诸多优势,它也并非完美无缺:

  1. 依赖高质量偏好数据:DPO 的效果高度依赖于人类提供的偏好数据的数量和质量。偏好数据收集依然是耗时且昂贵的。
  2. 理论假设:DPO 的理论推导基于一些假设,例如偏好遵循 Bradley-Terry 模型。如果实际的偏好模式与这些假设偏离较大,DPO 的效果可能会受到影响。
  3. 超参数调优:虽然比 PPO 简单,但 DPO 仍然有一些重要的超参数需要调优,其中 $\beta$ 参数尤其关键,它平衡了对齐强度与对参考模型的约束。
  4. 适用范围:DPO 主要针对能够通过成对比较表达的人类偏好进行优化。对于一些需要复杂探索、规划或从稀疏奖励中学习的任务,RLHF 或其他 RL 方法可能仍然是必要的。

未来的研究方向可能包括:
* 探索更有效率或低成本的偏好数据收集方法,包括利用弱监督信号或合成数据。
* 放宽对偏好模型的假设,使 DPO 能够适应更复杂的偏好模式。
* 结合 DPO 的优点与 RLHF 的优势,例如将 DPO 用于奖励模型的训练或作为 RL 的一个辅助目标。
* 研究 DPO 的变种,例如 IPO (Identity Policy Optimization) 等,进一步改进稳定性和性能。

总结

DPO(Direct Preference Optimization)是大型语言模型对齐领域的一项重要进展。它提供了一种相比传统 RLHF 更简单、更稳定、更高效的替代方案。通过巧妙地利用人类偏好数据与策略生成概率之间的数学关系,DPO 绕过了奖励模型的训练,直接优化语言模型,使其生成更符合人类偏好的文本。

DPO 的核心在于其创新的损失函数,该函数将偏好学习转化为一个可以直接通过梯度下降优化的目标,最大化优选响应相对于劣选响应的对数概率比率,同时保持与参考模型的接近。

尽管存在对数据依赖和理论假设等局限性,DPO 及其后续变种(如 IPO)无疑是当前 LLM 对齐技术的主流方向之一,并为构建更安全、更有用、更符合人类价值观的 AI 系统开辟了新的道路。随着技术的不断发展,我们可以期待 DPO 或其衍生的方法在未来的大型语言模型中扮演越来越重要的角色。


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部