直接偏好优化(DPO)
总结
RLHF 的训练流程复杂而且不稳定;首先我们训练一个奖励模型以反应人类偏好,然后利用强化学习微调语言模型来最大化估计奖励,在过程中约束微调的模型不可以偏离原始模型太多。
本文介绍了一个可用于 RLHF 的参数化隐式奖励模型,让我们可以仅用自监督方法解决标准 RLHF 问题。


DPO 优化人类偏好,同时不需要使用强化学习。相比与 PPO, DPO 直接优化最能满足偏好的策略,使用简单的分类目标,拟合一个隐式奖励模型,其相应的最优策略可以以封闭形式提取。DPO 的性能与现有的 RLHF 算法相似或更好,而且有效降低了从人类偏好中训练更多语言模型的障碍;与标准的 RL 设置不同, DPO 确定了语言模型策略和奖励函数之间的映射,这使得可以使用简单的 binary cross-entropy loss 直接训练语言模型以满足人类的偏好,而无需使用强化学习。
1. 摘要
尽管大规模非监督语言模型(LMs)学习了广泛的世界知识和一些推理技能,但由于其训练的完全非监督性质,精确控制它们的行为很困难。现有方法通过收集人类对模型生成内容的相对质量标签,并通过人类反馈的强化学习(RLHF)来微调非监督 LM,使其与这些偏好对齐。然而, RLHF 是一个复杂且经常不稳定的过程,首先拟合一个反映人类偏好的奖励模型,然后使用强化学习微调大型非监督 LM 以最大化这个估计的奖励,同时不会偏离原始模型太远。在本文中,我们引入了 RLHF 中奖励模型的新参数化,它能够以封闭形式提取相应的最优策略,允许我们仅使用简单的分类损失解决标准 RLHF 问题。我们提出的算法,称为直接偏好优化(DPO),稳定、高效且计算成本低,消除了在微调期间从 LM 采样或执行大量超参数调整的需要。我们的实验表明, DPO 可以与现有方法一样好或更好地微调 LM 以符合人类偏好。值得注意的是,使用 DPO 进行微调在控制生成内容的情感方面超过了基于 PPO 的 RLHF,并且在摘要和单轮对话中的响应质量方面匹配或提高了,同时实现起来更简单,训练也更简便。
1.1 引言
在非常大的数据集上训练的大型非监督语言模型(LMs)获得了惊人的能力[11, 7, 40, 8]。然而,这些模型是在人类生成的数据上训练的,人类有着广泛的目标、优先级和技能集。这些目标和技能集中的某些可能并不适合模仿;例如,我们可能希望我们的 AI 编码助手理解常见的编程错误以便纠正它们,然而,在生成代码时,我们希望我们的模型偏向于其训练数据中存在的(可能是罕见的)高质量编码能力。同样,我们可能希望我们的语言模型意识到 50% 的人相信的常见误解,但我们当然不希望模型在查询它的 50% 的情况下声称这个误解是真的!换句话说,从模型非常广泛的知识和能力中选择模型的期望响应和行为对于构建安全、高效和可控的 AI 系统至关重要[26]。虽然现有方法通常使用强化学习(RL)来引导 LMs 与人类偏好对齐,但我们将展示 RL 基础目标可以使用简单的二元交叉熵目标精确优化,从而大大简化偏好学习流程。
在高层次上,现有方法使用代表人类认为安全和有帮助的行为类型的策划人类偏好集,将期望的行为灌输到语言模型中。这种偏好学习阶段发生在对大型文本数据集进行大规模非监督预训练的初始阶段之后。虽然偏好学习的最直接的方法是在人类展示的高质量响应上进行监督微调,但最成功的方法是使用人类(或 AI)反馈的强化学习(RLHF/RLAIF;[12, 2])。RLHF 方法拟合一个奖励模型到人类偏好的数据集上,然后使用 RL 来优化语言模型策略,以产生分配高奖励的响应,而不会过度偏离原始模型。虽然 RLHF 产生了具有令人印象深刻的对话和编码能力的模型,但 RLHF 流程比监督学习要复杂得多,涉及训练多个 LLMs 并在训练循环中从 LM 策略中采样,导致显著的计算成本。
在本文中,我们将展示如何直接优化语言模型以遵守人类偏好,而无需显式奖励建模或强化学习。我们提出了直接偏好优化(DPO),这是一种算法,它隐式地优化与现有 RLHF 算法相同的目标(奖励最大化和 KL 散度约束),但实现简单,训练直接。直观地说, DPO 更新增加了首选响应相对于非首选响应的相对对数概率,但它包含了一个动态的、每个示例的重要性权重,可以防止我们发现使用简单概率比率目标时发生的模型退化。与现有算法一样, DPO 依赖于一个理论偏好模型(如 Bradley-Terry 模型;[5]),该模型衡量给定奖励函数与经验偏好数据的对齐程度。然而,虽然现有方法使用偏好模型来定义偏好损失以训练奖励模型,然后训练一个策略来优化学习到的奖励模型,但 DPO 使用变量变化直接将偏好损失定义为策略的函数。因此,给定一个人类对模型响应的偏好数据集, DPO 可以使用简单的二元交叉熵目标优化策略,为偏好数据拟合一个隐式奖励函数的最优策略。
我们的主要贡献是直接偏好优化(DPO),这是一种简单的无 RL 算法,用于根据偏好训练语言模型。我们的实验表明, DPO 至少与现有方法一样有效,包括基于 PPO 的 RLHF,用于在情感调节、摘要和对话等任务中从偏好中学习,使用的语言模型参数高达 6B。
2. 相关工作
自监督语言模型的规模不断增加,它们学习完成一些任务,无论是零样本[31]还是少样本提示[6, 25, 11]。然而,通过在指令和人类编写的完成内容的数据集上进行微调,它们在下游任务上的表现和与用户意图的一致性可以显著提高[23, 36, 13, 39]。这种“指令调整”过程使大型语言模型(LLMs)能够推广到指令调整集之外的指令,并普遍提高了它们的可用性[13]。尽管指令调整取得了成功,但相对于专家演示,人类对响应质量的判断更容易收集,因此后续工作使用人类偏好的数据集对 LLMs 进行了微调,提高了翻译[18]、摘要[38, 49]、讲故事[49]和指令遵循[26, 32]的熟练程度。这些方法首先优化一个神经网络奖励函数,以与偏好数据集兼容,然后在偏好模型(如 Bradley-Terry 模型[5])下使用强化学习算法(通常是 REINFORCE[45]、近端策略优化(PPO;[37])或变种[32])来微调语言模型,以最大化给定的奖励。与人类反馈的指令遵循的 LLMs 的微调相关的方法,使用人类反馈生成具有目标属性(如安全性或无害性)的额外合成偏好数据[2],仅使用人类对 LLM 注释的文本规范形式的弱监督。这些方法代表了两组工作的融合:一组是使用强化学习训练语言模型以实现各种目标的工作[33, 27, 46],另一组是学习人类偏好的通用方法[12, 19]。尽管使用相对人类偏好具有吸引力,但使用强化学习对大型语言模型进行微调仍然是一个主要的实际挑战;这项工作提供了一种理论上合理的方法,无需 RL 即可优化相对偏好。
在语言环境之外,从偏好中学习策略已在乐队和强化学习设置中进行了研究,并提出了几种方法。使用偏好或行动排名而非奖励的上下文乐队学习被称为上下文对弈乐队(CDB;[48, 14])。在没有绝对奖励的情况下, CDB 的理论分析用冯·诺依曼胜者(von Neumann winner)替换了最优策略的概念,即预期胜率至少为 50% 的策略[14]。然而,在 CDB 设置中,偏好标签是在线给出的,而在从人类偏好中学习时,我们通常从固定的一批离线偏好注释的动作对中学习[47]。类似地,基于偏好的强化学习(PbRL)从由未知的“评分”函数生成的二元偏好中学习,而不是奖励[9, 35]。存在多种 PbRL 算法,包括可以重用离线偏好数据的方法,但通常涉及首先明确估计潜在的评分函数(即奖励模型),然后优化它[16, 9, 12, 34, 19]。我们提出了一种单阶段策略学习方法,直接优化策略以满足偏好。
3. 预备知识
我们回顾了 Ziegler 等人(以及后来的[38, 1, 26])中描述的 RLHF 流程。它通常包括三个阶段: 1)监督微调(SFT); 2)偏好采样和奖励学习; 3) RL 优化。
3.1 SFT:
RLHF 通常以对感兴趣下游任务(对话、摘要等)的高质量数据进行监督学习来微调预训练的 LM 开始,以获得模型
3.2 奖励建模阶段:
在第二阶段,使用提示
假设偏好是由某些潜在的奖励模型
假设我们可以访问来自
其中
3.3 RL 微调阶段:
在 RL 阶段,我们使用学习到的奖励函数为语言模型提供反馈。具体来说,我们构建了以下优化问题:
其中
4. 直接偏好优化 (Direct Preference Optimization)
在大规模问题上应用强化学习算法,如微调语言模型,面临挑战。我们的目标是派生一种简单的方法,直接使用偏好进行策略优化。与以往的 RLHF 方法不同,这些方法首先学习奖励模型,然后通过强化学习优化,我们的方法利用奖励模型的特定参数化,使我们能够在没有强化学习训练循环的情况下,以封闭形式提取其最优策略。我们的关键洞察是利用从奖励函数到最优策略的分析映射,这使我们能够将奖励函数上的损失函数转换为策略上的损失函数。这种变量替换方法避免了拟合一个显式的独立奖励模型,同时仍然在现有的人类偏好模型(如 Bradley-Terry 模型)下进行优化。本质上,策略网络代表了语言模型和(隐式的)奖励模型。
4.1 推导 DPO 目标
我们从与之前工作相同的 RL 目标开始,即在一般奖励函数
其中
我们可以将这个重新参数化应用于真实奖励
推导见附录 A.2。虽然方程(6)使用了 Bradley-Terry 模型,我们也可以在更一般的 Plackett-Luce 模型[30, 21]下推导出类似的表达式,如附录 A.3 所示。
现在我们已经用最优策略而非奖励模型来表示人类偏好数据的概率,我们可以为参数化策略
这样,我们使用替代参数化来拟合一个隐式奖励,其最优策略简单地是
4.2 DPO 更新的作用是什么?
为了深入理解 DPO,分析损失函数
其中
当
直观上,损失函数
重要的是,示例根据隐式奖励模型
4.3 DPO 概述
一般 DPO 流程如下:
- 对于每个提示
,从参考模型 中采样完成 ,用人类偏好标注以构建离线偏好数据集 。 - 优化语言模型
以最小化给定 和 以及期望的 的 。
在实践中,人们希望重用公开可用的偏好数据集,而不是生成样本和收集人类偏好。由于偏好数据集是使用
5. DPO 的理论分析
在本节中,我们进一步解释 DPO 方法,提供理论支持,并将 DPO 的优势与用于 RLHF 的标准 Actor-Critic 算法(如 PPO)的问题联系起来。
5.1 语言模型实际上是一个奖励模型
DPO 能够通过单一的最大似然目标来学习策略,而无需拟合显式奖励和执行 RL。注意优化目标方程(5)等同于具有奖励参数化的 Bradley-Terry 模型,其中
定义 1. 两个奖励函数
很容易看出这确实是一个等价关系,它将奖励函数的集合划分为类别。我们可以陈述以下两个引理:
引理 1. 在 Plackett-Luce 偏好框架下,来自同一类别的两个奖励函数会诱导相同的偏好分布。
引理 2. 来自同一等价类的两个奖励函数在受约束的 RL 问题下诱导相同的最优策略。
证明是直接的,我们将其推迟到附录 A.5。第一个引理是与 Plackett-Luce 模型家族相关的一个众所周知的欠规范问题。由于这种欠规范,我们通常必须施加额外的可识别性约束,以实现方程(2)中 MLE 估计的任何保证。第二个引理表明,来自同一类别的所有奖励函数产生相同的最优策略,因此对于我们的最终目标,我们只对从最优类别中恢复任意奖励函数感兴趣。我们在附录 A.6 中证明了以下定理:
定理 1. 在温和的假设下,所有与 Plackett-Luce (特别是 Bradley-Terry)模型一致的奖励类别都可以使用重新参数化
证明概要。考虑任何奖励函数
操作符
我们可以将定理 1 视为指定了 DPO 重新参数化在每个等价类中选择的确切奖励函数,即满足:
的奖励函数,使用定理 1 重新参数化。也就是说,
5.2 不稳定性的 Actor-Critic 算法
我们还可以使用我们的框架来诊断 RLHF 中使用的标准 Actor-Critic 算法(如 PPO)的不稳定性。我们遵循 RLHF 流程并专注于第 3 节中概述的 RL 微调步骤。我们可以将受约束的 RL 问题与控制作为推断框架[20]联系起来。我们假设一个参数化模型
这是之前的作品[49, 38, 1, 26]使用 DPO 等价奖励对奖励类别优化的相同目标。在这个设置中,我们可以将
6. 实验
实验聚焦在两个面向:
- DPO 如何有效的去权衡,最大化奖励和最小化
和 的 KL 散度 - 评估 DPO 在更大模型和更困难的 RLHF 任务,包括总结和对话。
我们发现在几乎不调整超参数的状况下, DPO 的表现等同或超过基线(PPO-based RLHF)。
6.1 可控情绪生成

- DPO: 论文方法。
- Unlikelihood: 简单的最大化
和最小化 的概似。 - PPO: 使用奖励函数去学习偏好资料。
- PPO-GT: 使用真实答案(ground truth) 的奖励函数(仅在可空情绪生成可取得)去学习。
- Preferred-FT: 在
上进行监督式学习的微调。
输入是 IMDb 资料集中的电影评论,策略必须产生正面情绪的回应。为了控制评估,我们针对这个实验用预训练的情绪分类器产生了偏好对
6.2 摘要生成

- PPO: 使用奖励函数去学习偏好资料。
- SFT: 使用资料集的资料进行自监督微调。
- Preferred-FT: 使用来自 SFT 模型偏好的
进行自监督微调。 - GPT-J: Zero-shot prompting。
- Best of N: 从 SFT 模型中取样 N 个反应,并根据从偏好资料集中学习到的奖励函数传回得分最高的反应。
使用 GPT-4 作为裁判,与人类撰写总结进行 1v1 对战,结果显示 DPO 的表现最佳,并且在较高的温度(sampling temperature)下也保持较佳的表现。
6.3 单轮对话
在单轮对话中,我们在Anthropic HH 数据集的测试集子集上评估不同的方法。

- Preferred-FT: 使用来自通用语言模型偏好的
进行自监督微调。 - Best of N: 从 Preferred-FT 模型中取样 N 个反应,并根据从偏好资料集中学习到的奖励函数传回得分最高的反应。
- Pythia-2.8B: 2-shot prompting。
DPO 是唯一能在 Anthropic HH 测试集中高效率计算并且改进偏好生成的方法。
总结
DPO 的性能与现有的 RLHF 算法相似或更好,而且有效降低了从人类偏好中训练更多语言模型的障碍;与标准的 RL 设置不同, DPO 确定了语言模型策略和奖励函数之间的映射,这使得可以使用简单的 binary cross-entropy loss 直接训练语言模型以满足人类的偏好,而无需使用强化学习。
7. 附录 A:数学推导
在这部分附录中,我们将提供 DPO 目标的详细数学推导。
7.1 A.1 推导 KL 约束奖励最大化目标的最优解
在这部分附录中,我们将推导方程(4)。类似于方程(3),我们优化以下目标:
在任何奖励函数
其中我们有划分函数:
注意划分函数仅是
这是一个有效的概率分布,因为对于所有
现在,由于
对于所有
7.2 A.2 在 Bradley-Terry 模型下推导 DPO 目标
在 Bradley-Terry 偏好模型下推导 DPO 目标是直接的,我们有
在第 4 节中,我们展示了我们可以将(不可用的)真实奖励通过其相应的最优策略表示:
将方程(17)代入方程(16)我们得到:
最后一行是方程(7)中的每个实例损失。
7.3 A.3 在 Plackett-Luce 模型下推导 DPO 目标
Plackett-Luce 模型[30, 21]是对 Bradley-Terry 模型的一个概括,它适用于排名(而不仅仅是成对比较)。与 Bradley-Terry 模型类似, Plackett-Luce 模型规定,当面对一组可能的选择时,人们倾向于选择那些与其潜在奖励函数值成比例的选项。在我们的情境中,当面对提示
注意,当
类似于第 4 节的方法,如果我们可以获得一组提示和用户指定的排名的数据集
这样,我们就可以利用 Plackett-Luce 模型来表达人类偏好数据的概率,并且以最大似然估计来优化参数化策略
7.4 A.4 推导 DPO 目标的梯度
在本节中,我们推导 DPO 目标的梯度:
我们可以将方程右边重写为:
其中
使用 Sigmoid 函数的性质
使用奖励替换
7.5 A.5 证明引理 1 和 2
在本节中,我们将证明第 5 节中的两个引理。
引理 1 重述. 在 Plackett-Luce 偏好框架下,特别是 Bradley-Terry 框架下,来自同一等价类的两个奖励函数会诱导相同的偏好分布。
证明. 我们说两个奖励函数
这完成了证明。
引理 2 重述. 来自同一等价类的两个奖励函数在受约束的 RL 问题下诱导相同的最优策略。
证明. 让我们考虑来自同一类别的两个奖励函数,使得
这完成了证明。
7.6 A.6 证明定理 1
在本节中,我们将扩展定理 1 的结果。
定理 1 重述. 假设我们有一个参考模型,使得
证明. 考虑任何奖励函数
其中
我们有:
这完成了证明。
我们可以进一步扩展这些结果。我们可以看到,如果
其中第二个等式遵循引理 2。我们已经证明了操作符
命题 1. 假设我们有一个参考模型,使得
证明. 我们使用反证法进行。假设我们有来自同一类别的两个奖励函数,使得
对于所有的提示
我们已经展示了每个奖励类别都有一个唯一的奖励函数,可以按照定理 1 中概述的那样表示,该函数由
8. 附录 B. DPO 实现细节和超参数
DPO 相对容易实现;下面提供了 DPO 损失的 PyTorch 代码示例:
import torch.nn.functional as F
def dpo_loss(pi_logps, ref_logps, yw_idxs, yl_idxs, beta):
"""pi_logps: 策略的对数概率,形状为 (B,)
ref_logps: 参考模型的对数概率,形状为 (B,)
yw_idxs: 首选完成的索引,在 [0, B-1] 中,形状为 (T,)
yl_idxs: 非首选完成的索引,在 [0, B-1] 中,形状为 (T,)
beta: 控制KL惩罚强度的温度参数
每对 (yw_idxs[i], yl_idxs[i]) 代表单个偏好对的索引。
"""
pi_yw_logps, pi_yl_logps = pi_logps[yw_idxs], pi_logps[yl_idxs]
ref_yw_logps, ref_yl_logps = ref_logps[yw_idxs], ref_logps[yl_idxs]
pi_logratios = pi_yw_logps - pi_yl_logps
ref_logratios = ref_yw_logps - ref_yl_logps
losses = -F.logsigmoid(beta * (pi_logratios - ref_logratios))
rewards = beta * (pi_logps - ref_logps).detach()
return losses, rewards除非另有说明,我们通常使用