1. 背景与动机
1.1 什么是DPO?
DPO(直接偏好优化)是一种用于优化大语言模型(LLM)以使其输出更符合人类偏好的方法。它通过直接利用人类对模型输出的偏好数据(例如,“输出A比输出B更好”)来优化模型,而无需依赖传统的强化学习(RL)框架,尤其是基于人类反馈的强化学习(RLHF)中的复杂奖励模型。
DPO的核心贡献是简化了RLHF的流程,避免了显式地训练奖励模型,而是将偏好数据直接转化为一个可以优化的损失函数。这种方法在性能上与RLHF相当甚至更优,同时计算效率更高,稳定性更强。
1.2 为什么需要DPO?
在训练大语言模型时,预训练和监督微调(SFT)通常能让模型生成流畅的文本,但这些文本可能不符合人类的具体偏好。例如:
- 模型可能生成过于冗长或不礼貌的回答。
- 模型可能在某些任务上偏离用户期望(如生成不安全或不准确的内容)。
为了解决这个问题,RLHF被广泛应用于ChatGPT等模型中。RLHF的流程通常包括:
- 训练奖励模型:基于人类偏好数据,训练一个模型来预测某个输出是否“更好”。
- 强化学习优化:使用近端策略优化(PPO)等强化学习算法,通过奖励模型的指导优化语言模型。
然而,RLHF有以下缺点:
- 复杂性高:需要训练奖励模型和进行强化学习,涉及多个阶段,计算成本高。
- 不稳定:强化学习(如PPO)的训练过程可能不稳定,超参数敏感。
- 奖励模型偏差:奖励模型可能无法完全捕捉人类偏好,导致“奖励黑客”问题,即模型学会了“欺骗”奖励模型而非真正优化偏好。
DPO的出现正是为了解决这些问题。它通过数学推导,将偏好优化问题转化为一个简单的监督学习任务,绕过了奖励模型和强化学习的复杂性。
2. DPO的核心思想
DPO的核心思想是:通过人类偏好数据直接优化语言模型的参数,使其更倾向于生成“更好”的输出,而无需中间的奖励模型。
具体来说:
- 人类偏好数据通常以成对的形式提供,例如对于同一个输入(prompt) x x x,有两个输出 y w y_w yw(更优)和 y l y_l yl(较差),人类标注 y w ≻ y l y_w \succ y_l yw≻yl。
- DPO的目标是调整模型的参数,使得模型赋予 y w y_w yw的概率高于 y l y_l yl,即 p ( y w ∣ x ) > p ( y l ∣ x ) p(y_w|x) > p(y_l|x) p(yw∣x)>p(yl∣x)。
DPO通过构造一个基于偏好的损失函数,直接优化语言模型的参数,使其输出分布更符合人类的偏好。
3. DPO的数学原理
为了让你更深入理解DPO的数学基础,我们将详细推导其核心原理。以下内容涉及概率论、优化理论和语言模型的概率建模,但我们会尽量用直白语言解释每个步骤,并提供直观的理解。推导将从偏好建模开始,逐步推导出DPO的损失函数。
3.1 偏好建模
DPO的基础是Bradley-Terry模型,这是一个广泛用于比较和偏好建模的概率模型。假设我们有一个输入 x x x(例如一个提示),以及两个输出 y w y_w yw(更优)和 y l y_l yl(较差)。人类标注表明 y w ≻ y l y_w \succ y_l yw≻yl,即 y w y_w yw比 y l y_l yl更受偏好。我们需要量化这种偏好的概率。
在Bradley-Terry模型中,假设每个输出 y y y有一个“质量”分数,由奖励函数 r ( x , y ) r(x, y) r(x,y)表示。 r ( x , y ) r(x, y) r(x,y)的值越大,输出 y y y对输入 x x x的质量越高。人类选择 y w ≻ y l y_w \succ y_l yw≻yl的概率定义为:
p ( y w ≻ y l ∣ x ) = exp ( r ( x , y w ) ) exp ( r ( x , y w ) ) + exp ( r ( x , y l ) ) p(y_w \succ y_l | x) = \frac{\exp(r(x, y_w))}{\exp(r(x, y_w)) + \exp(r(x, y_l))} p(yw≻yl∣x)=exp(r(x,yw))+exp(r(x,yl))exp(r(x,yw))
这个公式表示, y w y_w yw被选为更优的概率取决于其奖励 r ( x , y w ) r(x, y_w) r(x,yw)相对于 y l y_l yl的奖励 r ( x , y l ) r(x, y_l) r(x,yl)。为了简化,我们可以对分母和分子同时除以 exp ( r ( x , y w ) ) \exp(r(x, y_w)) exp(r(x,yw)),得到:
p ( y w ≻ y l ∣ x ) = 1 1 + exp ( r ( x , y l ) − r ( x , y w ) ) p(y_w \succ y_l | x) = \frac{1}{1 + \exp(r(x, y_l) - r(x, y_w))} p(yw≻yl∣x)=1+exp(r(x,yl)−r(x,yw))1
注意到,sigmoid函数 σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1可以改写为:
σ ( z ) = 1 1 + e − z = e z e z + 1 \sigma(z) = \frac{1}{1 + e^{-z}} = \frac{e^z}{e^z + 1} σ(z)=1+e−z1=ez+1ez
因此,上式可以进一步简化为:
p ( y w ≻ y l ∣ x ) = σ ( r ( x , y w ) − r ( x , y l ) ) p(y_w \succ y_l | x) = \sigma(r(x, y_w) - r(x, y_l)) p(yw≻yl∣x)=σ(r(x,yw)−r(x,yl))
其中, σ ( z ) \sigma(z) σ(z)是sigmoid函数,定义为:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1
直观解释:如果 r ( x , y w ) > r ( x , y l ) r(x, y_w) > r(x, y_l) r(x,yw)>r(x,yl),即 y w y_w yw的奖励高于 y l y_l yl,那么 r ( x , y w ) − r ( x , y l ) > 0 r(x, y_w) - r(x, y_l) > 0 r(x,yw)−r(x,yl)>0,sigmoid函数输出大于0.5,表示 y w y_w yw更可能被选择。反之,如果 r ( x , y l ) > r ( x , y w ) r(x, y_l) > r(x, y_w) r(x,yl)>r(x,