直接偏好优化(DPO)简介 原创
直接偏好优化(Direct Preference Optimization,DPO)已成为对大模型进行微调的基本方式。著名的 Mistral 公司开发的 Mixtral 8x7B 模型,即稀疏专家混合模型(Sparse Mixture of Experts),通过使用 DPO,能够以显著较少的参数达到 LLaMa 70B 级别的性能。自然而然地,这一成功促使社区中许多人开始使用 DPO 对自己的模型进行微调。
目标
一旦你将一个模型预训练得具有强大的生成能力,通常希望以某种方式控制其输出。无论是将其优化为在对话中作为聊天机器人回应,还是在代码中回应而不是用英语,这里的目标是获取一个已经功能齐全的 LLM,并找到一种更加有选择性地输出的方式。
术语
损失函数 — 用作我们优化模型性能的指南的函数。这是根据已被发现的有效性选择的。
KL 散度 — 指的是 Kullback-Leibler 散度,它是衡量两个连续概率分布之间差异的一种方法。要了解更多信息,可以参考 Aparna Dhinakaran 写的一篇关于此主题的精彩文章。
策略 — 描述神经网络将如何做出决策的抽象。换句话说,如果一个神经网络被训练了 3 次,每次它都会有一个不同的策略,你可以比较它们的性能。
DPO 之前的现状(PPO)
在 DPO 之前,我们通常不得不训练一个完全独立的模型来帮助我们进行微调,通常称为奖励模型或 RLHF 模型。我们会从我们的 LLM 中采样完成,并让奖励模型为每个完成度给出一个分数。这里的想法很简单。人类评估您的 LLM 输出是昂贵的,但您的 LLM 的质量最终将由人类决定。为了保持成本低廉且质量高,您将训练奖励模型来近似人类的反馈。
PPO背后的数学原理
为什么我们不希望它偏离太多?记住模型已经基本功能齐全,而且已经耗费了相当多的计算资源才达到这个水平。因此,我们希望确保模型保留许多当前具有的好特性,同时我们专注于让它更好地遵循指令。
尽管上述方法是有效的——例如,LLaMa2 就是以这种方式进行微调的——但它有一个主要缺点:它需要训练一个完全独立的模型,这是昂贵的并且需要大量额外的数据。
DPO如何改进这一点?
DPO完全消除了对奖励模型的需求!这使我们避免了训练昂贵的独立奖励模型,并且偶然地,我们发现DPO所需的数据量要少得多,就像PPO一样有效。
DPO背后的数学原理
主要的飞跃源于施加的KL约束。通过添加这个约束,我们实际上可以推导出最大化KL受限奖励模型的理想策略。代数如下所示:
这表明,您不需要奖励模型来优化策略以遵循人类偏好的理想概率分布。相反,您可以直接处理策略以改进它(这就是直接偏好优化名称的由来)。我们正在使用您的LLM为每个标记生成的概率来帮助它进行微调。
结论
首先,DPO不需要奖励模型! 您只需要高质量的数据,使得模型清楚地知道什么是好的,什么是坏的,并且它会不断改进。
其次,DPO是动态的。每次使用新数据时,它都会立即适应,这要归功于它找到正确方向的方式。与PPO相比,您每次有新数据都必须重新训练奖励模型,这是一个巨大的优势。
第三,DPO使您能够训练模型避免某些话题,正如它会学习为其他话题提供良好答案一样。对于新的损失方程,一种概念化的方法是将其视为指向正确方向的信号。通过同时使用好的和坏的示例,我们正在教导模型不仅要朝着某些响应方向前进,还要尽量避免其他响应方向。由于微调的一个很大部分涉及模型忽略某些主题,因此这个特性非常有价值。
译自(有删改):https://towardsdatascience.com/understanding-the-implications-of-direct-preference-optimization-a4bbd2d85841
本文转载自公众号AIGC最前线