直接偏好优化算法 (Direct Preference optimization, DPO):大语言模型强化学习中的一种偏好优化方法,其相比 PPO 更简单、稳定与高效。

论文:https://arxiv.org/abs/2305.18290

1 传统 HFRL

对于传统的 HFRL,它的策略模型(即 LLM)和奖励模型是分离的。首先要使用偏好数据训练得到奖励模型,再借助奖励模型,通过强化学习来对模型进偏好优化。

首先需要对偏好进行建模。通常偏好数据集是二元对的形式,是一个输出相对另一个输出的胜负,这并不能表示成一个数学模型,我们希望通过绝对的数值来代表每个输出的“实力”。

Bradley-Terry 模型就可以对这种二元比较进行建模,表达人类偏好的潜奖励模型记为 r(x,y),代表 x 输入条件下输出 y 的奖励值,那么 y1 相对 y2 胜的几率是:

p(y1y2x)=er(x,y1)er(x,y1)+er(x,y2)

人类标注的偏好数据就相当于在 r(x,y) 这个潜奖励模型的采样,假如数据集是 D={x(i),yw(i),yl(i)}i=1N,那么优化的目标便是:

L(rϕ,D)=E(x,yw,yl)D[logerϕ(x,yw)erϕ(x,yw)+erϕ(x,yl)]=E(x,yw,yl)D[logσ(rϕ(x,yw)rϕ(x,yl))]

OpenAI 的论文 Fine-Tuning Language Models from Human Preferences 中实际上是四选一,而不是二选一。不过差别也不大,就是分母变成四项相加。

通过训练获得奖励模型 rϕ 后,就可以开始正式的强化学习了。优化的目标是:

maxπθExD,yπθ(yx)[rϕ(x,y)]βKL[πθ(yx),πref(yx)]

使用 PPO 方法进行优化。

可以看到,传统的 HFRL 流程复杂,需要先训练奖励模型,再正式训练语言模型。DPO 针对这个问题,提出了一种将奖励模型隐含在语言模型中的方法,相当于策略模型既是语言模型,也是奖励模型。

2 DPO 方法

根据我对论文公式推导的理解,DPO 就是通过一些巧妙的构造,消去了一些不好计算的部分,同时将奖励值隐含在语言模型中。

首先,DPO 从传统 HFRL 的优化目标开始,对它进行变形和构造:

maxπExD,yπ(yx)[r(x,y)]βKL[π(yx),πref(yx)]maxπExDEyπ(yx)[r(x,y)βlogπ(yx)πref(yx)]×1/βminπExDEyπ(yx)[logπ(yx)πref(yx)1βr(x,y)]minπExDEyπ(yx)[logπ(yx)1Z(x)πref(yx)exp(1βr(x,y))logZ(x)]其中,Z(x)=yπref(yx)exp(1βr(x,y))

上面的变形和构造虽说看不出来有什么用,但实际上是对下面的操作做准备。

接下来,把 log 里分母的那一坨式子记为:

π(yx)=1Z(x)πref(yx)exp(1βr(x,y))

π(yx) 回代到原来的式子:

minπExDEyπ(yx)[logπ(yx)1Z(x)πref(yx)exp(1βr(x,y))logZ(x)]minπExDEyπ(yx)[logπ(yx)π(yx)logZ(x)]minπExDEyπ(yx)[KL[π(yx),πref(yx)]logZ(x)]

注意到,Z(x) 是只关于 x 的函数,π(yx) 完全π 无关。那么由于 KL 散度的最小值是 0,当且仅当两分布完全相同。那么这就代表该优化目标的最优点就是 π=π.

因此,通过上面一通变形和优化,我们直接得到了优化目标的结果:

πr(yx)=1Z(x)πref(yx)exp(1βr(x,y))

但是该答案中 Z(x) 的计算是很昂贵的,因此到这的结果使用价值不高,需要继续操作。

对式子进行变形:

πr(yx)=1Z(x)πref(yx)exp(1βr(x,y))logπr(yx)=logZ(x)+logπref(yx)+1βr(x,y)r(x,y)=βlogπr(yx)πref(yx)+βlogZ(x) 

那么,我们就可以把我们要建模的潜奖励模型 r(x,y) 也用上面的方式进行变换,回代到 Bradley-Terry 模型中,然后惊奇地发现难算的 Z(X) 消掉了:

p(y1y2x)=er(x,y1)er(x,y1)+er(x,y2)=11+er(x,y2)r(x,y1)=11+exp(βlogπ(y2x)πref(y2x)βlogπ(y1x)πref(y1x))

建模好奖励后,接下来就可以写出目标函数了:

LDPO(πθ;πref)=E(x,yw,yl)D[logσ(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref(ylx))]

综上,DPO 就实现了将奖励模型隐含在语言模型,直接来进行偏好优化。

文章目录