What is DPO(直接偏好优化)?

    RLHF的一种更简单替代方案,无需单独的奖励模型或强化学习,直接在人类偏好数据上优化语言模型。

    Definition

    直接偏好优化(DPO)是一种训练算法,通过单次监督学习步骤将语言模型与人类偏好对齐,消除了训练单独奖励模型和运行强化学习的复杂性。DPO由Rafailov等人在2023年提出,将RLHF目标重新表述为偏好对上的分类损失,从数学上证明了最优策略可以直接从偏好数据中提取,无需中间的奖励建模步骤。

    在DPO中,训练数据由三元组组成:一个提示、一个偏好回复(chosen)和一个非偏好回复(rejected)。损失函数增加偏好回复相对于非偏好回复的概率,按照参考模型(起始SFT检查点)已经与偏好一致的程度进行缩放。这种隐式奖励公式意味着DPO在理论上与RLHF同样有效,但在实践中实现起来简单得多,训练也更稳定。

    自推出以来,DPO已成为开源LLM训练中占主导地位的偏好优化方法。它的简单性——无需训练奖励模型、无需调整PPO超参数、无需担心RL训练的不稳定性——使得没有深入RL专业知识的团队也能使用。IPO(身份偏好优化)和KTO(卡尼曼-特沃斯基优化)等变体进一步扩展了设计空间,但标准DPO仍是最广泛使用的方法。

    Why It Matters

    RLHF虽然有效,但实现和调优出了名的困难。它需要训练单独的奖励模型、管理PPO优化的不稳定性,以及仔细平衡奖励最大化与KL惩罚。DPO消除了所有这些复杂性,同时达到了可比的结果,使基于偏好的训练对更广泛的受众可及。

    对于在生产中微调模型的团队来说,DPO的稳定性优势至关重要。RLHF训练经常出现发散或奖励欺骗伪影;DPO训练与标准监督微调一样稳定。这种可预测性减少了失败的训练运行,节省了计算成本,并缩短了从偏好数据收集到模型部署的迭代周期。

    How It Works

    DPO训练从一个监督微调(SFT)模型作为参考策略开始。偏好数据集包含带有配对chosen和rejected回复的提示。在训练过程中,当前模型和冻结的参考模型都为chosen和rejected回复计算对数概率。DPO损失函数是对当前模型和参考模型在chosen与rejected回复之间的对数概率比差异的二元交叉熵损失。

    直觉上,DPO推动模型为chosen回复分配更高的概率,为rejected回复分配更低的概率,但只在参考模型尚未捕获这种偏好的范围内。这种自我参照机制防止模型做出过于激进的更新,维持了训练的稳定性。温度参数(beta)控制模型在优化偏好和保持接近参考策略之间的激进程度。

    Example Use Case

    一家AI初创公司通过让开发者在每个编程任务的两个生成方案之间选择,为代码生成模型收集了5,000个偏好对。使用DPO,他们在2块GPU上进行了一次4小时的训练运行——无需奖励模型,无需RL基础设施。最终模型产生的代码在73%的情况下被开发者偏好于SFT基线,与他们从RLHF中期望的改进相当,而工程复杂性只是其一小部分。

    Key Takeaways

    • DPO在偏好数据上优化语言模型,无需单独的奖励模型或RL训练。
    • 它将RLHF目标重新表述为偏好对上的简单分类损失。
    • DPO在实践中与RLHF同样有效,但训练起来简单得多且更稳定。
    • 训练需要提示、偏好回复和非偏好回复的三元组。
    • beta参数控制偏好优化和保持接近参考模型之间的权衡。

    How Ertas Helps

    Ertas Studio支持DPO训练作为偏好优化方法,允许用户上传在Ertas Data Suite中准备的chosen/rejected回复对,通过简单稳定的训练过程将模型与人类偏好对齐。

    Related Resources

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.