前几日,大概阅读了《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》这篇论文,再来仔细阅读一下,整个推导还是很有意思。
摘要
虽然大规模无监督语言模型(LMs)可以学习广泛的世界知识和一些推理技能,但由于其训练的完全无监督性质,很难实现对它们行为的精确控制。现有的获得这种可操纵性的方法收集了人类对模型生成相对质量的标签,并对无监督的LM进行微调,以与这些偏好保持一致,通常是通过人类反馈的强化学习(RLHF)。然而,RLHF是一个复杂且经常不稳定的程序,首先拟合一个反映人类偏好的奖励模型,然后使用强化学习对大型无监督LM进行微调,以最大化这个估计的奖励,而不会偏离原始模型太远。在本文中,我们介绍了RLHF中奖励模型的一种新参数化方法,该方法能够以封闭形式提取相应的最优策略,从而使我们只需一个简单的分类损失即可解决标准的RLHF问题。我们称之为直接偏好优化(DPO)的算法是稳定的、高性能的、计算量轻的,在微调或进行重要的超参数调整时不需要从LM中采样。我们的实验表明,DPO可以微调LMs,使其与人类偏好相一致,甚至比现有方法更好。值得注意的是,使用DPO进行微调在控制代际情绪的方面超过了基于PPO的RLHF,并且在总结和单轮对话中匹配或提高了响应质量,同时更易于实现和训练。
个人理解
大模型的训练,包括预训练、SFT和RLHF三部分,后两步,SFT的作用是增强模型的指令跟随能力,RLHF的作用是将模型输出与人类偏好进行对齐。从摘要可以看出,DPO的方法,是为了替代RLHF。
RLHF太过复杂,因为其中牵扯到四个模型,一个奖励模型,然后采用了强化学习PPO算法,其中包括Actor Model和Critic Model两模型,还有待微调的大语言模型(经过SFT)作为参考模型,非常复杂。
而DPO这个方法,从标题也可以大概看出方法的要点,大语言模型自身就可以作为奖励模型,进行直接偏好优化。DPO,直接优化语言模型以符合人类偏好,而无需明确的奖励建模或强化学习。再进一步说,语言模型是通过学习人类语言的概率分布,然后进行输出,DPO的方法,就是通过标签数据,让语言模型学习符合人类偏好的概率分布。
这篇论文不算复杂,公式推导比较容易看懂,思想逻辑非常情绪,绝对是非常值得称赞和学习的文章。下面看一下论文的公式推导。
RLHF
先回顾一下RLHF的方法。
Instruct GPT这篇论文《Training language models to follow instructions with human feedback》中提出了RLHF的方法。
论文中的下面这张图被广泛引用:
其中包括三个步骤:(1)监督微调(SFT),(2)奖励模型(RM)训练,以及(3)通过奖励模型上的PPO进行强化学习。蓝色箭头表示该数据用于训练一个模型。在第2步中,方框A-D是来自经过SFT后的模型的输出样本,然后由标注者进行排名。
Supervised fine-tuning (SFT):基于标注者提供的样例数据,使用有监督学习微调GPT-3。
训练奖励模型:
rθ是奖励模型的标量输出,对于提示x,yw排序优于yl,yw作为正样,希望 rθ 尽量大;yl作为负样, rθ尽量小;再经过sigmoid函数、取对数、取期望值。损失函数尽量小,就是公式的期望值尽量大。
论文中采用K=9,就是对于输入的x,模型生成9个不同的响应,然后两两排序比较,就产生36对数据
相对于K=4,K=9的好处:
1、以较小代价生成更多数据;
2、损失函数计算复杂度方面, rθ只需要算9个,复杂度低。
RM模型的作用:用模型取代人类反馈
然后基于奖励模型进行强化学习。其目标函数三个部分,目标是最大化目标函数:
1、基于RL后模型生成的响应,产生由奖赏模型确定的奖赏;
2、经过RL后模型与SFT模型之间的KL散度,使得RL训练的模型不要太偏离SFT模型,以减轻奖赏模型的过度优化;
3、基于原始的预训练的分布的目标函数,避免针对单个任务的优化。
在DPO这篇论文中指出:由于语言生成的离散性质,这个目标函数是不可微分的,通常使用强化学习进行优化。标准方法是构建奖励函数,并使用PPO进行目标函数的最大化。(其实没理解,为什么目标函数不可微)
DPO
DPO主要流程:
- 对于每个提示x,从参考模型πref(y∣x)中采样y1,y2,并通过人工标注来构建离线的具有人类偏好的数据集D={ (x,y[w], y[l]) };
- 优化语言模型πθ,在给定的πref、数据集D 和期望的β的条件下最小化DPO损失函数
来看一下DPO这篇论文的公式推导。
1)RLHF强化学习的目标函数:
2)论文通过理论推导,得出在KL散度约束下的最大化目标函数的最优解:
其中Z(x):
3)对上面的公式进行改写,重新参数化奖励模型,将奖励函数表示如下:
4)论文中指出有许多方法可用于对偏好进行建模,比如Bradley-Terry (BT)模型。按照BT 模型,人类偏好分布可以写成:
Bradley-Terry 模型仅取决于两次输出之间的奖励差异,Instruct GPT的论文中奖励模型的偏好模型公式是下面的形式(与上面的公式是一回事)
将奖励函数带入偏好模型公式,其中的Z(x)将被消除,最后得到:
5)现在,有了根据最优策略(而不是奖励模型)的人类偏好数据的概率,可以为微调后的模型πθ制定最大似然目标,用于优化语言模型的策略:
再来看下面这种图,说的很明白了。你试图做的基本上是最大化生成你喜欢的东西的可能性,最小化你不喜欢的东西的可能性。其他所有术语在这里都不太重要,理解起来并不复杂。在高层次上,实际上就是最大化你偏好的东西,最小化其他的东西。
6)为了对 DPO 的机理进行理解,分析一下损失函数的梯度,损失函数对于参数θ的梯度是:
学术海报
通过腾讯元宝,生成论文学术海报: