简介
这是一系列关于人类反馈强化学习替代方案的博客文章,由 Argilla 和 MantisNLP 团队联合创作。请确保您已阅读过本系列中的 第一篇、 第二篇、 第三篇、 第四篇、 第五篇、 第六篇、 第七篇、 第八篇 和 第九篇 文章,以充分理解上下文和讨论的进展,然后再继续阅读本文。
在我们之前的博客文章中,我们深入研究了各种偏好对齐算法,其中许多算法都显示出了可喜的结果。然而,一个关键问题出现了:我们如何为我们的特定需求选择最合适的算法?鉴于大多数研究中的评估都以 RLHF 和 DPO 为基准,这篇博文旨在通过并排比较,全面分析之前讨论的所有算法,考察它们的不同属性、优点和缺点。
简要回顾
在深入比较之前,让我们简要回顾一下我们迄今为止讨论过的偏好对齐算法
人类反馈强化学习 (RLHF)
在 LLM 的背景下,RLHF 是一种范式,其中智能体通过接收评审员的人工反馈来学习做出决策,评审员评估和评级模型的响应。通过利用人类的专业知识和判断,强化学习有助于迭代改进模型的性能并微调其响应。
该过程从监督微调 (SFT) 开始,这是初始训练发生的地方。在此之后,训练奖励模型 (RM) 以评估 SFT 模型生成的响应,评估其准确性、相关性和对指南的遵守情况。与此同时,采用近端策略优化 (PPO) 进一步优化 SFT 模型,使用提示、响应和 RM 确定的奖励的组合。
直接偏好优化 (DPO)
论文:直接偏好优化:你的语言模型秘密地是一个奖励模型。Github 仓库此处。
DPO 通过使 LLM 与人类偏好对齐,而无需强化学习步骤,从而简化了 RLHF 引入的框架。它将约束奖励最大化问题视为人类偏好数据上的分类问题,直接将偏好损失定义为策略的函数。因此,DPO 采用了两步方法:在感兴趣的数据集上应用 SFT,并在使用偏好数据的 SFT 模型上运行偏好学习。
后见之明链 (CoH)
论文:后见之明链使语言模型与反馈对齐。Github 仓库此处。
后见之明链也摆脱了强化学习步骤。关键思想是,人类能够从比较形式的丰富而详细的反馈中学习,LLM 也是如此。因此,它通过将所有类型的反馈转换为句子序列,在对比信息形式的人类偏好数据上应用 SFT 和 PPO。
来自 AI 反馈的强化学习 (RLAIF)
论文:AI 反馈对齐大型语言模型的批判性评估。Github 仓库此处。
RLAIF 是一种新颖的方法,它通过利用 AI 反馈消除了对人类反馈的需求。在这个模式中,AI 助手融入了来自另一个 LLM 而不是来自人类的反馈,同时受到宪法(一套人为策划的原则,用于影响 AI 助手的行为)的指导。给定一个提示和对该提示的两个响应(在提示-响应元组中,复制提示),来自 AI 反馈的 RM 根据宪法为每对生成一个分数(介于 0 和 1 之间)。其余过程与 RLHF 类似。
自博弈微调 (SPIN)
论文:自博弈微调将弱语言模型转换为强语言模型。Github 仓库此处。
SPIN 融入了反馈,而无需依赖人类或 AI 反馈。其思想是,模型在没有直接监督的情况下与其以前的版本竞争,并创建自己的训练数据。通过连续几轮的自博弈,模型逐渐改进,旨在使其响应越来越接近类人响应。当最复杂的 LLM 版本不再能区分其前任生成的响应和人类生成的响应时,该过程结束。
身份偏好优化 (IPO)
论文:理解从人类偏好中学习的通用理论范式。Github 仓库此处。
IPO 优化偏好,而无需依赖奖励模型,并且在偏好是确定性的情况下,确保 KL 正则化的有效性。通过用恒等函数替换逻辑函数,IPO 直接优化偏好(从成对偏好而不是逻辑偏好中学习)。
卡尼曼-特沃斯基优化 (KTO)
论文:KTO:作为前景理论优化的模型对齐。Github 仓库此处。
基于卡尼曼和特沃斯基的前景理论,KTO 直接最大化生成的效用,而不是最大化偏好的对数似然性。它需要一个二元信号,指示输出是否可取,其工作原理是添加一个 KL 惩罚,如果模型以通用方式增加可取示例的奖励,则该惩罚会上升。这迫使模型学习是什么使输出可取,以便可以在保持 KL 平稳的同时增加奖励。
优势比偏好优化 (ORPO)
论文:ORPO:无参考模型的单体偏好优化。Github 仓库此处。
ORPO 将指令调优和偏好对齐结合在一个过程中,使其成为无参考模型且计算效率更高。它通过使用基于优势比的损失来惩罚不良响应,并结合传统的负对数似然损失 (NLL) 来创建新的目标,从而使其能够区分有利响应和不利响应。
联合偏好优化 (DOVE)
论文:将坏苹果与好橙子进行比较:通过联合偏好优化对齐大型语言模型。Github 仓库此处。
DOVE 通过学习指令-响应对的偏好来对齐语言模型。它根据语言模型的指令的先验概率,调整首选响应相对于非首选响应的条件概率,以及校正因子
简单偏好优化 (SimPO)
论文:SimPO:使用无参考奖励的简单偏好优化。Github 仓库此处。
SimPO 旨在对齐奖励模型和生成模型,使其看起来更直观正确。它直接使用在奖励模型中指导生成的似然度指标,并在 Bradley-Terry 目标中添加目标奖励边际。
输入数据是什么样的?
大多数提到的方法都遵循两个定义的阶段:指令调优和偏好对齐。第一个阶段意味着 SFT,需要指令数据,即包含指令和响应的数据集。第二个阶段需要偏好数据,这是一组针对提示的备选方案集合,由人工注释员从最佳到最差进行评级。然后,这些排名响应通常组织成选择/拒绝对,例如 A > B > C > D 将创建以下对 (A > B)、(A > C)、(A > D)、(B > C)、(B > D)。PPO、DPO、IPO、ORPO 和 SimPO 就是这种情况。
指令 | 响应 |
人类:你如何在花盆里种植土豆? | 助手:这取决于情况。你是在土壤混合物中种植种子吗?还是将活土豆放入花盆中? |
人类:格林·约翰斯是谁? | 助手:他是一位英国音乐家,曾担任录音工程师和唱片制作人。 |
提示 | 已选择 | 已拒绝 |
人类:你如何在花盆里种植土豆? | 助手:这取决于情况。你是在土壤混合物中种植种子吗?还是将活土豆放入花盆中? | 助手:你想让我解释如何在花盆里种植土豆,还是给你种植说明? |
人类:格林·约翰斯是谁? | 助手:他是一位英国音乐家,曾担任录音工程师和唱片制作人。 | 助手:哦,这是一个奇怪的问题。老实说,我不知道,谷歌也无法回答。但我会解释发生了什么,以及我为什么不知道。 |
对于 DOVE,它不是基于相同的指令比较响应,而是比较指令-响应对。
已选择 | 已拒绝 |
人类:你如何在花盆里种植土豆?助手:这取决于情况。你是在土壤混合物中种植种子吗?还是将活土豆放入花盆中? | 人类:格林·约翰斯是谁?助手:他是一位英国音乐家,曾担任录音工程师和唱片制作人。 |
人类:什么是动词?助手:动词是描述活动的动作词。 | 人类:什么是 REST API?助手:在实践中,大多数 REST API 都使用基于 HTTP 的 JSON。REST API 具有使其非常流行的几个属性。 |
然而,为对齐算法准备偏好数据可能具有挑战性。因此,一些方法自主生成自己的偏好数据,以增强整个 RL 过程中的对齐,从而允许持续改进模型与期望结果的对齐,而无需大量预先存在的人类偏好数据集。SPIN 就是这种情况。最初,它仅依赖于高质量的指令数据集,其中完成列被视为真实/已选择,并且新生成/已拒绝在每次迭代中由模型生成,以获得偏好数据集(您可以查看一些示例此处)。另一方面,RLAIF 直接使用提示和可能的响应(先前生成或由同一 LLM 生成)作为输入,没有任何标记,因为 LLM 负责标记它们以馈送到奖励模型。
就 KTO 而言,虽然它已被证明可以从偏好数据中获益,但其主要优势在于它不需要偏好数据。相反,它可以处理二元信号数据,即,如果指令有用或可接受,则每个注释都包含正信号 (+1),如果不可用或不可接受,则包含负信号 (-1)。这样,KTO 还避免了对配对平衡数据集的需求,因为它能够处理例如 1:10 的理想:不理想比率。
提示 | 标签 |
人类:你如何在花盆里种植土豆?助手:这取决于情况。你是在土壤混合物中种植种子吗?还是将活土豆放入花盆中? | 👍 |
人类:你如何在花盆里种植土豆?助手:你想让我解释如何在花盆里种植土豆,还是给你种植说明? | 👎 |
人类:格林·约翰斯是谁?助手:他是一位英国音乐家,曾担任录音工程师和唱片制作人。 | 👍 |
人类:格林·约翰斯是谁?助手:哦,这是一个奇怪的问题。老实说,我不知道,谷歌也无法回答。但我会解释发生了什么,以及我为什么不知道。 | 👎 |
对于 CoH,输入数据是单个序列,其中包含模型输出以及有关其正确性的反馈,类似于一个人如何解释一个答案比另一个答案更可取。
用户:你如何在花盆里种植土豆?有用的答案:这取决于情况。你是在土壤混合物中种植种子吗?还是将活土豆放入花盆中?无用的答案:你想让我解释如何在花盆里种植土豆,还是给你种植说明? |
用户:格林·约翰斯是谁?这个答案“他是一位英国音乐家,曾担任录音工程师和唱片制作人”比这个答案“哦,这是一个奇怪的问题。老实说,我不知道,谷歌也无法回答。但我会解释发生了什么,以及我为什么不知道”更好。 |
因此,正如之前的文章中提到的,许多偏好对齐方法需要高质量的人类偏好数据,而获取这些数据既耗时又成本高昂。相反,仅依赖于提示和响应的方法更容易获得,DOVE 使用提示-响应对对其进行排名,或者 KTO 不需要配对偏好数据,因此注释更顺畅。此外,为了重现类似的实验,我们可以使用与原始论文中相同的数据集,因为它们中的大多数都是公开可用的。
下表显示了实验期间使用的数据集及其原始大小。正如我们所观察到的,Anthropic-HH 是最常见的且相对较大的数据集。总的来说,虽然单个数据集的大小大致相似,但当它们组合在一起时,其容量是巨大的,再次突显了获取大量精心策划的数据集的挑战。SPIN 的情况值得注意,因为大部分数据是在过程中生成的,因此初始数据大小很小。
数据集 | 大小 | |
---|---|---|
DPO |
Anthropic-HH(单轮对话) IMDB(受控情感生成) TL;DR(摘要) |
17 万 5 万 133 万 |
CoH | 组合 WebGPT Anthropic-HH 摘要 |
1.95 万 17 万 17.9 万 |
RLAIF | ShareGPT | 12.5 万 |
SPIN | Ultrachat200k | 仅使用 5 万 |
KTO | 组合 Anthropic-HH Oasst1 SHP |
17 万 8.44 万 34.9 万 |
ORPO |
Anthropic-HH UltraFeedback 二元化 |
17 万 6.2 万 |
DOVE |
Anthropic-HH TL;DR |
17 万 133 万 |
SimPO |
Ultrachat200K UltraFeedback 二元化 |
20 万 6.2 万 |
我们可以重现它们吗?
考虑到这些研究的重要性,重现它们并继续尝试这些方法至关重要。
在这种背景下,Transformer 强化学习是 Hugging Face 的一个开源库,提供了一个简单的框架,可以使用强化学习训练 Transformer 语言模型。截至撰写本文时,TRL 可用于 SFT、 RM、 PPO、 DPO、 IPO (通过在 DPOTrainer 中设置 loss_type="ipo"
)、 KTO 和 ORPO。 Axoltl 和 LLaMA-Factory 这两个用于微调 LLM 模型的工具也实现了 SFT、RM、PPO、DPO 和 ORPO。对于 SPIN,我们还发布了 distilabel-spin-dibt 仓库,其中包含使用 distilabel 重现实验的代码。在其他情况下,有用的代码和信息可以在回顾部分提到的原始仓库中找到,尽管当使用不同的数据集或基础模型时,这会稍微阻碍可重现性。
Hugging Face 的 对齐手册 也为我们提供了一些执行这些实验的方案,例如,宪法 AI 或 DPO、IPO 和 KTO 方法的比较,以及了解某些模型是如何训练的,例如 Zephyr-7b-beta、 Zephyr 7B Gemma 或 带有 ORPO 的 Zephyr-141B-A35B 的情况。
关于基础模型,最新的研究使用诸如 Mistral-7B 模型 (SPIN, KTO, SimPO)、Llama (RLAIF, KTO, ORPO, SimPO)、Phi-2 (ORPO) 或 OPT 模型 (CoH, ORPO) 等开放模型。这是非常令人鼓舞的,因为它使我们能够轻松地复制论文研究以进行验证甚至改进。但是,在 RLAIF 的情况下,它依赖于 GPT-3.5/4 或 claude-v1 这两个闭源模型来标记数据,这意味着需要一些投资才能使用它们的 API。
在我们这里,我们还对这些算法进行了研究和实验。使用 argilla 和 distilabel,我们生成了一些有意义的数据集来对齐模型。例如,您可以找到我们的数据集集合作为 DPO 或 ORPO 等的偏好数据(突出显示其中的一些,例如 ultrafeedback-binarized、 distilabel-orca 或 capybara-preferences), 为 KTO 准备的数据集 或 为 SPIN 准备的数据集。在此过程中,我们可以重申,精心策划的数据不仅可以提高结果,还可以减少数据集大小,而不会损害结果,甚至可能提高结果。SPIN 的复制就是这种情况,与原始论文中使用的 5 万个提示相比,仅使用了 1.8 千个提示(您可以在此处找到数据集和模型)。我们还可以在 ORPO 中观察到这一点,其中仅使用了 capybara 数据集的 7 千个实例来微调模型,使用 Zephyr 获得了可比较的结果,尽管我们仍将扩展实验。
指令调优、偏好调优,还是两者结合?
SFT 是 RLHF 的关键,因为大多数方法都依赖它来执行偏好对齐。然而,偏好调优的过程可能会有所不同,涉及多个步骤或统一在一个步骤中。在标准方法中,RLHF 需要三个步骤:SFT、RW 和 PPO。同样,RLAIF 也遵循相同的阶段,因为它虽然避免使用人工注释数据,但在标记后执行与 RLHF 相同的阶段。
因此,为了降低成本和时间,出现了新的方法,例如 DPO 或 CoH,它们将 RW 和 PPO 组合成一个步骤。紧随其后的是 IPO,以解决 DPO 过拟合问题,KTO 解决了对偏好数据的需求,从而产生了可比较的结果,或者 DOVE 改变了偏好数据的类型。SimPO 也加快了训练速度,因为它在其奖励模型中摆脱了参考策略。SPIN 也避免了奖励模型的实施,但是,即使结果很有希望,我们也应该注意到它需要多次迭代。
另一方面,ORPO 仅依赖于基础模型,因为偏好对齐是在 SFT 期间执行的,从而提高了计算效率并节省了资源。
AI 反馈:是还是否?
使用 AI 反馈可能是有益的,特别是如果我们想快速且相当准确地获得结果。RLAIF 就是这种情况,它直接使用 LLM 作为标记器,或者 SPIN 在其迭代期间生成自己的偏好数据,直到它无法区分真实情况和生成情况。
原始论文中报告的大多数实验都使用先前由人类注释和策划的数据集。但是,也有其他数据集,例如 WebGPT 或 UltraFeedback,它们是使用 AI 反馈生成的,即使在这些情况下,结果也很显著。正如 KTO 论文中提到的,人类和人工智能反馈都可能非常嘈杂且自相矛盾。
在这种背景下,使用 AI 反馈生成必要的偏好数据集现在是一种被广泛接受的做法,可以节省大量资源。但是,建议确保此类过程始终由人工监督,以保持质量和可靠性。
结论
正如我们所观察到的,没有一种单一的方法可以有效地解决所有方面的问题。每种方法都有其优点和缺点,并且它们的有效性在不同的场景中有所不同。因此,方法的适用性取决于手头的具体要求。然而,这仍然证明还有剩余的方面需要研究。
SFT | RW+PPPO | DPO | CoH | RLAIF | SPIN | IPO | KTO | ORPO | DOVE | SimPO | |
---|---|---|---|---|---|---|---|---|---|---|---|
数据格式 | 提示+已选择 | 提示+已选择+ 已拒绝 -> 提示+响应+奖励 | 提示+已选择+已拒绝 | prompt_chosen_rejected | 提示+已选择+已拒绝 | 提示+已选择 -> 提示+已选择+已拒绝 | 提示+已选择+已拒绝 | prompt_response+label | 提示+已选择+已拒绝 | chosen(prompt_response)+rejected(prompt_response) | 提示+已选择+已拒绝 |
数据要求(论文 | 其他) | 1 万 | 1 万 | 17 万 | 1.2 万 | 30 万 | 12.5 万 | 5 万 | 1.8 千 | - | 1.2 万 | 60 万 | 1.2 万 | 20 万 | 7 千 | 1.2 万 | 20 万 |
计算 | 中等 | 高 | 中等 | 中等 | 高 | 高 | 中等 | 中等 | 低 | 低 | 中等 | 低 |
实施 | TRL:SFT 训练器 | TRL:奖励训练器和PPO 训练器 | TRL:DPO 训练器 | 官方仓库 | 官方仓库 | 官方仓库 | TRL:用于 IPO 的 DPO 训练器 | TRL:KTO 训练器 | TRL:ORPO 训练器 | 官方仓库 | 官方仓库 |
AI 反馈 | 否 | 否 | 否 | 否 | 是 | 是 | 否 | 否 | 否 | 否 | 否 |
阶段 | 指令 | 偏好 | 偏好 | 偏好 | 指令+偏好 | 偏好 | 偏好 | 偏好 | 组合 | 组合 | 偏好 | 偏好 |
论文 | 使用人类反馈训练语言模型以遵循指令 | 使用人类反馈训练语言模型以遵循指令 | 直接偏好优化:你的语言模型秘密地是一个奖励模型 | 后见之明链使语言模型与反馈对齐 | AI 反馈对齐大型语言模型的批判性评估 | 自博弈微调将弱语言模型转换为强语言模型 | 理解从人类偏好中学习的通用理论范式 | KTO:作为前景理论优化的模型对齐 | ORPO:无参考模型的单体偏好优化 | 将坏苹果与好橙子进行比较:通过联合偏好优化对齐大型语言模型 | SimPO:使用无参考奖励的简单偏好优化 |
想了解更多?
这是专门介绍 RLHF 替代方案的系列博客文章的第七篇。本系列的第一篇、 第二篇、 第三篇、 第四篇、 第五篇、 第六篇、 第七篇、 第八篇、 第十篇 和 第十一篇 文章也可以在我们的网站上找到。
Argilla 和 Mantis NLP 团队很乐意解答您可能有的关于使用监督微调、强化学习或直接偏好优化训练 LLM 的准备步骤的任何问题。
Argilla 的 LLM 数据平台目前支持所有数据整理步骤,Mantis NLP 为整个过程提供端到端支持。