LLM的训练:RLHF及其替代方案
LLM Training: RLHF and Its Alternatives
-
原文
https://magazine.sebastianraschka.com/p/llm-training-rlhf-and-its-alternatives
这篇文章的作者是Sebastian Raschka博士发布于2023年9月10日的,考古一下
-
在讨论LLM 时,无论是在研究新闻还是教程中,我经常提到一种名为“基于人类反馈的强化学习”(RLHF)的流程。RLHF 是现代LLM 训练流程中不可或缺的一部分,因为它能够将人类偏好纳入优化环境,从而提升模型的实用性和安全性。
在本文中,我将逐步剖析 RLHF,为理解其核心思想和重要性提供参考。继上一篇关于 Llama 2 的 Ahead of AI 文章之后,本文还将比较 ChatGPT 和 Llama 2 实现 RLHF 的方式。
最后,对于那些想知道 RLHF 的相关性或必要性的人,我还添加了一个部分来重点介绍最新的替代方案——我打算定期更新此部分。
简而言之,本文的目录如下:
- 标准的 LLM 训练流程
- 基于人类反馈的强化学习(RLHF)
- Llama2中的RLHF
- RLHF 替代品
The Canonical LLM Training Pipeline
-
现代基于 Transformer 的 LLM(例如 ChatGPT 或 Llama 2)需要经过 3 步训练程序:
- Pretraining(预训练)
- SFT(有监督微调)
- Alignment(对齐)
-
Pretraining:
首先,在预训练阶段,模型从海量未标注的文本数据集中汲取知识。紧随其后的监督式微调(sft)会进一步完善这些模型,使其更好地遵循特定的instruction(指令)。最后,在aligment(对齐)阶段,LLM 会进行训练,使其能够更有效地、更安全地响应用户提示。请注意,此训练程基于 OpenAI 的 InstructGPT 论文 ,该论文详细介绍了 GPT-3 的流程。该流程被广泛认为是 ChatGPT 背后的方法。稍后,我们还将把此方法与 Meta AI 最新的 Llama 2 模型进行比较。
让我们从初始步骤预训练开始 ,如下所示。
预训练通常发生在包含数十亿到数万亿个 token 的庞大文本语料库上。在这种情况下,我们采用一个简单的下一个单词预测任务,让模型根据提供的文本预测下一个单词(或 token)。
如果你不熟悉这个下一个单词预测任务,你可能会喜欢我之前的文章《 Understanding Encoder And Decoder LLMs》
值得强调的一点是,这种预训练方法使我们能够利用大型未标记数据集。只要我们能够在不侵犯版权或无视创作者偏好的情况下使用数据,我们就可以访问大型数据集而无需手动标记。事实上,在这个预训练步骤中,“标签”是文本中的后续单词,它本身就是数据集的一部分(因此,这种预训练方法通常被称为自监督学习)。
-
SFT:
下一步是监督微调 ,如下图所示。监督微调阶段涉及另一轮下一个标记预测。然而,与之前的预训练阶段不同,我们现在处理的是指令-输出对,如上图所示。在这种情况下,指令是给予模型的输入(有时还会附带一个可选的输入文本,具体取决于任务)。输出表示期望的响应,类似于我们期望模型产生的响应。
为了提供一个具体的例子,让我们考虑以下指令-输出对:
- instruction:“写一首关于鹈鹕的打油诗。”
- output: “曾经有一只非常漂亮的鹈鹕……”
该模型以指令文本(“写一首关于鹈鹕的打油诗”)作为输入,并对输出文本(“曾经有一只鹈鹕如此美丽…”)进行next-token预测。
虽然两者都采用类似的next-token训练目标,但监督式微调通常使用的数据集比预训练小得多。这是因为它需要指令-输出对,而不仅仅是原始文本。要编译这样的数据集,人类(或其他高质量的llm)必须根据特定指令编写所需的输出,因此创建这样的数据集是一项艰巨的工作。
-
Alignment:
在这个监督微调阶段之后,还有另一个微调阶段,通常被称为“对齐”步骤,因为它的主要目标是使 LLM 与人类偏好保持一致。这就是 RLHF 发挥作用的地方。在接下来的部分中,我们将深入探讨 RLHF 的对齐步骤。然而,对于那些好奇它与预训练基础模型以及步骤 2 中监督微调模型的比较结果的人,我附上了一张来自 InstructGPT 论文的图表(上图),该论文推广了这一方法。
上图比较了经过监督微调(虚线)后的 175B GPT-3 模型与另一种方法。我们可以在图表底部看到基础 GPT-3 模型。
- 如果我们考虑prompting方法,即多次查询并每次选择最佳响应(“GPT-3 +prompting”),我们可以看到比基础模型(“GPT-3”)的性能有所提高,这是可以预料的。
- 在 GPT-3 基础模型上添加sft,使得性能(“GPT-3 +supervised finetuning”)甚至比“GPT-3 + prompting”更好。
- 然而,在sft和 RLHF(“GPT-3 + supervised FT + RLHF”)之后,GPT-3 模型可以获得最佳性能——图表顶部的两张图。(请注意,此图表顶部有两条线,因为研究人员尝试了两种不同的采样程序。)
下一节将更详细抵描述此RLHF步骤。
Reinforcement Learning with Human Feedback (RLHF)
-
上一节讨论了 ChatGPT 和 Llama-2-chat 等现代 LLM 背后的三步训练流程。本节将更详细地探讨微调阶段,重点关注 RLHF 部分。
RLHF pipeline 采用预训练模型并以监督方式对其进行微调(上一节中的步骤 2),并进一步使其与PPO(近端策略优化)保持一致(上一节中的步骤 3)。
为简单起见,我们将分三个步骤来研究 RLHF pipeline:
- RLHF 步骤 1:对预训练模型进行监督微调
- RLHF 步骤 2:创建奖励模型
- RLHF 步骤 3:通过PPO(近端策略优化)进行微调
-
RLHF 步骤 1
: 如下所示,RLHF 步骤 1(如下所示)是一个监督微调步骤,用于创建进一步 RLHF 微调的基础模型。在 RLHF 步骤 1 中,我们创建或采样提示(例如从数据库中),并要求人类撰写高质量的回复。然后,我们使用该数据集以监督方式微调预训练的基础模型。
请注意,RLHF 的第一步与上一节“规范的 LLM 训练流程”中的第二步类似。我再次列出它,因为它是 RLHF 不可或缺的一部分。
-
RLHF 步骤 2
:在 RLHF 步骤 2 中,我们使用来自监督微调的这个模型来创建奖励模型,如下所示。如上图所示,针对每个问题,我们会根据上一步创建的微调后的 LLM 生成 4 到 9 个答案。然后,参与者会根据自己的偏好对这些答案进行排序。虽然这个排序过程比较耗时,但与创建用于监督微调的数据集相比,它可能耗费更少的人力。这是因为对答案进行排序可能比编写答案更简单。
在编制包含这些排名的数据集后,我们可以设计一个奖励模型,该模型会在 RLHF 步骤 3 中的优化后续阶段输出奖励分数。该奖励模型通常源自在之前的监督微调步骤中创建的 LLM。我们将奖励模型称为 RM,将监督微调步骤中的 LLM 称为 SFT。
为了将 RLHF 步骤 1 中的模型转换为奖励模型,需要将其输出层(next-token分类层)替换为具有单个输出节点的回归层。
如果您有兴趣, 这里有一个简短的视频讲座,关于在我的深度学习基础课程第 4.5 单元中将分类模型更改为回归模型。 -
RLHF 步骤 3
: RLHF 流程的第三步是使用奖励 (RM) 模型对来自监督微调 (SFT) 的先前模型进行微调,如下图所示。在 RLHF 步骤 3(最后阶段)中,我们现在根据在 RLHF 步骤 2 中创建的奖励模型的奖励分数,使用近端策略优化 (PPO) 来更新 SFT 模型。
有关 PPO 的更多细节超出了本文的讨论范围,但感兴趣的读者可以在 InstructGPT 论文之前的这四篇论文中找到数学细节:
- (1) Asynchronous Methods for Deep Reinforcement Learning (2016) 引入了策略梯度方法,作为基于深度学习的强化学习中 Q 学习的替代方案。
- (2) Proximal Policy Optimization Algorithms (2017) 中提出了一种改进的基于近端策略的强化学习程序,该程序比上述原始策略优化算法更高效利用数据,并且具有更高的可扩展性。
- (3) Fine-Tuning Language Models from Human Preferences (2020)阐述了 PPO 的概念,并向预训练语言模型添加了奖励学习,包括 KL 正则化,以防止策略与自然语言偏差过大。
- (4) Learning to Summarize from Human Feedback (2020)介绍了流行的 RLHF 三步程序,该程序后来也在 InstructGPT 论文中使用 。
RLHF in Llama 2
-
在上一节中,我们研究了 OpenAI 的 InstructGPT 论文中描述的 RLHF 过程。该方法通常被认为是 ChatGPT 开发所采用的方法。但它与 Meta AI 最近的 Llama 2 模型相比如何呢 ?
Meta AI 也利用 RLHF 创建了 Llama-2-chat 模型。然而,这两种方法之间存在一些区别,我在下面的带注释的图中进行了突出显示。
综上所述,Llama-2-chat 在 RLHF 步骤 1 中对指令数据采用与 InstructGPT 相同的监督微调步骤 。然而,在 RLHF 步骤 2 中 ,会创建两个奖励模型,而不仅仅是一个。此外,Llama-2-chat 模型会经历多个阶段的演化,奖励模型会根据 Llama-2-chat 模型中出现的误差进行更新。此外,还增加了一个拒绝采样步骤。
Margin Loss
-
上述带注释的图中未显示的另一个区别与如何对模型响应进行排序以生成奖励模型有关。在之前讨论过的 RLHF PPO 标准 InstructGPT 方法中,研究人员收集了对 4-9 个输出进行排序的响应,并从中创建了“k 选 2”比较。
例如,如果人工标记员对四个响应 (A->D) 进行排序,例如 A < C < D < B,则会产生“4 选 2”= 6 个比较:
- A < C
- A < D
- A < B
- C < D
- C < B
- D < B
类似地,Llama 2 的数据集基于响应的二元比较,例如 A < B。但是,似乎每个人类标记者在每个标记轮次中只呈现 2 个响应(而不是 4-9 个响应)。
此外,新特性是,除了每个二进制排名之外,还会收集一个“边际”标签(范围从“明显更好(significantly better)”到“可忽略不计地更好( negligibly better)”),可以选择通过额外的边际参数在二进制排名损失中使用它来计算两个响应之间的差距。
而 InstructGPT 使用以下基于交叉熵的排名损失来训练奖励模型:
Lranking=−log(σ(rθ(x,yc)−rθ(x,yr)))\mathcal{L}_{\text{ranking}} = -\log \left( \sigma \left( r_{\theta}(x, y_c) - r_{\theta}(x, y_r) \right) \right) Lranking=−log(σ(rθ(x,yc)−rθ(x,yr)))
Llama 2 将边际“m®”添加为偏好评级的离散函数,如下所示:
Lranking=−log(σ(rθ(x,yc)−rθ(x,yr)−m(r)))\mathcal{L}_{\text{ranking}} = -\log \left( \sigma \left( r_{\theta}(x, y_c) - r_{\theta}(x, y_r) - m(r) \right) \right) Lranking=−log(σ(rθ(x,yc)−rθ(x,yr)−m(r)))
其中:- r_θ(x,y) 是提示词 x 和生成的响应 y 的标量分数输出 ;
- θ 是模型权重;
- σ是逻辑 S 形函数,将层输出转换为从 0 到 1 的分数;
- y_c 是人类注释者选择的首选答案;
- y_r 是人类注释者选择的被拒绝的答案。
例如,通过“m(r)”返回更高的边际将使得首选响应和拒绝响应的奖励之间的差异更小,从而导致更大的损失,这反过来会导致更大的梯度,从而在策略梯度更新期间导致模型发生变化。
Two reward models
- 如前所述,Llama 2 中有两个奖励模型。一个奖励模型基于
有用性
,另一个基于安全性
。最终用于模型优化的奖励函数是两个分数的线性组合。
Rejection sampling
-
此外,Llama 2 的作者采用了一套训练流程,可以迭代生成多个 RLHF 模型(从 RLHF-V1 到 RLHF-V5)。他们没有仅仅依赖我们之前讨论过的基于 PPO 方法的 RLHF,而是采用了两种 RLHF 微调算法:PPO 和拒绝采样 。
在拒绝采样中,会绘制 K 个输出,并在优化步骤中选择具有最高奖励的输出进行梯度更新,如下所示。
拒绝采样的作用是选择每次迭代中奖励分数较高的样本。因此,与每次仅基于单个样本进行更新的 PPO 相比,该模型会使用奖励分数更高的样本进行微调。
在监督微调的初始阶段之后,模型将专门使用拒绝采样进行训练,然后再结合拒绝采样和 PPO。
研究人员绘制了 RLHF 阶段的模型性能图,结果表明 RLHF 微调模型在无害性(安全)和有用性轴上都有所改善。
请注意,研究人员在最后一步使用了 PPO,以此来跟进之前通过拒绝采样更新的模型。如上图中“RLHF-v5(启用 PPO)”和“RLHF-v5(未启用 PPO)”的对比所示,在最后阶段使用 PPO 训练的模型比仅使用拒绝采样训练的模型效果更好。( 我个人很想知道它与仅使用 PPO 进行微调且未使用拒绝采样的模型相比如何。 )
RLHF Alternatives
-
既然我们已经讨论并定义了 RLHF 流程,这是一个相当复杂的过程,人们可能会怀疑它是否值得这么费力。InstructGPT 和 Llama 2 论文中的先前图表(如下图所示)提供了证据,证明 RLHF 是值得的。
然而,许多正在进行的研究致力于开发更有效的替代方案。以下总结了一些最有趣的方法。
-
Constitutional AI: Harmlessness from AI Feedback (Dec 2022, https://arxiv.org/abs/2212.08073)
在这篇论文中,研究人员提出了一种基于人类提供的规则列表的自我训练机制。与前面提到的 InstructGPT 论文类似,该方法采用了强化学习方法。
研究人员在上图中使用的 “ 红队 ” 一词是指一种源于冷战军事演习的测试方法, 该术语最初是指一个团体扮演苏联的角色来测试美国的战略和防御措施。
在人工智能研究的网络安全背景下,“红队”一词现在用于描述外部或内部专家模拟潜在对手的过程,通过模仿现实世界攻击者的策略、技术和程序来挑战、测试并最终改进给定的感兴趣的系统。
-
The Wisdom of Hindsight Makes Language Models Better Instruction Followers (Feb 2023, https://arxiv.org/abs/2302.05206)
The Wisdom of Hindsight 使语言模型更胜一筹。Instruction Followers表明,监督式 LLM 微调方法确实效果显著。本文,研究人员提出了一种基于重新标记的监督式微调方法,其在 12 项 BigBench 任务上的表现优于 RLHF。
所提出的 HIR(Hindsight Instruction Labeling)是如何工作的?简而言之,HIR 方法包含两个步骤:采样和训练。在采样步骤中,提示和指令被输入到 LLM 以收集响应。基于对齐分数,在训练阶段,指令会在适当的位置重新标记。然后,使用重新标记的指令和原始提示来微调 LLM。通过这种重新标记方法,研究人员可以有效地将失败案例(LLM 创建的输出与原始指令不匹配的情况)转化为有用的监督学习训练数据。
请注意,这项研究与 InstructGPT 中的 RLHF 工作无法直接比较,因为它似乎使用了启发式方法(“然而,由于大多数人为反馈数据难以收集,我们采用了脚本化的反馈功能……”)。不过,HIR 后见之明方法的结果仍然非常引人注目。
-
Direct Preference Optimization: Your Language Model is Secretly a Reward Model (https://arxiv.org/abs/2305.18290, May 2023)
直接偏好优化 (DPO) 是使用 PPO 的 RLHF 的替代方案,研究人员证明,RLHF 中用于拟合奖励模型的交叉熵损失可以直接用于微调 LLM。根据他们的基准测试,使用 DPO 效率更高,而且在响应质量方面通常也优于 RLHF/PPO。
- Contrastive Preference Learning: Learning from Human Feedback without RL (Oct 2023, https://arxiv.org/abs/2310.13639)
与直接偏好优化 (DPO) 类似,对比偏好学习 (CPL) 是一种通过消除奖励模型学习来简化 RLHF 的方法。与 DPO 类似,CPL 使用监督学习目标,具体来说,是对比损失。(在论文附录中,作者指出 DPO 是 CPL 的一个特例。)虽然实验基于机器人环境,但 CPL 也可以应用于 LLM 微调。
-
Reinforced Self-Training (ReST) for Language Modeling (Aug 2023, https://arxiv.org/abs/2308.08998)
ReST 是强化学习与人类反馈 (RLHF) 的替代方案,它将 LLM 与人类偏好相结合。ReST 使用采样方法来创建改进的数据集,并在越来越高质量的子集上进行迭代训练,以完善其奖励函数。作者指出,ReST 通过离线生成训练数据集,实现了比标准在线 RLHF 方法(例如带有近端策略优化 (PPO) 的 RLHF)更高的效率,但目前尚缺乏与 InstructGPT 或 Llama 2 中使用的标准 RLHF PPO 方法的全面比较。
-
RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback (Sep 2023, https://arxiv.org/abs/2309.00267)
近期的人工智能反馈强化学习 (RLAIF) 研究表明,RLHF 中奖励模型训练的评分并非必须由人类提供,而可以由 LLM(此处为 PaLM 2)生成。相比传统的 RLHF 模型,人类评估者有一半的时间更喜欢 RLAIF 模型,这意味着他们实际上并不会偏爱其中任何一个模型。
另外一个有趣的附注是,RLHF 和 RLAIF 的表现都远远优于纯粹通过监督指令微调训练的模型。
这项研究的结果非常有用且引人入胜,因为它意味着我们或许能够使基于 RLHF 的训练更加高效且易于理解。然而,这些 RLAIF 模型在关注信息内容安全性和真实性的定性研究中的表现如何,仍有待观察,因为人类偏好研究仅部分涵盖了这些信息内容的安全性和真实性。
Final Remarks
-
这些替代方案在实践中是否有价值还有待观察,因为目前还没有真正的竞争对手可以与没有使用 RLHF 进行训练的 Llama 2 和 Code Llama 规模的模型相媲美。
此外,如果您尝试过其中任何一种方法,或者偶然发现了其他有希望的方法,我很乐意听听!