机器学习 | 直接偏好优化 (DPO)
直接偏好优化算法 (Direct Preference optimization, DPO):大语言模型强化学习中的一种偏好优化方法,其相比 PPO 更简单、稳定与高效。
论文:https://arxiv.org/abs/2305.18290
1 传统 HFRL
对于传统的 HFRL,它的策略模型(即 LLM)和奖励模型是分离的。首先要使用偏好数据训练得到奖励模型,再借助奖励模型,通过强化学习来对模型进偏好优化。
首先需要对偏好进行建模。通常偏好数据集是二元对的形式,是一个输出相对另一个输出的胜负,这并不能表示成一个数学模型,我们希望通过绝对的数值来代表每个输出的“实力”。
Bradley-Terry 模型就可以对这种二元比较进行建模,表达人类偏好的潜奖励模型记为
人类标注的偏好数据就相当于在
OpenAI 的论文 Fine-Tuning Language Models from Human Preferences 中实际上是四选一,而不是二选一。不过差别也不大,就是分母变成四项相加。
通过训练获得奖励模型
使用 PPO 方法进行优化。
可以看到,传统的 HFRL 流程复杂,需要先训练奖励模型,再正式训练语言模型。DPO 针对这个问题,提出了一种将奖励模型隐含在语言模型中的方法,相当于策略模型既是语言模型,也是奖励模型。
2 DPO 方法
根据我对论文公式推导的理解,DPO 就是通过一些巧妙的构造,消去了一些不好计算的部分,同时将奖励值隐含在语言模型中。
首先,DPO 从传统 HFRL 的优化目标开始,对它进行变形和构造:
上面的变形和构造虽说看不出来有什么用,但实际上是对下面的操作做准备。
接下来,把
把
注意到,
因此,通过上面一通变形和优化,我们直接得到了优化目标的结果:
但是该答案中
对式子进行变形:
那么,我们就可以把我们要建模的潜奖励模型
建模好奖励后,接下来就可以写出目标函数了:
综上,DPO 就实现了将奖励模型隐含在语言模型,直接来进行偏好优化。
本文采用 CC BY-SA 4.0 许可,本文 Markdown 源码:Haotian-BiJi