图解人类反馈强化学习 (RLHF)
本文已翻译成中文简体中文和越南语đọc tiếng việt.
在过去几年中,语言模型通过从人类输入提示生成多样且引人入胜的文本,展示了令人印象深刻的能力。然而,如何定义“好”的文本本身就很难,因为它具有主观性且依赖于上下文。在许多应用中,例如编写故事时,您需要创造力;在信息性文本中,您需要真实性;在代码片段中,您希望它们是可执行的。
编写一个损失函数来捕捉这些属性似乎难以实现,并且大多数语言模型仍然使用简单的下一个token预测损失(例如交叉熵)进行训练。为了弥补损失本身的缺点,人们定义了旨在更好地捕捉人类偏好的指标,例如BLEU或ROUGE。虽然这些指标比损失函数本身更适合衡量性能,但它们只是通过简单的规则将生成的文本与参考文本进行比较,因此也受到限制。如果我们能将生成的文本的人类反馈作为性能衡量标准,甚至更进一步,将这些反馈作为优化模型的损失,那不是很好吗?这就是人类反馈强化学习 (RLHF) 的理念:使用强化学习的方法,通过人类反馈直接优化语言模型。RLHF 使语言模型开始将经过通用文本数据语料库训练的模型与复杂的人类价值观对齐。
RLHF 最近的成功是其在 ChatGPT 中的应用。鉴于 ChatGPT 令人印象深刻的能力,我们请它为我们解释 RLHF
它表现得非常好,但并没有完全涵盖所有内容。我们会填补这些空白!
RLHF:让我们一步一步来
来自人类反馈的强化学习(也称为来自人类偏好的强化学习)是一个具有挑战性的概念,因为它涉及多模型训练过程和不同的部署阶段。在本篇博客文章中,我们将训练过程分解为三个核心步骤
- 预训练语言模型 (LM),
- 收集数据并训练奖励模型,以及
- 使用强化学习微调 LM。
首先,我们将了解语言模型是如何预训练的。
预训练语言模型
作为起点,RLHF 使用了一个已经通过经典预训练目标进行预训练的语言模型(更多细节请参阅这篇博客文章)。OpenAI 将 GPT-3 的一个较小版本用于其第一个流行的 RLHF 模型,即 InstructGPT。Anthropic 在其共享的论文中使用了从1000万到520亿参数的 Transformer 模型进行此任务的训练。DeepMind 已记录使用其多达2800亿参数的模型 Gopher。这些公司很可能在其基于 RLHF 的产品中使用更大的模型。
这个初始模型*也可以*在额外的文本或条件下进行微调,但并非必需。例如,OpenAI 对“更受欢迎”的人工生成文本进行微调,而 Anthropic 通过将原始 LM 在其“有益、诚实和无害”标准上的上下文线索进行蒸馏,为 RLHF 生成了初始 LM。这些都是我们所说的昂贵、*增强*数据来源,但这不是理解 RLHF 所需的技术。RLHF 过程的核心是拥有一个*能很好地响应各种指令的模型*。
总的来说,关于“哪个模型”最适合作为 RLHF 的起点,目前还没有明确的答案。这将在本博客中成为一个常见主题——RLHF 训练中的选项设计空间尚未被彻底探索。
接下来,有了语言模型后,需要生成数据来训练一个**奖励模型**,这是将人类偏好整合到系统中的方式。
奖励模型训练
生成一个与人类偏好校准的奖励模型(RM,也称为偏好模型)是 RLHF 相对较新的研究开始的地方。其根本目标是获得一个模型或系统,该模型或系统接收文本序列,并返回一个标量奖励,该奖励应以数字形式表示人类偏好。该系统可以是端到端 LM,也可以是输出奖励的模块化系统(例如,模型对输出进行排名,然后将排名转换为奖励)。输出是**标量奖励**对于现有 RL 算法在 RLHF 过程后期无缝集成至关重要。
用于奖励建模的这些 LM 既可以是另一个微调过的 LM,也可以是完全从偏好数据训练的 LM。例如,Anthropic 在预训练(偏好模型预训练,PMP)之后使用了一种特殊的微调方法来初始化这些模型,因为他们发现它比微调的样本效率更高,但没有哪个基础模型被认为是奖励模型的最佳选择。
用于奖励模型(RM)的提示-生成对训练数据集是通过从预定义数据集中采样一组提示生成的(Anthropic 主要使用 Amazon Mechanical Turk 上的聊天工具生成的数据在 Hub 上可用,OpenAI 使用用户提交给 GPT API 的提示)。这些提示通过初始语言模型生成新文本。
人工标注员用于对 LM 生成的文本输出进行排名。最初可能会认为人类应该直接对每段文本应用一个标量分数以生成奖励模型,但这在实践中很难做到。人类的不同价值观导致这些分数未校准且噪音大。相反,排名用于比较多个模型的输出并创建一个更好的正则化数据集。
文本排序有多种方法。一种成功的方法是让用户比较两个语言模型在相同提示条件下生成的文本。通过在面对面的比赛中比较模型输出,可以使用 Elo 系统生成模型和输出相互之间的排名。这些不同的排序方法被归一化为用于训练的标量奖励信号。
这个过程的一个有趣现象是,迄今为止成功的 RLHF 系统使用的奖励语言模型相对于文本生成(例如 OpenAI 175B LM,6B 奖励模型,Anthropic 使用 10B 到 52B 的 LM 和奖励模型,DeepMind 使用 70B Chinchilla 模型作为 LM 和奖励)大小不同。直觉上会认为这些偏好模型需要具有与生成文本的模型相似的容量才能理解给定它们的文本。
在 RLHF 系统的这个阶段,我们有一个可以生成文本的初始语言模型,以及一个接收任何文本并为其分配人类感知评分的偏好模型。接下来,我们使用**强化学习 (RL)** 来优化原始语言模型,使其符合奖励模型。
使用 RL 进行微调
长期以来,由于工程和算法原因,人们一直认为用强化学习训练语言模型是不可能的。现在多个组织似乎已经成功地利用策略梯度强化学习算法——近端策略优化 (PPO)——来微调**初始 LM 的副本**的部分或全部参数。LM 的一些参数被冻结,因为微调整个 10B 或 100B+ 参数模型成本过高(更多信息请参阅用于 LM 的低秩适应 (LoRA) 或 DeepMind 的 Sparrow LM)——具体取决于所使用的模型规模和基础设施。关于冻结多少参数或是否冻结参数的确切动态被认为是一个开放的研究问题。PPO 已经存在了相当长的时间——有大量关于其工作原理的指南。这种方法的相对成熟使其成为扩展到 RLHF 分布式训练新应用的有利选择。事实证明,RLHF 的许多核心 RL 进步都集中在如何使用熟悉的算法更新如此庞大的模型(稍后会详细介绍)。
让我们首先将这个微调任务表述为一个 RL 问题。首先,**策略**是一个语言模型,它接收一个提示并返回一个文本序列(或仅是文本的概率分布)。这个策略的**动作空间**是与语言模型词汇表对应的所有 token(通常是 5 万个 token 左右),而**观察空间**是可能的输入 token 序列的分布,这在之前的 RL 应用中也相当大(维度大约是词汇表大小的^输入 token 序列的长度)。**奖励函数**是偏好模型和策略转移约束的组合。
奖励函数是系统将我们讨论过的所有模型组合成一个 RLHF 过程的地方。给定数据集中的一个提示 *x*,由当前迭代的微调策略生成文本 *y*。该文本与原始提示连接起来,传递给偏好模型,该模型返回一个标量值“偏好度”,。此外,将 RL 策略的每个 token 概率分布与初始模型的概率分布进行比较,以计算它们之间差异的惩罚。在 OpenAI、Anthropic 和 DeepMind 的多篇论文中,这种惩罚被设计为这些 token 序列分布之间的 Kullback-Leibler (KL) 散度的缩放版本,。KL 散度项惩罚 RL 策略在每个训练批次中大幅偏离初始预训练模型,这有助于确保模型输出的文本片段合理连贯。如果没有这种惩罚,优化可能会开始生成乱码但能欺骗奖励模型给出高奖励的文本。在实践中,KL 散度通过从两个分布中采样来近似(John Schulman 此处解释)。发送给 RL 更新规则的最终奖励是 。
一些 RLHF 系统在奖励函数中添加了额外的项。例如,OpenAI 成功地在 InstructGPT 上进行了实验,通过将额外的预训练梯度(来自人工标注集)混合到 PPO 的更新规则中。随着 RLHF 的进一步研究,这种奖励函数的表述可能会继续发展。
最后,**更新规则**是 PPO 的参数更新,它最大限度地提高了当前批次数据中的奖励指标(PPO 是在线策略,这意味着参数只用当前批次的提示-生成对进行更新)。PPO 是一种信任区域优化算法,它对梯度施加约束,以确保更新步骤不会破坏学习过程的稳定性。DeepMind 对 Gopher 使用了类似的奖励设置,但使用了同步优势演员-评论家 (A2C) 来优化梯度,这明显不同但尚未在外部复现。
技术细节提示:上图看起来两个模型对同一提示生成了不同的响应,但实际发生的是 RL 策略生成文本,然后将该文本输入到初始模型中,以生成其用于 KL 惩罚的相对概率。在训练过程中,初始模型不受梯度更新的影响.
此外,RLHF 可以从这个阶段继续,通过迭代更新奖励模型和策略。随着 RL 策略的更新,用户可以继续对这些输出与模型早期版本进行排名。大多数论文尚未讨论如何实现此操作,因为收集此类数据所需的部署模式仅适用于拥有活跃用户群的对话代理。Anthropic 将此选项称为*迭代在线 RLHF*(参见原始论文),其中策略的迭代包含在模型之间的 ELO 排名系统中。这引入了策略和奖励模型演变的复杂动态,这是一个复杂且开放的研究问题。
RLHF 的开源工具
OpenAI 于 2019 年发布了第一个在 TensorFlow 中执行 RLHF on LMs 的代码。
如今,PyTorch 中已经有一些活跃的 RLHF 存储库,它们是从此发展而来的。主要的存储库是 Transformers Reinforcement Learning (TRL)、起源于 TRL 分支的 TRLX 以及 Reinforcement Learning for Language models (RL4LMs)。
TRL 旨在用 PPO 微调 Hugging Face 生态系统中的预训练 LM。TRLX 是 CarperAI 构建的 TRL 的扩展分支,用于处理更大的模型进行在线和离线训练。目前,TRLX 拥有能够以 LLM 部署所需规模(例如 330 亿参数)进行生产就绪的 RLHF,并支持 PPO 和隐式语言 Q-学习 (ILQL)。TRLX 的未来版本将支持高达 2000 亿参数的语言模型。因此,TRLX 的接口针对具有此规模经验的机器学习工程师进行了优化。
RL4LMs 提供了使用各种 RL 算法(PPO、NLPO、A2C 和 TRPO)、奖励函数和指标来微调和评估 LLM 的构建块。此外,该库易于定制,允许在任何用户指定的任意奖励函数上训练任何编码器-解码器或编码器 transformer 基础 LM。值得注意的是,它在最近的工作中经过了广泛测试和基准测试,实验数量高达 2000 个,突出了数据预算比较(专家演示与奖励建模)、处理奖励作弊和训练不稳定性等方面的几个实用见解。RL4LMs 当前的计划包括更大模型的分布式训练和新的 RL 算法。
TRLX 和 RL4LMs 都在积极开发中,因此预计很快会有更多新功能。
Anthropic 在 Hub 上提供了一个大型数据集。
RLHF 的下一步是什么?
尽管这些技术极具前景和影响力,并引起了人工智能领域最大研究实验室的关注,但仍然存在明显的局限性。这些模型虽然有所改进,但在没有任何不确定性的情况下,仍然可能输出有害或事实不准确的文本。这种不完善性代表了 RLHF 的长期挑战和动力——在固有人类问题领域中运作意味着模型永远不会有一个明确的最终界限来被标记为*完成*。
当部署一个使用 RLHF 的系统时,由于训练循环之外的人工参与者的直接整合,收集人类偏好数据非常昂贵。RLHF 的性能只取决于其人工标注的质量,这包括两种类型:人工生成的文本,例如在 InstructGPT 中微调初始 LM;以及模型输出之间人类偏好的标签。
生成回答特定提示的优质人工文本非常昂贵,因为它通常需要雇佣兼职人员(而不是依赖产品用户或众包)。值得庆幸的是,大多数 RLHF 应用中用于训练奖励模型的数据规模(约 5 万个标注偏好样本)并不那么昂贵。然而,它仍然比学术实验室可能承受的成本要高。目前,只有一个大型通用语言模型 RLHF 数据集(来自 Anthropic),以及几个较小的特定任务数据集(例如来自 OpenAI 的摘要数据)。RLHF 数据的第二个挑战是人工标注员经常意见不一,这在没有真实值的情况下给训练数据带来了巨大的潜在方差。
尽管存在这些限制,但仍有大量未探索的设计选项可以使 RLHF 取得实质性进展。其中许多属于改进 RL 优化器的领域。PPO 是一种相对较旧的算法,但没有结构性原因表明其他算法无法为现有 RLHF 工作流程提供优势和变体。微调 LM 策略的反馈部分的一个巨大成本是策略生成的每个文本片段都需要在奖励模型上进行评估(因为它在标准 RL 框架中充当环境的一部分)。为了避免大型模型这些昂贵的前向传播,可以使用离线 RL 作为策略优化器。最近,出现了新的算法,例如隐式语言 Q-学习 (ILQL) [CarperAI 上关于 ILQL 的讲座],这些算法特别适合这种优化类型。RL 过程中的其他核心权衡,例如探索-利用平衡,也尚未得到记录。探索这些方向至少会深入理解 RLHF 的功能,如果不能,则会提供改进的性能。
我们于 2022 年 12 月 13 日星期二举办了一场讲座,对本文进行了扩展;您可以在此处观看!
延伸阅读
以下是迄今为止关于 RLHF 最流行的论文列表。该领域随着深度强化学习的兴起(大约在 2017 年)而受到广泛关注,并已发展成为许多大型科技公司对 LLM 应用的更广泛研究。以下是一些早于关注 LM 的 RLHF 论文
- TAMER:通过评估强化手动训练智能体 (Knox and Stone 2008):提出了一种学习型智能体,人类通过迭代提供行动得分来学习奖励模型。
- 基于策略的人类反馈交互学习 (MacGlashan et al. 2017):提出了一种演员-评论家算法 COACH,其中人类反馈(包括积极和消极)用于调整优势函数。
- 从人类偏好进行深度强化学习 (Christiano et al. 2017):RLHF 应用于 Atari 轨迹之间的偏好。
- 深度TAMER:在高维状态空间中的交互式智能体塑造 (Warnell et al. 2018):扩展了TAMER框架,其中使用深度神经网络来建模奖励预测。
- 基于偏好的强化学习方法综述 (Wirth et al. 2017):总结了上述努力以及更多参考文献。
以下是展示 RLHF 对 LM 性能的“关键”论文不断增长的快照
- 根据人类偏好微调语言模型 (Zieglar et al. 2019):一篇早期研究奖励学习对四个特定任务影响的论文。
- 通过人类反馈学习摘要 (Stiennon et al., 2020):RLHF 应用于文本摘要任务。此外,通过人类反馈递归摘要书籍 (OpenAI Alignment Team 2021),后续工作是摘要书籍。
- WebGPT:浏览器辅助问答与人类反馈 (OpenAI, 2021):使用 RLHF 训练代理导航网页。
- InstructGPT:训练语言模型以遵循人类反馈指令 (OpenAI Alignment Team 2022):RLHF 应用于通用语言模型[InstructGPT 博客文章]。
- GopherCite:教语言模型用已验证的引用支持答案 (Menick et al. 2022):用 RLHF 训练 LM 以返回带有特定引用的答案。
- Sparrow:通过有针对性的人工判断提高对话代理的对齐程度 (Glaese et al. 2022):使用 RLHF 微调对话代理。
- ChatGPT:优化对话语言模型 (OpenAI 2022):使用 RLHF 训练语言模型,使其适合用作通用聊天机器人。
- 奖励模型过优化的缩放法则 (Gao et al. 2022):研究 RLHF 中学习到的偏好模型的缩放特性。
- 通过人类反馈强化学习训练有益且无害的助手 (Anthropic, 2022):详细记录了使用 RLHF 训练 LM 助手的过程。
- 对语言模型进行红队测试以减少危害:方法、扩展行为和经验教训 (Ganguli et al. 2022):详细记录了旨在“发现、衡量并尝试减少[语言模型]潜在有害输出”的努力。
- 使用强化学习进行开放式对话中的动态规划 (Cohen et al. 2022):使用 RL 增强开放式对话代理的对话技能。
- 强化学习是否(不)适用于自然语言处理?:自然语言策略优化的基准、基线和构建块 (Ramamurthy and Ammanabrolu et al. 2022):讨论了 RLHF 中开源工具的设计空间,并提出了一种新的算法 NLPO (自然语言策略优化) 作为 PPO 的替代方案。
- Llama 2 (Touvron et al. 2023):具有大量 RLHF 细节的重要开放访问模型。
该领域是多个领域的融合,因此您也可以在其他领域找到资源
- 指令的持续学习(Kojima et al. 2021,Suhr and Artzi 2022)或来自用户反馈的 Bandit 学习(Sokolov et al. 2016,Gao et al. 2022)
- 早期关于使用其他 RL 算法进行文本生成(并非所有都带有偏好)的历史,例如使用循环神经网络(Ranzato et al. 2015),用于文本预测的演员-评论家算法(Bahdanau et al. 2016),或早期将人类偏好添加到此框架的工作(Nguyen et al. 2017)。
**引用:** 如果您发现本文对您的学术工作有帮助,请考虑在文本中引用我们的工作
Lambert, et al., "Illustrating Reinforcement Learning from Human Feedback (RLHF)", Hugging Face Blog, 2022.
BibTeX 引用
@article{lambert2022illustrating,
author = {Lambert, Nathan and Castricato, Louis and von Werra, Leandro and Havrilla, Alex},
title = {Illustrating Reinforcement Learning from Human Feedback (RLHF)},
journal = {Hugging Face Blog},
year = {2022},
note = {https://huggingface.co/blog/rlhf},
}
感谢 Robert Kirk 修正了 RLHF 具体实现的一些事实错误。感谢 Stas Bekman 修正了一些打字错误或令人困惑的短语。感谢 Peter Stone、Khanh X. Nguyen 和 Yoav Artzi 帮助进一步扩展了相关工作的历史。感谢 Igor Kotenkov 指出 RLHF 过程、其图表和文本描述中 KL 惩罚项的技术错误。