Direct Preference Optimization (DPO) 让开发者无需训练单独的奖励模型或运行强化学习 (RL) 循环即可微调大语言模型,从而大幅降低了计算成本以及传统人类反馈强化学习 (RLHF) 流水线中常见的稳定性问题。

为什么人类反馈强化学习 (RLHF) 显得沉重

标准的人类反馈强化学习 (RLHF) 流程包含三个阶段。首先,在精选的数据集上对基础模型进行微调。接着,训练一个奖励模型来预测成对输出之间的人类偏好。最后,从业者运行近端策略优化 (PPO) —— 一种经典的 RL 算法 —— 以在保持接近原始模型的同时,推动策略向更高的预测奖励靠拢。

这种“三模型”设置需要同时占用大量内存,并强制执行昂贵的 RL 循环,在每次更新时都需要采样新文本。团队经常会发现策略学会了“钻奖励模型的空子”(game the reward),生成的输出在代理指标上得分很高,但却无法达到预期的质量。其结果是导致流水线成本高昂、脆弱且难以扩展。

DPO 的代数捷径

DPO 完全跳过了奖励模型。其核心观察在于,RLHF 的目标(在惩罚与参考模型偏差的同时最大化预期奖励)具有闭式解(closed-form expression)。通过重新排列数学公式,任何 token 的奖励都变成了策略分配的对数概率与参考模型分配的对数概率之间的差值。

在实践中,这意味着“奖励”本身就存在于策略之中。训练简化为针对偏好对的单一分类损失:给定一个被选中的回答和一个被拒绝的回答,模型会被引导为给选中的文本分配更高的概率。无需采样,无需 PPO 更新,也不需要额外的模型存储。

新的损失函数是什么样的

该损失函数通过一个类似温度的超参数 β 进行缩放,比较当前策略下偏好答案的对数概率与参考模型下该概率的差异。较高的 β 会迫使策略保持在参考模型附近,从而保留流畅性和安全性;较低的 β 则允许策略漂移得更远,从而强化其对选中答案的偏好。

对开发者而言至关重要的优势

  • 无需奖励模型 – 消除了为单独的预测器收集额外人类反馈的需求。
  • 训练期间无需采样 – 模型无需生成新文本来计算梯度,从而大幅缩短 GPU 使用时间。
  • 稳定性 – 使用标准的二元交叉熵损失取代了经常导致模型发散的高方差 RL 梯度。
  • 高效性 – 对每个偏好对进行单次梯度步进即可;训练收敛所需的 epoch 远少于 PPO。

早期实验表明,DPO 在基准偏好数据集上的表现可以媲美甚至超越 PPO,而消耗的计算预算仅为后者的一小部分。这种成本优势解释了为什么许多开源项目已经采用 DPO 或其变体作为默认的对齐方法。

权衡之处

DPO 基于一组固定的偏好对进行工作。由于它在训练期间从不采样新的补全内容,因此无法探索原始数据中不存在的答案空间。相比之下,在线运行的 PPO 可以通过不断探测模型来发现新颖的、具有更高奖励的行为。

如果 β 设置得过低,或者训练步数过多,策略可能会偏离参考模型过远,从而导致流畅度下降或引入不理想的伪影(artefacts)。

总结

直接偏好优化 (DPO) 用单一、稳定的损失函数取代了包含三个模型且重度依赖 RL 的 RLHF 技术栈,该损失函数直接从人类偏好对中学习。其结果是为语言模型对齐提供了一条更便宜、更可预测的路径——前提是训练数据能够捕捉到你所需的行为,并且你能控制好漂移参数。