DPO重磅炸弹:LLM训练成本崩塌,PPO凉凉!

2025-12-31AI工具

DPO重磅炸弹:LLM训练成本崩塌,PPO凉凉!

大型语言模型(LLMs)的飞速发展,让它们在各个领域展现出惊人的潜力。然而,如何让这些强大的模型真正理解人类意图,并生成符合我们偏好的高质量内容,一直是业界关注的焦点。过去,我们常常依赖基于PPO(近端策略优化)的强化学习与人类反馈(RLHF)方法来微调模型,以实现这种对齐。新媒网跨境获悉,这项技术虽然有效,但其复杂的流程和高昂的计算成本,也让不少开发者望而却步。

回想一下,在之前的探讨中,我们深入剖析了PPO损失函数的推导过程。最终呈现给我们的,是一个包含剪切替代项、价值函数损失、熵奖励以及KL散度惩罚等多个组件的复杂目标函数。这不仅让最终目标看起来令人望而生畏,整个RLHF流程也显得多步骤且复杂。它要求我们首先训练一个独立的奖励模型来捕捉人类偏好,然后通过强化学习(PPO算法)来对大型语言模型进行微调。

正是在这样的背景下,直接偏好优化(DPO)应运而生。DPO提供了一种计算上更为轻量级的替代方案,它能够直接优化大型语言模型,使其遵从人类偏好,而无需显式的奖励模型或复杂的强化学习过程。DPO的核心思想在于,它能够隐式地优化与基于PPO的RLHF相同的目标(即在KL散度约束下最大化奖励),但它用一个针对偏好对的单一监督学习目标,取代了整个奖励模型训练和PPO循环。这意味着在训练过程中,不再需要采样,没有价值函数,没有剪切,仅仅是一个简单的分类损失!接下来,我们将详细推导DPO损失函数,展示这一惊人简化是如何实现的。在此之前,我们假设大家对PPO方法,特别是奖励模型和KL散度约束下的RLHF目标,已经有所了解。再次感谢美国加利福尼亚州的乌玛尔·贾米尔(Umar Jamil)先生关于DPO的精彩视频,它帮助我们深入理解了整个推导过程。

一、RLHF的优化目标

我们首先回顾一下PPO推文中所述的RLHF优化目标。RLHF的目标是找到一个策略 $\pi_\theta$,它既能最大化预期奖励,又能与参考模型 $\pi_{\text{ref}}$ 保持足够的接近:

$
J_{\text{RLHF}}(\theta) = \mathbb{E}{x \sim \mathcal{D}, y \sim \pi\theta(y|x)}\left[r_\phi(x, y)\right] - \beta \cdot D_{\text{KL}}\left(\pi_\theta(y|x) | \pi_{\text{ref}}(y|x)\right) \tag{III.I}
$

这个目标函数的第一项鼓励模型生成高奖励的响应,这是我们期望看到的积极结果。第二项(KL散度惩罚)则是一个非常重要的约束,它能有效防止模型偏离参考模型太远。这不仅有助于避免“奖励作弊”(即模型找到奖励函数漏洞),还能确保生成内容的语言质量和连贯性。

然而,正如我们在PPO文章中讨论过的,我们无法直接通过梯度下降来优化这个目标函数。原因在于期望项 $\mathbb{E}{y \sim \pi\theta(y|x)}[\cdot]$ 需要从策略中进行采样,而采样过程是非可微分的。这正是我们为何需要强化学习算法,例如REINFORCE和PPO,它们提供了一种在不直接对采样过程进行微分的情况下,估计策略梯度的方法。

那么,有没有可能重新构造这个问题,使得我们在训练过程中无需从策略中进行采样呢?这正是DPO方法所要实现的关键突破。它通过巧妙的设计,绕过了强化学习的复杂性,为大型语言模型的对齐开辟了一条新路径。

二、用于偏好学习的布拉德利-特里模型

为了更深入地理解DPO,我们还需要稍微详细地探讨一下布拉德利-特里(Bradley-Terry)模型在奖励模型训练中的应用,特别是其工作原理。训练一个奖励模型,需要人类标注的偏好数据,这些数据通常以成对响应比较的形式存在。

$
\mathcal{D} = \left{(x^{(i)}, y_w^{(i)}, y_l^{(i)})\right}_{i=1}^{N}
$

在这里:

  • $x$ 代表用户输入的提示词;
  • $y_w$ 代表人类更偏爱(获胜)的响应;
  • $y_l$ 代表人类不那么偏爱(落败)的响应。

布拉德利-特里概率模型

布拉德利-特里模型提供了一种将比较数据转化为概率模型的严谨方法。它假设存在一个潜在的真实奖励函数 $r^*(x,y)$,能够捕捉响应的真实质量。该模型将响应 $y_w$ 比 $y_l$ 更受偏爱的概率建模为:

$
P(y_w \succ y_l | x) = \frac{e^{r^(x, y_w)}}{e^{r^(x, y_w)} + e^{r^*(x, y_l)}} \tag{II.I}
$

这里的直观解释非常简单:奖励值越高的响应,被选为偏好选项的可能性呈指数级增长。模型的核心思路在于,高奖励的响应更容易被人类青睐。

一个关键的步骤是认识到这个指数比率可以被改写为一个Sigmoid函数。这非常重要,因为它将布拉德利-特里模型与标准的二元分类问题建立了联系,极大地简化了后续的优化过程。

让我们通过数学推导来证明这一点。假设 $A = r(x, y_w)$ 且 $B = r(x, y_l)$。我们希望证明:

$
\frac{e^A}{e^A + e^B} = \sigma(A - B)
$

其中 $\sigma(z) = \frac{1}{1 + e^{-z}}$ 是Sigmoid函数。
从左侧开始:
$
\frac{e^A}{e^A + e^B}
$
我们可以将其改写为:
$
= \frac{e^A / e^A}{(e^A + e^B) / e^A} = \frac{1}{1 + e^B / e^A} = \frac{1}{1 + e^{B-A}}
$
这正是 $(A - B)$ 的Sigmoid函数:
$
= \frac{1}{1 + e^{-(A-B)}} = \sigma(A - B)
$
因此,布拉德利-特里模型可以被简洁地表达为:

$
\boxed{P(y_w \succ y_l | x) = \sigma\left(r(x, y_w) - r(x, y_l)\right)} \tag{II.II}
$

奖励模型损失

给定一个偏好数据集 $\mathcal{D}$,我们可以利用最大似然估计来训练一个参数化的奖励模型 $r_\phi(x,y)$。我们的目标是最大化观测到数据集中这些偏好的概率:

$
\max_\phi \prod_{(x, y_w, y_l) \in \mathcal{D}} P(y_w \succ y_l | x)
$

通过取对数并取负(将最大化问题转化为最小化问题),我们得到了负对数似然损失:

$
\boxed{\mathcal{L}{\text{RM}}(\phi) = -\mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}}\left[\log \sigma\left(r_\phi(x, y_w) - r_\phi(x, y_l)\right)\right]} \tag{II.III}
$

这本质上是一个二元交叉熵目标函数,它帮助奖励模型学习为人类偏好的响应分配更高的奖励。值得注意的是,布拉德利-特里模型仅仅依赖于奖励的差异:$r(x,y_w) - r(x, y_l)$。奖励的绝对值并不重要,重要的是它们的相对顺序。这意味着:

  • 如果我们给奖励函数加上任何常数 $c$,或者任何只依赖于提示词 $x$(而不依赖于响应 $y$)的函数 $f(x)$,偏好概率都不会改变。这一不变性特性将是推导DPO的关键所在,它为DPO的巧妙设计奠定了基础。

三、闭式最优策略

在本节中,我们将探寻解决优化问题的精确解析最优策略解。我们的目标是找到一个策略,它既能最大化预期奖励,又能将与参考策略的KL散度限制在一个合理的范围内:

$
\max_\pi \mathbb{E}{x \sim \mathcal{D}, y \sim \pi(y|x)}\left[r(x, y)\right] - \beta \cdot D{\text{KL}}\left(\pi(y|x) | \pi_{\text{ref}}(y|x)\right) \tag{III.I}
$

请注意,这里我用 $\pi$ 而非 $\pi_\theta$ 来强调我们正在寻找的是普遍意义上的最优策略,而不仅仅是参数化版本。展开KL散度项:

$
D_{\text{KL}}\left(\pi(y|x) | \pi_{\text{ref}}(y|x)\right) = \mathbb{E}{y \sim \pi(y|x)}\left[\log \frac{\pi(y|x)}{\pi{\text{ref}}(y|x)}\right]
$

因此,我们的优化目标变为:

$
\max_\pi \mathbb{E}{x \sim \mathcal{D}} \mathbb{E}{y \sim \pi(y|x)}\left[r(x, y) - \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)}\right]
$

对于一个固定的提示词 $x$,我们希望找到能够最大化以下表达式的分布 $\pi(\cdot|x)$:

$
\mathbb{E}{y \sim \pi(y|x)}\left[r(x, y) - \beta \log \frac{\pi(y|x)}{\pi{\text{ref}}(y|x)}\right]
$

这是一个关于概率分布的约束优化问题。我们可以使用拉格朗日乘数法来求解,同时强制要求 $\pi(y|x)$ 对所有可能的 $y$ 求和为1。对于离散的 $y$ 值:

$
\mathcal{L}(\pi, \lambda) = \sum_y \pi(y|x) \left[r(x, y) - \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)}\right] + \lambda \left(1 - \sum_y \pi(y|x)\right)
$

对 $\pi(y|x)$ 求偏导数并使其等于零(寻找驻点):

$
\frac{\partial \mathcal{L}}{\partial \pi(y|x)} = r(x, y) - \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} - \beta - \lambda = 0
$

现在,我们解出 $\pi(y|x)$:

$
\log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} = \frac{1}{\beta}\left(r(x, y) - \beta - \lambda\right)
$

$
\frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)} = \exp\left(\frac{1}{\beta}r(x, y)\right) \cdot \exp\left(-1 - \frac{\lambda}{\beta}\right)
$

$
\pi(y|x) = \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{1}{\beta}r(x, y)\right) \cdot \exp\left(-1 - \frac{\lambda}{\beta}\right)
$

表达式 $\exp\left(-1 - \frac{\lambda}{\beta}\right)$ 是一个常数(与 $y$ 无关),它用于确保概率分布的归一化。为了找到其值,我们强制要求 $\pi(y|x)$ 必须是一个有效的概率分布,即所有可能的 $\pi(y|x)$ 之和必须为1:

$
\sum_y \pi(y|x) = 1
$

代入我们得到的 $\pi(y|x)$ 表达式:

$
\sum_y \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{1}{\beta}r(x, y)\right) \cdot \exp\left(-1 - \frac{\lambda}{\beta}\right) = 1
$

由于 $\exp\left(-1 - \frac{\lambda}{\beta}\right)$ 不依赖于 $y$,我们可以将其从求和中提出来:

$
\exp\left(-1 - \frac{\lambda}{\beta}\right) \cdot \sum_y \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{1}{\beta}r(x, y)\right) = 1
$

解出这个常数:

$
\exp\left(-1 - \frac{\lambda}{\beta}\right) = \frac{1}{\sum_y \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{1}{\beta}r(x, y)\right)}
$

我们将这个归一化求和项定义为配分函数 $Z(x)$:

$
Z(x) = \sum_y \pi_{\text{ref}}(y|x) \exp\left(\frac{1}{\beta}r(x, y)\right) \tag{III.II}
$

回代后,我们便得到了最优策略的闭式表达式:

$
\boxed{\pi_r(y|x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y|x) \exp\left(\frac{1}{\beta}r(x, y)\right)} \tag{III.III}
$

我们虽然得到了最优策略的一个精确闭式表达式,但在实际应用中,我们无法直接计算它,因为配分函数 $Z(x)$ 是一个“难以处理”的项。要计算它,我们需要对所有可能的响应 $y$ 进行求和,这在大型语言模型生成的文本空间中是根本不可能实现的。这个挑战正是DPO需要解决的核心问题。

四、重参数化技巧

DPO的核心思想是巧妙地翻转奖励和策略之间的关系。现在,我们将问题重新构架为:“给定一个最优策略,它对应着怎样的奖励函数?”这种视角的转变,为DPO的后续推导奠定了基础。

我们从最优策略方程 (III.III) 出发:

$
\pi_r(y|x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y|x) \exp\left(\frac{1}{\beta}r(x, y)\right)
$

为了解出奖励 $r(x,y)$,我们首先对等式两边取对数:

$
\log \pi_r(y|x) = \log \pi_{\text{ref}}(y|x) + \frac{1}{\beta}r(x, y) - \log Z(x)
$

现在,我们重新排列,将 $r(x,y)$ 放在等式左边:

$
\frac{1}{\beta}r(x, y) = \log \pi_r(y|x) - \log \pi_{\text{ref}}(y|x) + \log Z(x)
$

$
r(x, y) = \beta \log \pi_r(y|x) - \beta \log \pi_{\text{ref}}(y|x) + \beta \log Z(x)
$

这可以更紧凑地写为:

$
\boxed{r(x, y) = \beta \log \frac{\pi_r(y|x)}{\pi_{\text{ref}}(y|x)} + \beta \log Z(x)} \tag{IV.I}
$

这个奖励函数可以分为两部分来理解:

  • 一项涉及最优策略与参考策略对数比率的项,它衡量了当前策略对某个响应的偏好程度。
  • 另一项是 $\beta \log Z(x)$,这一项只依赖于提示词 $x$(而不依赖于响应 $y$)。这一点至关重要,因为正如我们之前提到的,在布拉德利-特里模型中,奖励的绝对值不重要,只在乎奖励的相对差异。而DPO正是利用了这一点,巧妙地消除了这个难以计算的配分函数项。

五、DPO损失的推导

现在,我们已经具备了推导DPO损失的所有要素。从第二节中我们得知,布拉德利-特里偏好模型可以表示为:

$
P(y_w \succ y_l | x) = \sigma\left(r(x, y_w) - r(x, y_l)\right)
$

根据第四节的推导,假设我们能够获得一个最优策略 $\pi^*$,那么奖励函数 $r(x,y)$ 可以被写为:

$
r(x, y) = \beta \log \frac{\pi^*(y|x)}{\pi_{\text{ref}}(y|x)} + \beta \log Z(x)
$

将此表达式代入布拉德利-特里模型:

$
P(y_w \succ y_l | x) = \sigma\left(\left[\beta \log \frac{\pi^(y_w|x)}{\pi_{\text{ref}}(y_w|x)} + \beta \log Z(x)\right] - \left[\beta \log \frac{\pi^(y_l|x)}{\pi_{\text{ref}}(y_l|x)} + \beta \log Z(x)\right]\right)
$

现在,我们简化Sigmoid函数内部的表达式:

$
= \sigma\left(\beta \log \frac{\pi^(y_w|x)}{\pi_{\text{ref}}(y_w|x)} + \beta \log Z(x) - \beta \log \frac{\pi^(y_l|x)}{\pi_{\text{ref}}(y_l|x)} - \beta \log Z(x)\right)
$

惊喜来了! $\beta \log Z(x)$ 项完全抵消了:

$
= \sigma\left(\beta \log \frac{\pi^(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi^(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right)
$

这里再次回顾第二节中的一个关键洞察,我们提到布拉德利-特里模型只依赖于奖励差异。因此,当我们计算 $r(x,y_w) - r(x, y_l)$ 时,难以计算的配分函数 $Z(x)$ 恰好抵消了。这正是DPO之所以能够实现的关键。我们可以通过定义一个隐式奖励来更清晰地表达这一点,该隐式奖励由最优策略决定:

$
\hat{r}(x, y) = \beta \log \frac{\pi^*(y|x)}{\pi_{\text{ref}}(y|x)}
$

因此:

$
P(y_w \succ y_l | x) = \sigma\left(\hat{r}(x, y_w) - \hat{r}(x, y_l)\right)
$

在实际操作中,我们并没有直接访问最优策略 $\pi^*$ 的能力。但是,我们可以参数化一个策略 $\pi_\theta$,并通过优化它来最大化观测到的偏好的似然。这正是奖励模型损失 (II.III) 所做的工作,只不过现在我们的奖励是由策略本身隐式定义的。因此,DPO损失函数就是负对数似然:

$
\boxed{\mathcal{L}{\text{DPO}}(\pi\theta; \pi_{\text{ref}}) = -\mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}}\left[\log \sigma\left(\beta \log \frac{\pi\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)}\right)\right]}
$

如果使用隐式奖励符号,它也可以写为:

$
\mathcal{L}{\text{DPO}}(\pi\theta; \pi_{\text{ref}}) = -\mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}}\left[\log \sigma\left(\hat{r}\theta(x, y_w) - \hat{r}_\theta(x, y_l)\right)\right] \tag{V.II}
$

从上述DPO损失函数中,我们可以提炼出几个关键的洞察:

  • 策略通过与参考策略的对数比率,隐式地定义了它自己的奖励。这意味着不再需要一个独立的奖励模型,大大简化了整个训练流程。
  • 这仅仅是一个针对偏好对的监督分类损失,完全不需要复杂的强化学习算法。
  • DPO利用固定的偏好数据集 $\mathcal{D}$ 进行训练。因此,在训练过程中无需进行任何采样,减少了计算开销和方差。
  • 由于我们不再进行策略梯度更新,也就不再需要价值函数。
  • DPO仍然优化了带有KL散度约束的奖励最大化目标,但以一种截然不同且更为高效的方式进行。

六、构建DPO的直观理解

既然我们已经推导出了DPO损失,现在可以围绕其隐式奖励模型和梯度更新建立更直观的理解。这将帮助我们更好地把握DPO的精髓及其在实际应用中的高效性。

隐式奖励模型

DPO论文的副标题是“你的语言模型其实是一个奖励模型”,这恰好捕捉了其核心思想——我们利用大型语言模型本身来构建隐式奖励。策略 $\pi_\theta$ 定义了一个隐式奖励函数:

$
\hat{r}\theta(x, y) = \beta \log \frac{\pi\theta(y|x)}{\pi_{\text{ref}}(y|x)}
$

这个奖励函数衡量的是,当前策略生成响应 $y$ 的可能性比参考策略高出多少,并由 $\beta$ 进行缩放。

  • 如果 $\pi_\theta(y|x) > \pi_{\text{ref}}(y|x)$:隐式奖励为正值(表示当前策略“更喜欢”这个响应)。
  • 如果 $\pi_\theta(y|x) < \pi_{\text{ref}}(y|x)$:隐式奖励为负值(表示当前策略“更不喜欢”这个响应)。

这种巧妙的设计使得模型在训练过程中能够自我评估其生成内容的“好坏”,无需外部的奖励信号,大大提升了训练的内聚性和效率。它将奖励评估深度融入了模型自身的生成逻辑中,实现了奖励与生成一体化。

梯度更新分析

让我们再次开动脑筋,计算一下DPO目标的梯度:

$
\mathcal{L}{\text{DPO}} = -\mathbb{E}\left[\log \sigma\left(\hat{r}\theta(x, y_w) - \hat{r}_\theta(x, y_l)\right)\right]
$

令 $u = \hat{r}\theta(x, y_w) - \hat{r}\theta(x, y_l)$。使用链式法则:

$
\nabla_\theta \mathcal{L}{\text{DPO}} = -\mathbb{E}\left[\frac{\sigma'(u)}{\sigma(u)} \nabla\theta u\right]
$

利用Sigmoid函数的性质 $\sigma'(u) = \sigma(u)(1 - \sigma(u))$:

$
= -\mathbb{E}\left[\frac{\sigma(u)(1-\sigma(u))}{\sigma(u)} \nabla_\theta u\right] = -\mathbb{E}\left[(1 - \sigma(u)) \nabla_\theta u\right]
$

再利用 $1 - \sigma(u) = \sigma(-u)$:

$
= -\mathbb{E}\left[\sigma(-u) \nabla_\theta u\right]
$

现在,$-u = \hat{r}\theta(x, y_l) - \hat{r}\theta(x, y_w)$,并且:

$
\nabla_\theta u = \nabla_\theta \hat{r}\theta(x, y_w) - \nabla\theta \hat{r}\theta(x, y_l) = \beta \nabla\theta \log \pi_\theta(y_w|x) - \beta \nabla_\theta \log \pi_\theta(y_l|x)
$

将这些代入,我们得到最终的梯度表达式:

$
\boxed{\nabla_\theta \mathcal{L}{\text{DPO}} = -\beta \mathbb{E}\left[\underbrace{\sigma\left(\hat{r}\theta(x, y_l) - \hat{r}\theta(x, y_w)\right)}{\text{权重}}\left(\underbrace{\nabla_\theta \log \pi_\theta(y_w|x)}{\text{增加 } y_w \text{的概率}} - \underbrace{\nabla\theta \log \pi_\theta(y_l|x)}_{\text{减少 } y_l \text{的概率}}\right)\right]}
$

这个梯度表达式告诉我们模型将如何更新其参数:

  • $\nabla_\theta \log \pi_\theta(y_w|x)$ 指向增加偏好响应 $y_w$ 概率的方向。
  • $-\nabla_\theta \log \pi_\theta(y_l|x)$ 指向减少非偏好响应 $y_l$ 概率的方向。

更重要的是,这个权重项 $\sigma\left(\hat{r}\theta(x, y_l) - \hat{r}\theta(x, y_w)\right)$ 扮演了关键角色。当模型当前为“落败”响应 $y_l$ 分配的隐式奖励高于“获胜”响应 $y_w$ 时,即模型犯错时,这个权重项会很高。换句话说:

  • 当模型做出错误判断(将 $y_l$ 排在 $y_w$ 之前)时,它会得到较大的梯度更新,从而强烈修正错误。
  • 当模型做出正确判断(将 $y_w$ 排在 $y_l$ 之前)时,它会得到较小的梯度更新,以微调模型行为。

这种动态的Sigmoid加权机制至关重要,它能自然地将学习的焦点集中在模型当前处理不当的样本上,实现了高效的“靶向学习”。这种机制不仅提升了训练效率,也确保了模型能够精准地学习人类的偏好,展现了DPO算法在实践中的高度智能性。

七、实际中对数概率的计算方法

本节内容完全改编自美国加利福尼亚州的乌玛尔·贾米尔(Umar Jamil)先生的视频。我认为理解在实际操作中如何计算对数概率是至关重要的。DPO损失函数要求计算 $\log \pi_\theta(y|x)$,即给定提示 $x$ 的完整响应 $y$ 的对数概率。让我们看看这在大型语言模型中是如何实现的。

大型语言模型本质上是自回归的:它们一次生成一个词元(token),并以前面所有已生成的词元为条件。对于一个响应 $y = (y_1, y_2, \ldots, y_T)$,其概率可以分解为:

$
\pi_\theta(y|x) = \prod_{t=1}^{T} \pi_\theta(y_t | x, y_1, \ldots, y_{t-1}) = \prod_{t=1}^{T} \pi_\theta(y_t | x, y_{<t})
$

取对数后,我们得到:

$
\boxed{\log \pi_\theta(y|x) = \sum_{t=1}^{T} \log \pi_\theta(y_t | x, y_{<t})} \tag{VII.I}
$

这意味着完整响应的对数概率是每个位置上词元对数概率的总和。那么,如何计算 $\log \pi_\theta(y|x)$ 呢?具体步骤如下:

  • 准备输入: 将提示词 $x$ 和响应 $y$ 连接起来,形成一个完整的序列,例如 input = [x_1, x_2, \ldots, x_n, y_1, y_2, \ldots, y_T]
  • 前向传播: 将这个序列输入到Transformer模型中,获取每个位置的隐藏状态。
  • 投影到logits: 对每个位置的隐藏状态应用语言模型头部(通常是一个线性层),得到对应词汇表的logits(未归一化的对数概率)。
  • 对数Softmax: 使用对数Softmax函数,将这些logits转化为词汇表上每个词元的对数概率。
  • 收集相关对数概率: 对于响应序列中的每个位置 $t$,提取实际的下一个词元 $y_t$ 的对数概率(因为我们知道实际的输出)。
  • 带掩码求和: 将这些对数概率求和,但只针对响应部分的词元(而非提示部分的词元)进行求和。即 $\log \pi_\theta(y|x) = \sum_{t \in \text{响应位置}} \log \pi_\theta(y_t | x, y_{<t})$。

通过这些步骤,我们就能得到一个响应的 $\log \pi_\theta(y|x)$ 值。我们对偏好响应 $y_w$ 和非偏好响应 $y_l$ 分别执行此操作,并且同时对当前训练的模型 $\pi_\theta$ 和固定的参考模型 $\pi_{\text{ref}}$ 进行计算。有了这四个对数概率值,我们便可以轻松地计算DPO损失,并以此来优化模型。这种清晰可循的计算方式,进一步凸显了DPO在实际应用中的高效和实用性。

结语

一旦我们推导出DPO损失函数,便会立即感受到其解决方案的简洁与优雅,特别是与复杂的PPO方法相比。DPO的推导过程巧妙地建立在一个核心观察之上:布拉德利-特里模型仅仅关注奖励的差异。正是这一关键洞察,使得从解析解中出现的那个看似难以处理的配分函数项 $Z(x)$ 得以完全抵消。

最终,展现在我们面前的,是一个直接而高效的分类损失函数。DPO的出现,不仅为大型语言模型的对齐提供了一条全新的、更为轻量级的路径,也极大地降低了实现人类偏好对齐的计算和工程复杂度。它意味着开发者可以更便捷、更经济地将人类的价值观和偏好注入到AI模型中,从而推动人工智能技术向着更加积极、负责任的方向发展。这种创新不仅提升了模型的实用性,也体现了人工智能领域在追求技术突破与实际应用之间平衡的智慧,为未来的AI发展注入了强大的正能量。

新媒网(公号: 新媒网跨境发布),是一个专业的跨境电商、游戏、支付、贸易和广告社区平台,为百万跨境人传递最新的海外淘金精准资讯情报。

本文来源:新媒网 https://nmedialink.com/posts/dpo-collapses-llm-training-cost-ppo-out.html

评论(0)
暂无评论,快来抢沙发~
新媒网跨境快讯:大型语言模型(LLMs)如何理解人类意图并生成高质量内容,一直是业界焦点。传统基于PPO的强化学习与人类反馈(RLHF)方法微调模型虽有效,但流程复杂且计算成本高昂。现在,直接偏好优化(DPO)技术应运而生,提供了一种计算更轻量级的替代方案。DPO无需显式奖励模型或复杂强化学习,通过单一监督学习目标,直接优化LLMs以遵从人类偏好。它利用布拉德利-特里模型中奖励差异的特性,巧妙地消除了难以处理的配分函数项。DPO显著简化了LLM对齐流程,降低了计算和工程复杂度,为AI模型更高效注入人类价值观开辟新路径。
发布于 2025-12-31
查看人数 134
人民币汇率走势
CNY
亚马逊热销榜
共 0 SKU 上次更新 NaN:NaN:NaN
类目: 切换分类
暂无数据
暂无数据
关注我们
NMedia
新媒网跨境发布
本站原创内容版权归作者及NMedia共同所有,未经许可,禁止以任何形式转载。