推导 DPO 的损失函数
直接偏好优化(DPO)在将大型语言模型(LLMs)与人类偏好对齐方面变得至关重要。我与许多人讨论过它,并注意到许多人需要帮助来推导其方程,以便他们可以在此基础上进行构建和改进。本文将逐步推导 DPO。希望对您有所帮助。
布拉德利-特里(Bradley Terry, BT)模型
想象一下,给你两个答案,你想比较哪个答案更好。BT 模型提供了一种进行这种比较的方法,如下所示:上面这个公式的烦人之处在于奖励函数!当然,我们可以对这个奖励建模,并遵循像 PPO 这样的方法,就像我们在 RLHF 中所做的那样。问题是学习这个奖励函数可能需要时间和精力。这就是为什么 DPO 旨在利用可用的成对数据来消除它!
我们的目标是什么?
让我们先假设奖励函数存在!我们希望更新我们的 LLM 参数,以生成最大化该奖励的答案,同时保持与我们原始参考模型接近。这样,我们的 LLM 就能与奖励“对齐”,同时不失去其语言特性,因为我们希望保持与参考 LLM 的接近。形式上,我们希望最大化以下优化问题:在开始之前,我们注意到上述优化问题有一个约束,即 LLM 应该始终是一个有效的概率分布。因此,我们的整体问题可以表述为:
为了解决上述问题,我们遵循约束优化的标准方法,通过引入拉格朗日乘子将其改写为无约束形式,得到以下结果:
为了解决这个无约束问题,我们将考虑其梯度并尝试找到极值。别担心,这很简单!我们将一步一步来!🔥
从上面我们可以看出,有三个项需要微分:上图中所示的项 I、项 II 和项 III。对于项 I,我们写为:
现在,考虑第二项(KL项)
由于第二项 = 第二项.1 + 第二项.2,我们现在可以写为:
跳转到最后一项(第三项),我们可以很容易地看到:
如前所述,我们的目标是找到优化目标的极值。为此,我们现在将梯度设置为零,并找到 LLM 策略与其他变量的方程:
我们越来越接近 DPO 论文第 4 页上的公式 4 了,但我们还没有到达!我们还需要解决那个难看的归一化项。让我们好好想想这个问题!
通常,当您有拉格朗日乘子时,您也会对它们进行梯度运算,依此类推。与其做所有这些麻烦事,不如注意,在我们的例子中,拉格朗日乘子的作用是使策略成为一个有效的概率分布(记住我们从一开始就有的约束)。因此,我们可以遵循的一种方法来确定它的值是,我们可以看看什么样的 lambda 会使我上面的 pi^star 求和为 1——也就是说,成为一个有效的概率分布。让我们来详细探讨一下!
……这就是公式 4!
接下来要做的是从上面的方程中得到 r(x,y) 的方程,并将其替换到 BT 模型中。你能作为练习完成吗?
如果您需要任何帮助,请告诉我!
请随意点赞!
DPO 论文可在此处找到:https://arxiv.org/pdf/2305.18290