阅读原文

https://github.com/huggingface/blog/blob/main/rlhf.md

在过去的几年里,语言模型通过从人类输入提示生成多样化和引人注目的文本,展示了令人印象深刻的能力。然而,使“好”文本本质上很难定义,因为它是主观和上下文依赖的。有很多应用程序,例如写你想要创造力的故事,应该真实的信息文本,或者我们希望可执行的代码片段。

编写丢失函数来捕获这些属性似乎难以理解,大多数语言模型仍然使用简单的下一个令牌预测损失(例如交叉熵)进行训练。为了弥补损失本身的缺点,人们定义了旨在更好地捕捉人类偏好的指标,如BLEUROUGE。虽然这些指标比损失函数本身更适合测量性能,但只是将生成的文本与具有简单规则的引用进行比较,因此也是有限的。如果我们使用生成文本的人工反馈作为性能的衡量标准,或者更进一步,将该反馈用作优化模型的损失,这不是很好吗?这就是从人类反馈中加强学习(RLHF)的想法;使用强化学习的方法直接优化带有人类反馈的语言模型。RLHF使语言模型能够开始将训练在一般文本数据语料库上的模型与复杂的人类价值观模型对齐。

RLHF最近的成功是在ChatGPT中使用。鉴于ChatGPT令人印象深刻的能力,我们要求它为我们解释RLHF:

它做得出人意料地好,但并不能完全涵盖所有内容。我们会填补这些空白!

RLHF:让我们一步一步来

从人类反馈中强化学习(也从人类偏好中称为RL)是一个具有挑战性的概念,因为它涉及多模型培训过程和不同的部署阶段。在这篇博客文章中,我们将把培训过程分解为三个核心步骤:

  1. 预训练语言模型(LM),
  2. 收集数据并培训奖励模型,以及
  3. 通过强化学习微调LM。

首先,我们将看看语言模型是如何预先训练的。

预训练语言模型

作为起点,RLHF使用已经经过经典预训练目标预训练的语言模型(有关更多详细信息,请参阅此博客文章)。OpenAI在其第一个流行的RLHF模型InstructGPT上使用了较小版本的GPT-3。Anthropic使用为这项任务训练的1000万到520亿个参数的变压器模型。DeepMind使用他们的2800亿参数模型Gopher

这个初始模型也可以在附加文本或条件上进行微调,但不一定需要。例如,OpenAI对“首选”的人类生成文本进行了微调,Anthropic通过在上下文线索上提炼原始LM来生成RLHF的初始LM,以达到其“有帮助、诚实和无害”的标准。这些都是我所说的昂贵的增强数据来源,但这不是理解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使用LM和从10B到52B的奖励模型,DeepMind使用70B Chinchilla模型进行LM和奖励)。一个直觉是,这些偏好模型需要具有类似的能力来理解提供给它们的文本,就像模型生成所述文本所需的那样。

在RLHF系统的这一点上,我们有一个可用于生成文本的初始语言模型和一个偏好模型,该模型可以接收任何文本,并为其分配人类对它感知程度的分数。接下来,我们使用强化学习(RL)来优化与奖励模型有关的原始语言模型。

使用RL微调

长期以来,出于工程和算法原因,训练强化学习的语言模型是人们认为不可能的事情。多个组织似乎正在发挥作用,使用策略梯度RL算法近端策略优化(PPO)微调初始LM副本的部分或全部参数。LM的参数被冻结,因为微调整个10B或100B+参数模型的成本高得令人望而却步(更多,请参阅LM的低级适应(LoRA)或DeepMind的Sparrow LM)。PPO已经存在了相对较长的时间——有很多关于它如何工作的指南。这种方法的相对成熟使其成为扩展到RLHF分布式培训的新应用的有利选择。事实证明,许多用于RLHF的核心RL进展一直在研究如何用熟悉的算法更新如此大的模型(稍后会详细介绍)。

让我们首先将这个微调任务表述为RL问题。首先,该策略是一个语言模型,它接受提示并返回一系列文本(或只是文本上的概率分布)。该策略的操作空间是与语言模型的词汇表相对应的所有令牌(通常为5万个令牌的顺序),观察空间是可能的输入令牌序列,也相当大(词汇大小和输入令牌数量)。奖励函数是偏好模型和政策转变约束的结合。

奖励函数是系统将我们讨论的所有模型组合成一个RLHF过程的地方。给定一个提示x,来自数据集,生成两个文本,y1y2——一个来自初始语言模型,另一个来自当前微调策略的迭代。当前策略的文本传递给首选项模型,该模型返回“可偏好性”的标量概念,半径θ。此文本与初始模型中的文本进行比较,以计算它们之间差异的惩罚。在OpenAI、Anthropic和DeepMind的多篇论文中,这种惩罚被设计为这些令牌分布序列之间的Kullback-Leibler(KL)发散的缩放版本,半径吉隆坡。KL发散术语惩罚RL政策在每个训练批次中大幅偏离最初的预训练模型,这有助于确保模型输出合理一致的文本片段。没有这种惩罚,优化可以开始生成胡言乱语的文本,但会愚弄奖励模型来给予高回报。在实践中,吉隆坡发散是通过从两个分布中取样近似的(约翰·舒尔曼在这里解释)。发送到RL更新规则的最终奖励是半径=半径θ−λ半径吉隆坡

一些RLHF系统为奖励功能添加了额外的术语。例如,OpenAI通过将额外的训练前梯度(从人工注释集)混合到PPO的更新规则中,在InstructGPT上成功进行了实验。随着RLHF的进一步研究,该奖励函数的表述可能会继续发展。

最后,更新规则是PPO的参数更新,可以最大化当前数据批次中的奖励指标(PPO是策略,这意味着参数仅与当前批次提示生成对一起更新)。PPO是一种信任区域优化算法,它使用梯度约束来确保更新步骤不会破坏学习过程的稳定。DeepMind对Gopher使用了类似的奖励设置,但使用了同步优势演员-评论家(A2C)来优化渐变,渐变明显不同,但尚未在外部重现。

或者,RLHF可以从现在开始继续,迭代更新奖励模型和政策。随着RL策略的更新,用户可以继续将这些输出与模型的早期版本进行比较。大多数论文尚未讨论实施此操作,因为收集此类数据所需的部署模式仅适用于具有参与用户群访问权限的对话代理。Anthropic将此选项作为迭代在线RLHF(见原始论文),其中策略迭代包含在跨模型的ELO排名系统中。这介绍了政策和奖励模式演变的复杂动态,这是一个复杂而开放的研究问题。

RLHF的开源工具

第一个在LM上执行RLHF的代码来自2019年TensorFlow的OpenAI。

今天,PyTorch中已经有一些活跃的RLHF存储库就是从中发展出来的。主要存储库是变形金刚强化学习(TRL)、TRLX(最初是TRL的分支)和语言模型强化学习(RL4LM)。

TRL旨在使用PPO微调拥抱脸生态系统中的预训练LM。TRLX是由CarperAI构建的TRL扩展分支,用于处理用于在线和离线培训的大型模型。目前,TRLX有一个API,能够以LLM部署所需的规模(例如330亿个参数)使用PPO和隐式语言Q-Learning ILQL生产就绪的RLHF。未来版本的TRLX将允许高达200B参数的语言模型。因此,与TRLX的接口针对具有这种规模经验的机器学习工程师进行了优化。

RL4LMs为使用各种RL算法(PPO、NLPO、A2C和TRPO)、奖励函数和指标来微调和评估LLM提供了构建模块。此外,该库易于定制,允许在任何任意用户指定的奖励函数上训练任何编码器解码器或基于编码器变压器的LM。值得注意的是,它在最近工作中对广泛的任务进行了良好的测试和基准测试,这些任务涉及多达2000个实验,强调了关于数据预算比较(专家演示与奖励建模)、处理奖励黑客攻击和培训不稳定性等方面的几个实用见解。RL4LM目前的计划包括大型模型和新RL算法的分布式训练。

TRLX和RL4LM都在进行重大的进一步开发,因此预计很快就会有更多功能。

Hub上有一个由Anthropic创建的大型数据集

RLHF的下一步是什么?

虽然这些技术非常有前途和影响力,并引起了人工智能最大研究实验室的注意,但仍然有明显的局限性。这些模型虽然更好,但仍然可以在没有任何不确定性的情况下输出有害或事实不准确的文本。这种不完美性代表了RLHF的长期挑战和动力——在人类固有的问题领域运行意味着永远不会有明确的最后一行可以跨越,才能将模型标记为完整

当使用RLHF部署系统时,由于强制性和深思熟虑的人类组件,收集人类偏好数据相当昂贵。RLHF性能仅与其人类注释的质量一样好,人工注释有两种变体:人类生成的文本,例如在InstructGPT中微调初始LM,以及模型输出之间的人类偏好标签。

生成写得很好的人类文本来回答特定的提示非常昂贵,因为它通常需要雇用兼职员工(而不是能够依赖产品用户或众包)。谢天谢地,用于训练大多数RLHF应用的奖励模型的数据规模(~50k个标记偏好样本)没有那么昂贵。然而,它仍然高于学术实验室可能负担得起的成本。目前,在通用语言模型(来自Anthropic)上,只有一个大型RLHF数据集和几个较小规模的任务特定数据集(例如来自OpenAI的汇总数据)。RLHF数据的第二个挑战是,人类注释员经常会不同意,在没有基本真理的情况下为训练数据增加了巨大的潜在差异。

有了这些限制,大量未探索的设计选项仍然可以使RLHF取得重大进展。其中许多属于改进RL优化器的领域。PPO是一种相对较旧的算法,但没有结构原因表明其他算法可以在现有的RLHF工作流程上提供好处和排列。微调LM策略的反馈部分的一个巨大成本是,从政策生成的每个文本都需要在奖励模型上进行评估(因为它就像标准RL框架中环境的一部分)。为了避免大型模型的这些昂贵的远期通行证,离线RL可以用作策略优化器。最近,出现了新的算法,例如隐式语言Q学习(ILQL)[在CarperAI谈论ILQL],它们特别适合这种类型的优化。RL过程中的其他核心权衡,如勘探-开发平衡,也没有记录在案。探索这些方向至少可以深入了解RLHF如何运作,如果没有,可以提高性能。