Direct Preference Optimization: Your Language Model is Secretly a Reward Model翻译

大规模无监督语言模型难精确控制,现有人类反馈强化学习(RLHF)方法复杂且不稳定。本文引入Direct Preference Optimization(DPO),它是稳定、高性能且计算轻量的方法,能微调语言模型以符合人类偏好,比现有方法更好,简化了实现和训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

虽然大规模无监督语言模型(LM)学习广泛的世界知识和一些推理技能,但由于其训练的完全无监督性质,实现对其行为进行精确控制是困难的。获得这种可操纵性的现有方法是收集对模型生成质量进行人工标注的数据,并微调无监督的 LM 以符合他们的偏好,通常通过人类反馈进行强化学习(RLHF)。然而,RLHF 是一个复杂且通常不稳定的过程,首先需要拟合能够反映人类偏好的奖赏模型,然后使用强化学习对大型无监督 LM 进行微调,以最大化估计的奖赏,且不能偏离原始模型太远。在本文中,我们引入了 RLHF 奖赏模型的新参数化方法,它能够以封闭形式提取相应的最优策略,使我们能够仅用简单的分类损失来解决标准 RLHF 问题。由此产生的算法,我们称之为Direct Preference Optimization (DPO),这是一种稳定、高性能且计算轻量化的方法,消除了在微调或执行重要的超参数调整期间从 LM 进行采样的需要。我们的实验表明,DPO 可以微调 LM 以符合人类偏好,并且比现有方法更好。值得注意的是,使用 DPO 进行微调在控制生成情感的能力方面超过了基于 PPO 的 RLHF,并且匹配或提高了摘要和单轮对话中的响应质量,同时大大简化了实现和训练。

1.介绍

在这里插入图片描述
  在非常大的数据集上训练的大型无监督语言模型(LM)获得了令人惊讶的能力。然而,这些模型是根据人类生成的数据进行训练的,这些数据具有各种目标、优先级和技能。其中一些目标和技能可能不适合模仿;例如,虽然我们可能希望人工智能编码助手即了解常见的编程错误以便纠正它们,同时,在生成代码时,我们希望将我们的模型偏向于其训练中存在的(可能罕见的)高质量编码能力数据。同样,我们可能希望我们的语言模型能够意识到 50% 的人相信的常见误解,但我们当然不希望模型在 50% 的问题中声称这种误解是正确的!换句话说,从广泛的知识和能力中选择模型所需的响应和行为对于构建安全、高性能和可控的人工智能系统至关重要。 虽然现有方法通常使用强化学习 (RL) 来引导 LM 匹配人类偏好,但我们将证明现有方法使用的基于 RL 的目标可以通过简单的二进制交叉熵目标进行精确优化,从而极大地简化偏好学习流程。
  在较高层面上,现有方法使用精选的人类偏好数据集将所需的行为蒸馏到语言模型中,这些偏好数据集代表了人类认为安全和有帮助的行为类型。这个偏好学习阶段发生在对大型文本数据集进行大规模无监督预训练的初始阶段之后。 虽然偏好学习最直接的方法是对人类高质量响应样例进行有监督微调,但最成功的一类方法是根据人类(或AI)反馈进行强化学习(RLHF/RLAIF)。RLHF 方法将奖赏模型与人类偏好数据集相匹配,然后使用 RL 来优化语言模型策略,以生成具有高奖赏的响应,同时又不会偏离原始模型太远。虽然 RLHF 生成的模型具有令人印象深刻的会话和编码能力,但 RLHF pipeline比又监督学习复杂得多,涉及训练多个 LM 并在训练循环中从 LM 策略中采样,从而产生大量计算成本。
  在本文中,我们展示了如何直接优化语言模型以遵循人类偏好,而无需明确的奖赏建模或强化学习。我们提出了Direct Preference Optimization(DPO),这是一种隐式优化与现有 RLHF 算法具有相同目标的算法(带有 KL 散度约束的奖赏最大化),但易于实现且易于训练。直观上,DPO 更新增加了偏好响应与非偏好响应的相对对数概率,但它包含了动态的、分样例的重要性加权,可以防止我们发现的在简单概率比目标下发生的模型退化。与现有算法一样,DPO 依赖于理论偏好模型(例如 Bradley-Terry 模型),该模型衡量给定奖赏函数与经验偏好数据的匹配程度。然而,虽然现有方法使用偏好模型来定义偏好损失来训练奖赏模型,然后训练优化学习奖赏模型的策略,但 DPO 使用变量的变化将偏好损失直接定义为策略的函数。给定人类对模型响应的偏好数据集,DPO 可以使用简单的二进制交叉熵目标来优化策略,从而生成适合偏好数据的隐式奖赏函数的最优策略。
  我们的主要贡献是Direct Preference Optimization(DPO),这是一种简单的无强化学习算法,用于根据偏好训练语言模型。我们的实验表明,DPO 至少与现有方法(包括基于 PPO 的 RLHF)一样有效,可以使最大 6B 参数的语言模型从情绪调节、摘要和对话等任务的偏好中进行学习。

2.相关工作

规模不断扩大的自监督语言模型可以学习zero-shot或few-shot提示来完成某些任务。然而,通过对指令数据集和人工标注的数据进行微调,可以显着提高它们在下游任务上的性能以及与用户意图的一致性。这种“指令微调”过程使LLM能够泛化到指令微调数据集之外的指令,并普遍提高其可用性。尽管指令微调取得了成功,但人类对响应质量的对比判断通常比专家样例更容易收集,因此后续工作利用人类偏好的数据集对LLM进行了微调,这提高了在翻译、总结、讲故事和指令遵循上的效果。这些方法首先优化神经网络奖赏函数,以便与偏好模型(例如 Bradley-Terry 模型)下的偏好数据集兼容,然后使用强化学习算法(通常是 REINFORCE、近端策略或变体)微调语言模型以最大化给定奖赏。密切相关的工作利用LLM根据人类反馈进行微调,以针对特定目标属性(例如安全性或无害性)生成额外的合成偏好数据,仅使用来自人类文本标题形式进行的弱监督来进行LLM的标注。这些方法代表了两项工作的融合:一项工作是针对各种目标通过强化学习来训练语言模型,另一项工作是根据人类偏好进行学习的一般方法。尽管使用相对人类偏好很有吸引力,但通过强化学习对大型语言模型进行微调仍然是一个重大的实际挑战。这项工作提供了一种理论上合理的方法,可以在没有强化学习的情况下优化相对偏好。
  除了NLP之外,在bandit学习和强化学习环境中都对基于偏好的学习策略进行了研究,并提出了几种方法。使用偏好或动作排名而不是奖赏情况下的bandit学习被称为contextual dueling bandit(CDB)。在缺乏绝对奖赏的情况下,CDB 的理论分析用冯诺依曼获胜者替代了最优策略的概念,该策略相对于任何其他策略的预期获胜率至少为 50%。然而,在 CDB 设置中,偏好标签是在线给出的,而在从人类偏好中学习时,我们通常从固定批次的离线标注的偏好动作对中学习。类似地,基于偏好的强化学习(PbRL)从未知的“评分”函数而不是奖赏函数生成的二元偏好中学习。PbRL 存在各种算法,包括可以重用非策略偏好数据的方法,但通常涉及首先显式估计潜在评分函数(即奖赏模型),然后对其进行优化。相反,我们提出了一种单阶段策略学习方法,可以直接优化策略以满足偏好。

3.Preliminaries

我们回顾了 Ziegler et al. 的 RLHF pipeline。 它通常包括三个阶段:1)有监督微调(SFT); 2) 偏好采样和奖赏学习,以及3) 强化学习优化。
  SFT。RLHF 通常首先通过对感兴趣的下游任务(对话、摘要等)的高质量数据进行有监督学习来微调预训练的 LM,以获得模型 πSFTπ^{SFT}πSFT
  Reward Modelling Phase。在第二阶段,SFT 模型4通过提示 xxx 生成答案对 (y1,y2)∼πSFT(y∣x)(y_1, y_2) ∼ π^{SFT}(y|x)(y1,y2)πSFT(yx)。然后将它们展示给人类标注者,他们表达对其中一个答案的偏好,表示为 yw≻yl∣xy_w ≻ y_l|xywylx,其中 ywy_wywyly_lyl 分别表示 (y1,y2)(y_1, y_2)(y1,y2) 中偏好和非偏好的答案。假设偏好是由一些我们无法访问的潜在奖赏模型 r∗(y,x)r^*(y, x)r(y,x) 生成的。有多种方法可用于对偏好进行建模,其中 Bradley-Terry (BT) 模型是一种流行的选择(如果我们可以访问多个排名答案,则更通用的 Plackett-Luce 排名模型也与该框架兼容)。BT模型规定人类偏好分布p∗p^*p可以写为:
p∗(y1≻y2∣x)=exp(r∗(x,y1))exp(r∗(x,y1))+exp(r∗(x,y2)).(1)p^*(y_1≻y_2|x)=\frac{exp(r^*(x,y_1))}{exp(r^*(x,y_1))+exp(r^*(x,y_2))}.\tag{1}p(y1y2x)=exp(r(x,y1))+exp(r(x,y2))exp(r(x,y1)).(1)
  假设可以访问从 p∗p^*p 采样的静态比较数据集 D={x(i),yw(i),yl(i)}i=1N\mathcal D=\{x^{(i)}, y^{(i)}_w , y^{(i)}_l\}^N_{i=1}D={x(i),yw(i),yl(i)}i=1N,我们可以参数化奖赏模型 rϕ(x,y)r_{\phi}(x, y)rϕ(x,y) 并通过最大似然估计参数。将问题构建为二元分类,我们得到负对数似然损失:
LR(rϕ,D)=−E(x,yw,yl)∼D[log σ(rϕ(x,yw)−rϕ(x,yl))](2)\mathcal L_R(r_{\phi},\mathcal D)=-\mathbb E_{(x,y_w,y_l)\sim\mathcal D}[log~\sigma(r_{\phi}(x,y_w)-r_{\phi}(x,y_l))]\tag{2}LR(rϕ,D)=E(x,yw,yl)D[log σ(rϕ(x,yw)rϕ(x,yl))](2)
其中 σσσ 是sigmoid函数。在 LM 的背景下,网络 rϕ(x,y)r_{\phi}(x, y)rϕ(x,y) 通常根据 SFT 模型 πSFT(y∣x)π^{SFT}(y | x)πSFT(yx) 进行初始化,并在最后一个transformer层之上添加一个线性层,以生成单个标量来预测奖赏。为了确保奖赏函数具有较低的方差,先前的工作对奖赏进行归一化,使得对于所有 xxx 来说 Ex,y∼D[rϕ(x,y)]=0E_{x,y∼\mathcal D} [r_{\phi}(x,y)]=0Ex,yD[rϕ(x,y)]=0
  RL Fine-Tuning Phase。在强化学习阶段,我们使用学习到的奖赏函数向语言模型提供反馈。特别地,我们制定了以下优化问题
maxπθEx∼D,y∼πθ(y∣x)[rϕ(x,y)]−βDKL[πθ(y∣x)∣∣πref(y∣x)](3)\mathop{max}\limits_{\pi_{\theta}}\mathbb E_{x\sim\mathcal D,y\sim\pi_{\theta}(y|x)}[r_{\phi}(x,y)]-\beta\mathbb D_{KL}[\pi_{\theta}(y|x)||\pi_{ref}(y|x)]\tag{3}πθmaxExD,yπθ(yx)[rϕ(x,y)]βDKL[πθ(yx)∣∣πref(yx)](3)
其中βββ是控制与基础参考策略πrefπ_{ref}πref偏差的参数,即初始SFT模型πSFTπ^{SFT}πSFT。在实践中,语言模型策略 πθπ_θπθ 也被初始化为 πSFTπ^{SFT}πSFT。优化目标中附加的约束项很重要,因为它可以防止模型偏离奖赏模型准确的分布太远,并保持生成多样性并防止模式崩溃为单一高奖赏答案。由于语言生成的离散性,该目标是不可微分的,通常通过强化学习进行优化。标准方法是构建奖赏函数 r(x,y)=rϕ(x,y)−β(logπθ(y∣x)−logπref(y∣x))r(x, y) = r_{\phi}(x, y) − β(log π_θ(y | x) − log π_{ref}(y | x))r(x,y)=rϕ(x,y)β(logπθ(yx)logπref(yx)),并使用 PPO 最大化该函数。

4.Direct Preference Optimization

在这里插入图片描述
  受到将强化学习算法应用于微调语言模型等大规模问题挑战的激励,我们的目标是得出一种直接使用偏好进行策略优化的简单方法。与之前学习奖赏然后通过 RL 对其进行优化的 RLHF 方法不同,我们的方法利用奖赏模型参数化的特定选择,能够以封闭形式提取其最优策略,而无需 RL 训练循环。正如我们接下来将详细描述的,我们的关键见解是利用从奖赏函数到最优策略的可分析映射,这使我们能够将奖赏函数的损失函数转换为策略的损失函数。这种变量变化方法避免了拟合明确的、独立的奖赏模型,同时仍然在人类偏好的现有模型(例如 Bradley-Terry 模型)下进行优化。本质上,策略网络代表了语言模型和(隐式)奖赏。
  Deriving the DPO objective。我们从与先前工作相同的 RL 目标 (方程 3)开始,在一般奖赏函数 rrr 下。根据之前的工作,可以很容易地表明方程 3 中 KL 约束奖赏最大化目标的最优解采用以下形式:
πr(y∣x)=1Z(x)πref(y∣x)exp(1βr(x,y)),(4)\pi_r(y|x)=\frac{1}{Z(x)}\pi_{ref}(y|x)exp(\frac{1}{\beta}r(x,y)),\tag{4}πr(yx)=Z(x)1πref(yx)exp(β1r(x,y)),(4)
其中 Z(x)=∑yπref(y∣x)exp(1βr(x,y))Z(x) = \sum_yπ_{ref}(y|x) exp(\frac{1}{β}r(x, y))Z(x)=yπref(yx)exp(β1r(x,y))是配分函数。完整推导请参见附录 A.1。即使我们使用真实奖赏函数 r∗r^*r 的 MLE 估计 rϕr_{\phi}rϕ,估计配分函数 Z(x)Z(x)Z(x) 的成本仍然很高,这使得这种表示在实践中很难使用。然而,我们可以重新排列方程 4,用相应的最优策略 πrπ_rπr、参考策略 πrefπ_{ref}πref 和未知的配分函数 Z(⋅)Z(·)Z() 来表达奖赏函数。具体来说,我们首先对等式4两边取对数,然后通过一些代数我们得到:
r(x,y)=βlogπr(y∣x)πref(y∣x)+βlog Z(x).(5)r(x,y)=\beta log\frac{\pi_r(y|x)}{\pi_{ref}(y|x)}+\beta log~Z(x).\tag{5}r(x,y)=βlogπref(yx)πr(yx)+βlog Z(x).(5)
我们可以将这种重参数化应用于真实奖励 r∗r^*r 和相应的最优模型 π∗π^*π。幸运的是,Bradley-Terry 模型仅取决于两个响应之间的奖赏差异,即 p∗(y1≻y2∣x)=σ(r∗(x,y1)−r∗(x,y2))p^*(y_1 ≻ y_2 | x) = σ(r^*(x, y_1) − r^*(x, y_2))p(y1y2x)=σ(r(x,y1)r(x,y2))。将方程 5 中 r∗(x,y)r^*(x, y)r(x,y) 的重新参数化代入偏好模型方程 1,配分函数取消,我们可以仅用最优策略 π∗π^*π 和参考策略 πrefπ_{ref}πref 来表达人类偏好概率。因此,Bradley-Terry 模型下的最优 RLHF 策略 π∗π^*π 满足偏好模型:
p∗(y1≻y2∣x)=11+exp(βlogπ∗(y2∣x)πref(y2∣x)−βlogπ∗(y1∣x)πref(y1∣x))(6)p^*(y_1≻y_2|x)=\frac{1}{1+exp(\beta log\frac{\pi^*(y_2|x)}{\pi_{ref}(y_2|x)}-\beta log\frac{\pi^*(y_1|x)}{\pi_{ref}(y_1|x)})}\tag{6}p(y1y2x)=1+exp(βlogπref(y2x)π(y2x)βlogπref(y1x)π(y1x))1(6)

推导见附录 A.2。而方程6使用Bradley-Terry模型,我们可以类似地推导更通用的Plackett-Luce模型下的表达式,如附录A.3所示。
  现在我们有了最优策略而不是奖赏模型相关的人类偏好数据的概率,我们可以制定最大似然目标来参数化策略 πθπ_θπθ。与奖赏建模方法(即方程 2)类似,我们的策略目标变为:
LDPO(πθ;πref)=−E(x,yw,yl)∼D[log σ(βlogπθ(yw∣x)πref(yw∣x)−βlogπθ(yl∣x)πref(yl∣x))].(7)\mathcal L_{DPO}(\pi_{\theta};\pi_{ref})=-\mathbb E_{(x,y_w,y_l)\sim\mathcal D}\bigg [log~\sigma(\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)})\bigg ].\tag{7}LDPO(πθ;πref)=E(x,yw,yl)D[log σ(βlogπref(ywx)πθ(ywx)βlogπref(ylx)πθ(ylx))].(7)

这样,我们使用另外一种参数化方式来拟合隐式奖赏,其中最优策略就是πθπ_θπθ。此外,由于我们的过程相当于拟合重参数化的 Bradley-Terry 模型,因此它具有某些理论特性,例如在偏好数据分布的适当假设下的一致性。在第 5 节中,我们进一步讨论 DPO 与其他工作相关的理论特性。
  What does the DPO update do?。为了从原理上理解 DPO,分析损失函数 LDPO\mathcal L_{DPO}LDPO 的梯度很有用。 相对于参数 θθθ 的梯度可以写为:
∇θLDPO(πθ;πref)=−βE(x,yw,yl)∼D[σ(r^θ(x,yl)−r^θ(x,yw))⏟higher weighter when reward estimate is wrong[∇θlog π(yw∣x)⏟increase likelihood of yw−∇θlog π(yl∣x)⏟decrease likelihood of yl]],∇_{\theta}\mathcal L_{DPO}(\pi_{\theta};\pi_{ref})=-\beta\mathbb E_{(x,y_w,y_l)\sim\mathcal D}\bigg [\underbrace{\sigma(\hat r_{\theta}(x,y_l)-\hat r_{\theta}(x,y_w))}_{higher~weighter~when~reward~estimate~is~wrong}\bigg [\underbrace{∇_{\theta}log~\pi(y_w|x)}_{increase~likelihood~of~y_w}-\underbrace{∇_{\theta}log~\pi(y_l|x)}_{decrease~likelihood~of~y_l}\bigg ]\bigg ],θLDPO(πθ;πref)=βE(x,yw,yl)D[higher weighter when reward estimate is wrongσ(r^θ(x,yl)r^θ(x,yw))[increase likelihood of ywθlog π(ywx)decrease likelihood of ylθlog π(ylx)]],
其中 r^θ(x,y)=β logπθ(y∣x)πref(y∣x)\hat r_θ(x, y) = β~log\frac{π_θ(y|x)}{π_{ref}(y|x)}r^θ(x,y)=β logπref(yx)πθ(yx) 是由语言模型 πθπ_θπθ 和参考模型 πrefπ_{ref}πref 隐式定义的奖赏(更多内容请参见第 5 节)。直观上,损失函数 LDPO\mathcal L_{DPO}LDPO 的梯度增加了偏好响应 ywy_wyw 的似然,并降低了非偏好响应 yly_lyl 的似然。重要的是,这些例子的加权是通过隐式奖赏模型 r^θ\hat r_θr^θ 对非偏好响应的评分高出多少来衡量的,并按 βββ 进行缩放,即隐式奖赏模型对响应排序的错误估计程度,考虑到 KL 约束的强度。我们的实验表明了这种加权的重要性,因为没有加权系数的这种方法的简单版本可能会导致语言模型退化(附录表3)。
  DPO outline。一般的 DPO 流程如下: 1)对每个提示 xxx 进行样本补全 y1,y2∼πref(⋅∣x)y_1, y_2 ∼ π_{ref}(· | x)y1,y2πref(x),用人类偏好进行标注,构建偏好的离线数据集 D={x(i),yw(i),yl(i)}i=1N\mathcal D=\{x^{(i)}, y^{(i)}_w, y^{(i)}_l\}^N_{i=1}D={x(i),yw(i),yl(i)}i=1N,2) 优化语言模型 πθπ_θπθ,以最小化给定 πrefπ_{ref}πrefD\mathcal DD 以及 βββLDPO\mathcal L_{DPO}LDPO。在实践中,人们希望可复用公开可用的偏好数据集,而不是生成样本并收集人类偏好。由于偏好数据集是使用 πSFTπ_{SFT}πSFT 进行采样的,因此当可用时,我们初始化 πref=πSFTπ_{ref}=π_{SFT}πref=πSFT。然而,当 πSFTπ_{SFT}πSFT 不可用时,我们通过最大化偏好补全 (x,yw)(x, y_w)(x,yw) 的似然来初始化 πrefπ_{ref}πref,即 πref=argmaxπEx,yw∼D[log π(yw∣x)]π_{ref} = argmax_π \mathbb E_{x,y_w∼\mathcal D} [log~π(y_w | x)]πref=argmaxπEx,ywD[log π(ywx)]。此过程有助于减轻不可用的真实参考分布与 DPO 使用的 πrefπ_{ref}πref 之间的分布偏移。有关实现和超参数的更多详细信息可以在附录 B 中找到。

5.Theoretical Analysis of DPO

5.1 Your Language Model Is Secretly a Reward Model

5.2 Instability of Actor-Critic Algorithms

### Model Preference 的概念 Model preference 在机器学习中指的是对于不同模型的选择偏好,这种偏好的确立基于多个因素,包括但不限于模型性能、复杂度以及解释能力。当面对多种可用模型时,研究者或工程师会依据具体应用场景的需求来决定哪个模型更为合适。 在实际应用中,model preference 不仅涉及评估模型的表现指标(如准确性),还包括考虑计算资源消耗、部署难易程度等因素[^1]。例如,在某些情况下,尽管更复杂的模型能够提供更高的精度,但如果简单模型已经满足业务需求,则后者可能是更好的选择,因为其维护成本更低且更容易理解。 此外,随着数据量的增长,如何有效地从大量数据中提取有价值的信息成为了一项重要挑战。此时,具有更好泛化能力和更强解释性的模型往往会受到青睐,这有助于确保所选模型不仅能在现有数据上表现良好,而且可以对未来未见的数据做出合理的预测[^2]。 为了实现这一目标,可以通过引入概率框架和贝叶斯推理方法来自动生成与给定数据集最为契合的模型结构及其参数设置,并对其背后的工作机制给出清晰说明。这样的过程使得最终选定的模型既具备良好的拟合效果又易于被人类专家解读。 ```python import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression, Ridge, Lasso # 假设 X 是特征矩阵,y 是标签向量 X_train, X_test, y_train, y_test = train_test_split(X, y) models = { 'Linear Regression': LinearRegression(), 'Ridge Regression': Ridge(alpha=1.0), 'Lasso Regression': Lasso(alpha=0.1) } for name, model in models.items(): model.fit(X_train, y_train) score = model.score(X_test, y_test) print(f'{name} R^2 Score on test set: {score:.4f}') ``` 此代码片段展示了三种不同的回归算法:线性回归、岭回归和套索回归之间的比较。通过这种方式可以帮助建立关于哪种类型的模型更适合当前任务的理解,从而形成相应的 model preference
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值