学习笔记 大模型 论文笔记 微调 【论文笔记】Direct Preference Optimization: Your Language Model is Secretly a Reward Model 小嗷犬 2025-01-05 2025-02-09 基本信息 标题 : Direct Preference Optimization: Your Language Model is Secretly a Reward Model作者 : Rafael Rafailov, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D. Manning, Chelsea Finn发表 : NeurIPS 2024arXiv : https://arxiv.org/abs/2305.18290
摘要 尽管大规模无监督语言模型(LM)能够学习广泛的世界知识和一些推理技能,但由于其训练过程完全无监督,因此精确控制其行为是困难的。
现有的获取此类可控性的方法收集人类对模型生成相对质量的标签,并微调无监督LM以符合这些偏好,通常采用基于人类反馈的强化学习(RLHF)。
然而,RLHF是一个复杂且往往不稳定的程序,首先拟合一个反映人类偏好的奖励模型,然后使用强化学习对大型无监督LM进行微调,以最大化这个估计的奖励,同时不偏离原始模型太远。
在本文中,我们引入了RLHF中奖励模型的新参数化方法,这使得我们可以以闭式形式提取相应的最优策略,从而仅使用简单的分类损失解决标准的RLHF问题。
我们称之为直接偏好优化(DPO )的算法是稳定的、性能良好的,并且计算量轻,消除了在微调期间从LM中采样或进行重大超参数调整的需求。
我们的实验表明,DPO可以将LM微调以与人类偏好相一致,甚至比现有方法更好。
值得注意的是,使用DPO的微调在控制生成文本的情感方面超过了基于PPO的RLHF,在摘要和单轮对话中匹配或提高了响应质量,同时实现和训练过程大大简化。
简介
DPO在避免强化学习的同时优化人类偏好 。现有的方法在人类反馈下微调语言模型时,首先将奖励模型拟合到提示和人类偏好对响应的语料库中,然后使用强化学习找到最大化学习奖励的策略。相比之下,DPO直接优化满足偏好的最佳策略,以简单的分类目标为依据,拟合一个隐式奖励模型,其对应的最佳策略可以以封闭形式提取。
预备知识 我们回顾RLHF Pipeline。它通常包括三个阶段:
监督微调(SFT); 偏好采样和奖励学习; RL优化。 SFT RLHF 通常从使用监督学习在高质量数据上对预训练的语言模型进行微调开始,这些数据用于感兴趣的下游任务(对话、摘要等),以获得一个模型π SFT \pi^{\text{SFT}} π SFT 。
Reward Modelling Phase 在第二阶段,SFT 模型被提示输入x x x 以生成答案对( y 1 , y 2 ) ∼ π SFT ( y ∣ x ) (y_1, y_2) \sim \pi^{\text{SFT}}(y \mid x) ( y 1 , y 2 ) ∼ π SFT ( y ∣ x ) 。然后将这些答案对呈现给人类标注者,他们表达对某个答案的偏好,表示为y w ≻ y l ∣ x y_w \succ y_l \mid x y w ≻ y l ∣ x ,其中y w y_w y w 和y l y_l y l 分别表示在( y 1 , y 2 ) (y_1, y_2) ( y 1 , y 2 ) 中首选和非首选的完成。假设这些偏好是由某个潜在的奖励模型r ∗ ( y , x ) r^*(y, x) r ∗ ( y , x ) 生成的,但我们无法访问该模型。有许多方法用于建模偏好,Bradley-Terry (BT) 模型是一个流行的选择(尽管更通用的 Plackett-Luce 排名模型在我们可以访问多个排序答案的情况下也与该框架兼容)。BT 模型规定人类偏好分布p ∗ p^* p ∗ 可以写成:
p ∗ ( y 1 ≻ y 2 ∣ x ) = exp ( r ∗ ( x , y 1 ) ) exp ( r ∗ ( x , y 1 ) ) + exp ( r ∗ ( x , y 2 ) ) p^*(y_1 \succ y_2 \mid x) = \frac{\exp{(r^*(x, y_1))}}{\exp{(r^*(x, y_1))} + \exp{(r^*(x, y_2))}} p ∗ ( y 1 ≻ y 2 ∣ x ) = exp ( r ∗ ( x , y 1 )) + exp ( r ∗ ( x , y 2 )) exp ( r ∗ ( x , y 1 )) 假设可以访问从p ∗ p^* p ∗ 中采样的静态比较数据集D = { x ( i ) , y w ( i ) , y l ( i ) } ∗ i = 1 N \mathcal{D} = \left\{x^{(i)}, y_w^{(i)}, y_l^{(i)}\right\}*{i=1}^N D = { x ( i ) , y w ( i ) , y l ( i ) } ∗ i = 1 N ,我们可以参数化一个奖励模型r ∗ ϕ ( x , y ) r*\phi(x, y) r ∗ ϕ ( x , y ) ,并通过最大似然估计参数。将问题表述为二分类问题,我们有负对数似然损失:
L ∗ R ( r ∗ ϕ , D ) = − E ∗ ( x , y w , y l ) ∼ D [ log σ ( r ∗ ϕ ( x , y w ) − r ϕ ( x , y l ) ) ] \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))] L ∗ R ( r ∗ ϕ , D ) = − E ∗ ( x , y w , y l ) ∼ D [ log σ ( r ∗ ϕ ( x , y w ) − r ϕ ( x , y l ))] 其中σ \sigma σ 是逻辑函数。在LMs的上下文中,网络r ϕ ( x , y ) r_\phi(x, y) r ϕ ( x , y ) 通常从SFT模型π SFT ( y ∣ x ) \pi^{\text{SFT}}(y \mid x) π SFT ( y ∣ x ) 初始化,并在最终的 Transformer 层之上添加一个线性层,产生单个标量预测作为奖励值。为了确保具有较低方差的奖励函数,先前的工作对奖励进行归一化,使得对所有x x x 有E ∗ x , y ∼ D [ r ∗ ϕ ( x , y ) ] = 0 \mathbb{E}*{x, y \sim \mathcal{D}}[r*\phi(x, y)] = 0 E ∗ x , y ∼ D [ r ∗ ϕ ( x , y )] = 0 。
RL Fine-Tuning Phase 在 RL 阶段,学习到的奖励函数用于为语言模型提供反馈。遵循先前的工作,优化被公式化为:
max π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D KL [ π θ ( y ∣ x ) ∥ π ref ( y ∣ x ) ] \max_{\pi_\theta} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta(y|x)} \left[ r_\phi(x, y) \right] - \beta \mathbb{D}_{\text{KL}} \left[ \pi_\theta(y \mid x) \parallel \pi_{\text{ref}}(y \mid x) \right] π θ max E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ϕ ( x , y ) ] − β D KL [ π θ ( y ∣ x ) ∥ π ref ( y ∣ x ) ] 其中β \beta β 是一个控制与基础参考策略π ref \pi_{\text{ref}} π ref 偏离程度的参数,即初始 SFT 模型π SFT \pi^{\text{SFT}} π SFT 。在实践中,语言模型策略π θ \pi_\theta π θ 也初始化为π SFT \pi^{\text{SFT}} π SFT 。附加的约束条件很重要,因为它防止模型偏离奖励模型准确的分布太远,同时保持生成的多样性并防止模式塌陷到单一高奖励答案。由于语言生成的离散性质,该目标是非可微的,并且通常使用强化学习进行优化。标准方法是构建奖励函数r ( x , y ) = r ϕ ( x , y ) − β ( log π θ ( y ∣ x ) − log π ref ( y ∣ x ) ) r(x, y) = r_\phi(x, y) - \beta (\log \pi_\theta(y \mid x) - \log \pi_{\text{ref}}(y \mid x)) r ( x , y ) = r ϕ ( x , y ) − β ( log π θ ( y ∣ x ) − log π ref ( y ∣ x )) ,并使用 PPO 最大化。
Direct Preference Optimization 受到将强化学习算法应用于大规模问题(如微调语言模型)的挑战的启发,我们的目标是推导出一种直接使用偏好进行策略优化的简单方法。与先前的 RLHF 方法不同,这些方法首先学习奖励函数,然后通过 RL 对其进行优化,我们的方法利用了一种特定的奖励模型参数化选择,这使得可以在不经过 RL 训练循环的情况下以闭合形式提取其最优策略。正如我们接下来将详细描述的那样,我们的关键见解是利用从奖励函数到最优策略的解析映射,这使我们能够将奖励函数上的损失函数转换为策略上的损失函数。这种变量变换的方法避免了拟合一个显式的、独立的奖励模型,同时仍然在现有的人类偏好模型(如 Bradley-Terry 模型)下进行优化。本质上,策略网络代表了语言模型和(隐含的)奖励。
Deriving the DPO objective 我们从与先前工作相同的 RL 目标开始,在一般奖励函数r r r 下。遵循先前的工作,可以直观地展示 KL 约束下的奖励最大化目标的最优解具有以下形式:
π r ( y ∣ x ) = 1 Z ( x ) π ref ( y ∣ x ) exp ( 1 β r ( x , y ) ) \pi_r(y \mid x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y \mid x) \exp \left( \frac{1}{\beta} r(x, y) \right) π r ( y ∣ x ) = Z ( x ) 1 π ref ( y ∣ x ) exp ( β 1 r ( x , y ) ) 其中Z ( x ) = ∑ y π ref ( y ∣ x ) exp ( 1 β r ( x , y ) ) Z(x) = \sum_y \pi_{\text{ref}}(y \mid x) \exp \left( \frac{1}{\beta} r(x, y) \right) Z ( x ) = ∑ y π ref ( y ∣ x ) exp ( β 1 r ( x , y ) ) 是分区函数。即使我们使用 MLE 估计r ϕ r_\phi r ϕ 来估计真实奖励函数r ∗ r^* r ∗ ,估计分区函数Z ( x ) Z(x) Z ( x ) 仍然是昂贵的,这使得这种表示在实践中难以利用。然而,我们可以重新排列π r ( y ∣ x ) \pi_r(y \mid x) π r ( y ∣ x ) 公式,以用相应的最优策略π r \pi_r π r ,参考策略π ref \pi_{\text{ref}} π ref 和未知的分区函数Z ( ⋅ ) Z(\cdot) Z ( ⋅ ) 表示奖励函数。具体来说,我们首先对π r ( y ∣ x ) \pi_r(y \mid x) π r ( y ∣ x ) 公式的两边取对数,然后通过一些代数运算得到:
r ( x , y ) = β log π r ( y ∣ x ) π ref ( y ∣ x ) + β log Z ( x ) r(x, y) = \beta \log \frac{\pi_r(y \mid x)}{\pi_{\text{ref}}(y \mid x)} + \beta \log Z(x) r ( x , y ) = β log π ref ( y ∣ x ) π r ( y ∣ x ) + β log Z ( x ) 我们可以将这种重新参数化应用于真实奖励r ∗ r^* r ∗ 和相应的最优模型π ∗ \pi^* π ∗ 。幸运的是,Bradley-Terry 模型仅依赖于两个完成之间的奖励差异,即p ∗ ( y 1 ≻ y 2 ∣ x ) = σ ( r ∗ ( x , y 1 ) − r ∗ ( x , y 2 ) ) p^*(y_1 \succ y_2 \mid x) = \sigma(r^*(x, y_1) - r^*(x, y_2)) p ∗ ( y 1 ≻ y 2 ∣ x ) = σ ( r ∗ ( x , y 1 ) − r ∗ ( x , y 2 )) 。将r ∗ ( x , y ) r^*(x, y) r ∗ ( x , y ) 代入偏好模型公式p ∗ ( y 1 ≻ y 2 ∣ x ) = exp ( r ∗ ( x , y 1 ) ) exp ( r ∗ ( x , y 1 ) ) + exp ( r ∗ ( x , y 2 ) ) p^*(y_1 \succ y_2 \mid x) = \frac{\exp{(r^*(x, y_1))}}{\exp{(r^*(x, y_1))} + \exp{(r^*(x, y_2))}} p ∗ ( y 1 ≻ y 2 ∣ x ) = e x p ( r ∗ ( x , y 1 )) + e x p ( r ∗ ( x , y 2 )) e x p ( r ∗ ( x , y 1 )) 中,分区函数被消去,我们可以仅用最优策略π ∗ \pi^* π ∗ 和参考策略π ref \pi_{\text{ref}} π ref 表达人类偏好概率。因此,在 Bradley-Terry 模型下,最优 RLHF 策略π ∗ \pi^* π ∗ 满足偏好模型:
p ∗ ( y 1 ≻ y 2 ∣ x ) = 1 1 + exp ( β log π ∗ ( y 2 ∣ x ) π ref ( y 2 ∣ x ) − β log π ∗ ( y 1 ∣ x ) π ref ( y 1 ∣ x ) ) p^*(y_1 \succ y_2 \mid x) = \frac{1}{1 + \exp \left( \beta \log \frac{\pi^*(y_2 \mid x)}{\pi_{\text{ref}}(y_2 \mid x)} - \beta \log \frac{\pi^*(y_1 \mid x)}{\pi_{\text{ref}}(y_1 \mid x)} \right)} p ∗ ( y 1 ≻ y 2 ∣ x ) = 1 + exp ( β log π ref ( y 2 ∣ x ) π ∗ ( y 2 ∣ x ) − β log π ref ( y 1 ∣ x ) π ∗ ( y 1 ∣ x ) ) 1 现在我们有了以最优策略而非奖励模型表示的人类偏好数据的概率,我们可以为参数化策略π θ \pi_\theta π θ 制定最大似然目标。类似于奖励建模方法(即L ∗ R ( r ∗ ϕ , D ) \mathcal{L}*R(r*\phi, \mathcal{D}) L ∗ R ( r ∗ ϕ , D ) 公式),我们的策略目标变为:
L ∗ DPO ( π ∗ θ ; π ref ) = − E ∗ ( x , y w , y l ) ∼ D [ log σ ( β log π ∗ θ ( y w ∣ x ) π ref ( y w ∣ x ) − β log π θ ( y l ∣ x ) π ref ( y l ∣ x ) ) ] \mathcal{L}*{\text{DPO}}(\pi*\theta; \pi_{\text{ref}}) = -\mathbb{E}*{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \sigma \left( \beta \log \frac{\pi*\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log \frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)} \right) \right] L ∗ DPO ( π ∗ θ ; π ref ) = − E ∗ ( x , y w , y l ) ∼ D [ log σ ( β log π ref ( y w ∣ x ) π ∗ θ ( y w ∣ x ) − β log π ref ( y l ∣ x ) π θ ( y l ∣ x ) ) ] 通过这种方式,我们使用一种替代的参数化来拟合隐式奖励,其最优策略仅仅是π θ \pi_\theta π θ 。此外,由于我们的过程等价于拟合一个重新参数化的 Bradley-Terry 模型,因此它在偏好数据分布的适当假设下具有一些理论性质,例如一致性。
What does the DPO update do? 为了对 DPO 有一个机制性的理解,分析损失函数L DPO \mathcal{L}_{\text{DPO}} L DPO 的梯度是有用的。关于参数θ \theta θ 的梯度可以写为:
∇ θ L DPO ( π θ ; π ref ) = − β E ( x , y w , y l ) ∼ D [ σ ( r ^ θ ( x , y l ) − r ^ θ ( x , y w ) ) ⏟ higher weight when reward estimate is wrong ( ∇ θ log π ( y w ∣ x ) ⏟ increase likelihood of y w − ∇ θ log π ( y l ∣ x ) ⏟ decrease likelihood of y l ) ] \nabla_{\theta} \mathcal{L}_{\text{DPO}}(\pi_{\theta}; \pi_{\text{ref}}) = - \beta \mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} \left[ \underbrace{\sigma(\hat{r}_{\theta}(x, y_l) - \hat{r}_{\theta}(x, y_w))}_{\text{higher weight when reward estimate is wrong}}\left(\underbrace{\nabla_{\theta} \log \pi(y_w \mid x)}_{\text{increase likelihood of } y_w}-\underbrace{\nabla_{\theta} \log \pi(y_l \mid x)}_{\text{decrease likelihood of } y_l}\right)\right] ∇ θ L DPO ( π θ ; π ref ) = − β E ( x , y w , y l ) ∼ D higher weight when reward estimate is wrong σ ( r ^ θ ( x , y l ) − r ^ θ ( x , y w )) increase likelihood of y w ∇ θ log π ( y w ∣ x ) − decrease likelihood of y l ∇ θ log π ( y l ∣ x ) 其中r ^ θ ( x , y ) = β log π θ ( y ∣ x ) π ref ( y ∣ x ) \hat{r}_{\theta}(x, y) = \beta \log \frac{\pi_{\theta}(y \mid x)}{\pi_{\text{ref}}(y \mid x)} r ^ θ ( x , y ) = β log π ref ( y ∣ x ) π θ ( y ∣ x ) 是由语言模型π θ \pi_{\theta} π θ 和参考模型π ref \pi_{\text{ref}} π ref 隐式定义的奖励。直观上,损失函数L DPO \mathcal{L}_{\text{DPO}} L DPO 的梯度增加了首选完成y w y_w y w 的可能性,并减少了不首选完成y l y_l y l 的可能性。重要的是,示例的权重取决于隐式奖励模型r ^ θ \hat{r}_{\theta} r ^ θ 对不首选完成的评分有多高,乘以β \beta β ,即隐式奖励模型对完成排序的错误程度,考虑了 KL 约束的强度。我们的实验表明这种加权的重要性,因为没有加权系数的该方法的朴素版本可能会导致语言模型退化。
DPO outline 通用的 DPO Pipeline 如下:
对于每个提示x x x ,采样完成y 1 , y 2 ∼ π ref ( ⋅ ∣ x ) y_1, y_2 \sim \pi_{\text{ref}}(\cdot \mid x) y 1 , y 2 ∼ π ref ( ⋅ ∣ x ) ,并使用人类偏好进行标记,以构建离线偏好数据集D = { ( x ( i ) , y w ( i ) , y l ( i ) ) } i = 1 N \mathcal{D} = \{(x^{(i)}, y_w^{(i)}, y_l^{(i)})\}_{i=1}^N D = {( x ( i ) , y w ( i ) , y l ( i ) ) } i = 1 N ; 优化语言模型π θ \pi_\theta π θ 以最小化给定π ref \pi_{\text{ref}} π ref 和D \mathcal{D} D 以及期望的β \beta β 下的损失函数L DPO \mathcal{L}_{\text{DPO}} L DPO 。 在实践中,人们希望重用公开可用的偏好数据集,而不是生成样本和收集人类偏好。
由于偏好数据集是使用π SFT \pi^{\text{SFT}} π SFT 采样的,因此每当可用时,我们初始化π ref = π SFT \pi_{\text{ref}} = \pi^{\text{SFT}} π ref = π SFT 。
然而,当π SFT \pi^{\text{SFT}} π SFT 不可用时,我们通过最大化首选完成( x , y w ) (x, y_w) ( x , y w ) 的可能性来初始化π ref \pi_{\text{ref}} π ref ,即π ref = arg max π E x , y w ∼ D [ log π ( y w ∣ x ) ] \pi_{\text{ref}} = \arg\max_\pi \mathbb{E}_{x, y_w \sim \mathcal{D}} [\log \pi(y_w \mid x)] π ref = arg max π E x , y w ∼ D [ log π ( y w ∣ x )] 。
此过程有助于缓解真实参考分布(不可用)与DPO使用的π ref \pi_{\text{ref}} π ref 之间的分布偏移。
实验
讨论 从偏好中学习是一种强大且可扩展的训练有能力的、对齐的语言模型的框架。我们引入了DPO,这是一种简单的训练范式,用于从偏好中训练语言模型,而不使用强化学习。DPO不是将偏好学习问题强制纳入标准的强化学习设置,以便使用现成的强化学习算法,而是识别了语言模型策略与奖励函数之间的映射,这使得可以直接通过简单的交叉熵损失训练语言模型以满足人类偏好,无需强化学习或泛化损失。几乎无需调整超参数,DPO的表现与现有的RLHF算法相似或更好,包括基于PPO的算法;因此,DPO显著降低了从人类偏好中训练更多语言模型的门槛。
局限性与未来工作 我们的结果提出了几个对未来工作具有重要意义的问题。与从显式奖励函数中学习相比,DPO策略如何泛化到分布之外?我们的初步结果表明,DPO策略可以像基于PPO的模型一样进行泛化,但还需要更深入的研究。例如,使用DPO策略进行自标注训练是否可以同样有效地利用未标记提示?在另一个方面,直接偏好优化设置中的奖励过度优化如何体现,图3右边的性能略有下降是否就是这种情况?此外,虽然我们评估了参数量高达60亿的模型,但探索将DPO扩展到数量级更大的最先进模型是一个令人兴奋的未来研究方向。关于评估,我们发现GPT-4计算出的胜率受到提示的影响;未来的工作可能研究从自动化系统中获取高质量判断的最佳方法。最后,DPO在从人类偏好训练语言模型之外还有许多可能的应用,包括在其他模态中训练生成模型。