学习笔记:直接偏好优化(Direct Preference Optimization)原理

DPO是一种语言模型(language model)的后训练算法,无需使用RL而使之输出与人类偏好对齐。

算法由来

  • DPO是一种用于语言模型(language model, LM)的后训练算法。其目标是使得LM的文本输出能够对齐人类偏好(如表述风格、格式等),而无需使用奖励模型(reward model)或其他强化学习算法。
  • DPO核心思想:偏好优化问题可以转化为二分类问题。

算法基本原理

  • DPO不需要训练奖励模型。相反,其需要已经打分标注好的偏好优化数据集。具体而言,偏好优化数据集表示为为,即每条数据由三个项构成。其中为prompt,也就是给LM的输入。分别是对于的两种回答。其中更为人类所偏好;更为人类所不偏好
  • DPO的核心公式——Bradley-Terry模型:

    其中是一个实的、正的、处处可导的函数,可以理解为得分函数,为Bradley-Terry模型所定义。在DPO中,要求,其中表示输出相对于输入的奖励得分。这样做的好处是,目标函数可以转化为易于计算的sigmoid函数,即

  • 在DPO中,被规定为:

    其中是温度参数,控制概率分布的平滑程度。分别是由当前模型和参考模型给定x时输出y的概率。即是我们需要优化的模型,一般初始化为为常数,在训练开始前可以缓存起来。同时,在使用链式法则计算损失函数中,这一常数会在中消失。

  • 由此,DPO的损失函数可以定义为B-T模型的负对数似然,即:

  • DPO由于符合Bradley-Terry模型,因此也保留了B-T的一些优良的数学性质,这里不再赘述,有兴趣可读原始论文的Section 5.

算法流程

Step 1. 标注数据 采样有监督微调(sft)的模型对于每个prompt 的两个输出,即。然后人工标注对于两个输出的偏好,形成人类偏好数据集

Step 2. 参考模型初始化 如果已知,则令参考模型;否则对做sft,即

Step 3. 模型优化 首先将语言模型初始化为。然后将数据集的prompt输入;计算损失函数;使用梯度下降法最小化损失函数,从而优化语言模型

注:原始论文算法流程的符号略微混乱。原论文的标注数据阶段声称由完成,但下文又称偏好数据集通常由生成。此处为避免混淆,按照的顺序介绍算法流程。

参考文献

  • Rafael Rafailov, Archit Sharma, Eric Mitchell, Christopher D Manning, Stefano Ermon, & Chelsea Finn (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. In Thirty-seventh Conference on Neural Information Processing Systems.
  • 维基百科. Bradley-Terry Model. 链接
  • csdn. 【基础知识】DPO(Direct Preference Optimization)的原理以及公式是怎样的?. 链接