三阶段RLHF流程(SFT -> 奖励模型 -> PPO)是一种常见且有效的大型语言模型对齐方法。然而,此过程包含多个复杂组成部分。训练独立的奖励模型(RM)会带来校准和潜在不准确性方面的问题,而随后的PPO微调需要仔细实施和超参数调整以保持稳定。直接偏好优化(DPO)作为一种有吸引力的替代方案出现,它显著简化了此过程。
DPO重新定义了对齐问题,绕过了显式奖励模型训练和PPO等在线强化学习优化的复杂性。相反,它通过人类偏好与策略更新之间的直接对应关系,直接在偏好数据上优化语言模型。
核心理念:从偏好到策略
回顾RLHF的目标是找到一个能生成人类偏好响应的策略 πθ,通常形式化为最大化从人类反馈中得出的预期奖励信号,同时保持与初始参考策略 πref(通常是SFT模型)接近,以维持能力并避免模式崩溃。这通常表示为:
πθmaxEx∼D,y∼πθ(⋅∣x)[r∗(x,y)]−βDKL(πθ∣∣πref)
在此,r∗(x,y) 表示反映人类偏好的(未知)真实奖励函数,D 是提示的分布,β 是一个控制KL散度惩罚的参数,DKL 衡量优化策略 πθ 和参考策略 πref 之间的差异。
标准方法通过在偏好对 (x,yw,yl) 上训练奖励模型 rϕ(x,y) 来估计 r∗,对于提示 x, yw 优于 yl。这通常使用基于Bradley-Terry模型的损失,假设偏好 yw 优于 yl 的概率与其奖励差成比例:
P(yw≻yl∣x)=σ(r∗(x,yw)−r∗(x,yl))
在此,σ 是S型函数。训练 rϕ 后,PPO被用于以 rϕ 作为奖励信号来优化 πθ。
DPO巧妙地表明,RLHF目标的最佳解可以直接与偏好概率关联。它推导出一个损失函数,允许直接使用偏好数据 (x,yw,yl) 优化 πθ,而无需拟合中间奖励模型 rϕ。
DPO损失函数
DPO的主要成果是其损失函数。通过将KL约束奖励最大化问题的最优解代入Bradley-Terry偏好模型,我们可以纯粹以策略 πθ、参考策略 πref 和偏好数据 D 的形式推导出损失:
LDPO(πθ;πref)=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
我们来拆解这个表达式:
- (x,yw,yl)∼D: 我们从人类偏好数据集中采样一个提示 x、一个偏好的完成 yw 和一个不偏好的完成 yl。
- πθ(y∣x): 在我们当前优化的策略下,给定提示 x 生成完成 y 的概率。
- πref(y∣x): 在固定参考策略(例如SFT模型)下,给定提示 x 生成完成 y 的概率。
- logπref(y∣x)πθ(y∣x): 在优化策略和参考策略下,给定完成的对数概率比。此项隐含地表示奖励。
- β: 温度参数,类似于PPO中的KL系数。它控制优化策略 πθ 允许偏离参考策略 πref 的程度。较高的 β 允许更大的偏离。
- logσ(...): 应用于偏好和不偏好响应的隐含奖励之间缩放差异的逻辑损失。
最小化 LDPO 能有效地促使策略 πθ 为偏好完成 yw 分配更高的相对概率(与 πref 相比),并为不偏好完成 yl 分配更低的相对概率。
隐含奖励建模
尽管DPO避免了训练显式奖励模型,但它仍然基于一个隐含模型运行。损失函数中的项可以被解释为与奖励相关:
r^θ(x,y)=βlogπref(y∣x)πθ(y∣x)
DPO损失旨在根据逻辑损失最大化差异 r^θ(x,yw)−r^θ(x,yl)。本质上,DPO直接优化策略,使其对数概率比(按 β 缩放)与观察到的人类偏好对齐,从而有效地同时学习策略和隐含奖励。
DPO与PPO-RLHF工作流程比较
DPO的主要优点在于与传统的基于PPO的RLHF流程相比,其流程更为简化。
基于PPO的RLHF和DPO工作流程的比较。DPO将奖励建模和策略优化步骤整合为一个阶段。
如图所示:
- PPO-RLHF:需要三个不同阶段:SFT以获得 πref,在偏好数据上训练奖励模型 rϕ,最后,使用PPO以 rϕ 作为奖励信号并结合对 πref 的KL惩罚来优化 πθ。这包括PPO循环中的在线采样、奖励计算、优势估计和策略更新。
- DPO:仅需要两个阶段:SFT以获得 πref,然后使用DPO损失直接微调 πθ,其中将 πref 和偏好数据作为输入。优化过程更接近于标准的监督学习设置(尽管使用了自定义损失函数),并且在训练期间不需要在线采样或优势估计。
实现与考量
实现DPO包括以下步骤:
- 从参考模型 πref(通常是SFT模型)开始。
- 加载偏好数据集 D={(x,yw,yl)}。
- 设置待优化的模型 πθ(从 πref 初始化)。
- 在训练循环中,对于每批偏好三元组:
- 计算对数概率 logπθ(yw∣x) 和 logπθ(yl∣x)。
- 计算对数概率 logπref(yw∣x) 和 logπref(yl∣x)(需要通过冻结的参考模型进行前向传播)。
- 使用这些对数概率和温度 β 计算DPO损失。
- 执行反向传播并更新 πθ 的参数。
像Hugging Face的TRL (DPOTrainer) 这样的库提供了便捷的实现,抽象掉了大量样板代码。
潜在优势:
- 简洁性: 消除了训练、存储和加载独立奖励模型的必要。
- 稳定性: 避免了显式奖励模型与强化学习算法(PPO)之间相互作用可能产生的不稳定。优化过程通常更稳定,也更易于调整。
- 效率: 与PPO相比,计算量可能更小,因为它避免了PPO循环中的采样和奖励计算步骤。
潜在缺点:
- 隐含奖励: 由于没有显式奖励模型可供检查,调试有时会更困难。性能直接取决于偏好数据集的质量和构成。
- 优化动态: 优化行为与PPO不同。超参数调整,特别是对于 β,仍然很重要。
- 数据要求: 像所有基于偏好的方法一样,DPO非常依赖高质量和足够大的偏好数据集。
DPO代表了LLM对齐技术方面的重要进展。通过基于偏好数据直接优化策略,它提供了一种更简单、通常更稳定且可能更高效的替代方案,取代了涉及显式奖励建模和PPO等复杂强化学习算法的传统多阶段RLHF流程。它正迅速成为LLM对齐工具包中的一个标准工具。