Press "Enter" to skip to content

展示从人类反馈中的强化学习(RLHF)

这篇文章已经翻译成了简体中文和越南语。有兴趣翻译成其他语言吗?请联系nathan at huggingface.co。

近年来,语言模型通过生成多样且引人入胜的文本展现出了令人印象深刻的能力,这些文本是由人类输入提示生成的。然而,如何定义一个“好”的文本在本质上是困难的,因为它是主观的,也与上下文有关。有许多应用场景,例如写作故事时需要创造性,提供信息的文本应当真实,或者我们希望代码片段是可执行的。

设计一个能捕捉到这些特性的损失函数似乎是棘手的,大多数语言模型仍然使用简单的下一个标记预测损失(例如交叉熵)进行训练。为了弥补损失本身的不足,人们定义了一些度量标准,旨在更好地捕捉人类偏好,例如BLEU或ROUGE。虽然这些度量标准比损失函数本身更适合衡量性能,但它们只是简单地将生成的文本与参考文本进行比较,并且因此也存在局限性。如果我们将人类对生成文本的反馈作为性能度量,甚至进一步将该反馈作为损失来优化模型,岂不是很好?这就是人类反馈强化学习(RLHF)的概念;使用强化学习的方法直接优化语言模型并结合人类反馈。 RLHF使得语言模型能够开始将基于通用文本数据训练的模型与复杂的人类价值观对齐。

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

展示从人类反馈中的强化学习(RLHF) 四海 第1张

它的表现出人意料地好,但仍然有一些缺失。我们将填补这些空白!

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

  1. 预训练语言模型(LM),
  2. 收集数据并训练奖励模型,以及
  3. 使用强化学习对LM进行微调。

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

预训练语言模型

作为RLHF的起点,使用了已经通过经典预训练目标进行过预训练的语言模型(有关详细信息,请参阅此博文)。OpenAI在其首个受欢迎的RLHF模型InstructGPT中使用了较小版本的GPT-3。Anthropic使用了训练任务的变压器模型,参数规模从1000万到520亿。DeepMind使用了他们的2800亿参数模型Gopher。

这个初始模型也可以在额外的文本或条件上进行微调,但不一定需要。例如,OpenAI在人类生成的“可取”的文本上进行了微调,而Anthropic通过提取有关其“有益、诚实和无害”标准的上下文线索对其初始LM进行了蒸馏。这些都是我所指的昂贵的增强数据的来源,但了解RLHF并不需要这种技术。

总的来说,在RLHF的起点上“哪个模型”是最好的并没有一个明确的答案。这将是本博文中的一个常见主题-RLHF训练选项的设计空间尚未被充分探索。

接下来,使用语言模型,需要生成数据来训练一个奖励模型,这是将人类偏好融入系统的方式。

展示从人类反馈中的强化学习(RLHF) 四海 第2张

奖励模型训练

生成一个经过人类偏好校准的奖励模型(RM,也称为偏好模型)是RLHF中相对较新的研究领域。其基本目标是获得一个模型或系统,接受一系列文本作为输入,并返回一个标量奖励,该奖励应在数值上代表人类偏好。该系统可以是一个端到端的LM,也可以是一个输出奖励的模块化系统(例如,模型对输出进行排序,然后将排序转换为奖励)。输出为标量奖励对于后续无缝集成已有RL算法至RLHF过程中至关重要。

这些用于奖励建模的语言模型可以是另一个微调的语言模型,也可以是从偏好数据上从头训练的语言模型。例如,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)来优化原始语言模型,以适应奖励模型。

展示从人类反馈中的强化学习(RLHF) 四海 第3张

使用RL进行微调

长期以来,使用强化学习对语言模型进行微调在工程和算法上都被认为是不可能的事情。然而,一些组织似乎已经成功地通过使用策略梯度强化学习算法(PPO)对初始LM的一些或全部参数进行微调来解决了这个问题。由于微调整个10B或100B+参数的模型代价过高(更多信息请参见Low-Rank Adaptation(LoRA)用于LM或DeepMind的Sparrow LM),因此LM的参数被冻结。PPO已经存在了相当长的时间 – 有很多关于其工作原理的指南。这种方法的相对成熟使其成为扩大到新的RLHF分布式训练应用的有利选择。事实证明,对这样一个大模型进行更新的核心RL方法已经研究出来(稍后会详细介绍)。

让我们首先将这个微调任务形式化为一个RL问题。首先,策略是一个接受提示并返回文本序列(或仅是文本的概率分布)的语言模型。该策略的动作空间是与语言模型的词汇表对应的所有标记(通常在50k个标记的数量级上),观察空间是可能的输入标记序列的分布,考虑到先前对RL的使用(其维度大约是词汇表的大小^输入标记序列的长度)。奖励函数是偏好模型和策略变化的约束的组合。

奖励函数是系统将我们讨论的所有模型结合到一个RLHF过程中的地方。给定来自数据集的提示x,通过当前迭代的微调策略生成文本y。将该文本与原始提示连接起来,将其传递给偏好模型,该模型返回“可取性”的标量概念rθ。此外,将RL策略的逐标记概率分布与初始模型的概率分布进行比较,以计算它们之间的差异惩罚。在OpenAI、Anthropic和DeepMind的多篇论文中,该惩罚被设计为两个标记分布序列之间的Kullback-Leibler(KL)散度的缩放版本,rKL。KL散度项惩罚RL策略远离初始预训练模型的程度每个训练批次,这对于确保模型输出合理连贯的文本片段很有用。如果没有这个惩罚,优化过程可能会生成毫无意义但欺骗奖励模型的高奖励的文本。在实践中,KL散度通过从两个分布中进行采样来近似(由John Schulman在这里解释)。发送到RL更新规则的最终奖励为r = rθ – λrKL。

一些RLHF系统在奖励函数中添加了额外的项。例如,OpenAI通过将额外的预训练梯度(从人类注释集)混合到PPO的更新规则中,在InstructGPT上成功进行了实验。随着对RLHF的进一步研究,这个奖励函数的制定很可能会不断演变。

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

展示从人类反馈中的强化学习(RLHF) 四海 第4张

技术细节说明:上面的图表看起来好像两个模型为相同的提示生成了不同的响应,但实际上发生的是RL策略生成文本,然后将该文本输入到初始模型中,以生成其相对概率用于KL惩罚。

可选地,RLHF可以通过迭代更新奖励模型和策略来继续进行。随着RL策略的更新,用户可以继续对比这些输出与模型之前版本的排名。大多数论文尚未讨论实现此操作,因为收集这种类型数据所需的部署方式只适用于有接触到活跃用户群的对话代理。Anthropic将此选项称为迭代在线RLHF(请参阅原始论文),其中策略的迭代被纳入模型之间的ELO排名系统中。这引入了策略和奖励模型演变的复杂动态,代表了一个复杂且开放的研究问题。

OpenAI于2019年发布了在TensorFlow中执行LM的RLHF的第一个代码。

现在,已经有一些基于PyTorch的RLHF活跃的代码库从中发展出来。主要的代码库有Transformers Reinforcement Learning(TRL),TRLX最初是TRL的一个分支,以处理更大的模型进行在线和离线训练。目前,TRLX具有能够进行生产级RLHF的API,使用PPO和Implicit Language Q-Learning ILQL,在LLM部署所需的规模上(例如330亿参数)。未来的TRLX版本将允许使用高达2000亿参数的语言模型。因此,与TRLX的交互被优化为具有此规模经验的机器学习工程师。

RL4LMs提供了使用各种RL算法(PPO、NLPO、A2C和TRPO)、奖励函数和指标对LLM进行微调和评估的构建模块。此外,该库易于定制,可以使用任意用户指定的奖励函数对任何编码器-解码器或编码器基于Transformer的LM进行训练。值得注意的是,它在最近的工作中在广泛的任务范围内进行了充分测试和基准测试,涉及多达2000个实验,突出显示了有关数据预算比较(专家演示与奖励建模)、处理奖励攻击和训练不稳定性等方面的几个实际洞察。RL4LMs目前的计划包括对更大模型和新的RL算法进行分布式训练。

TRLX和RL4LMs都在进行大量的进一步开发,因此请期待更多的功能。

Anthropic在Hub上提供了一个大型数据集。

尽管这些技术非常有前景和影响力,并且引起了AI研究实验室的关注,但仍然存在明显的局限性。模型虽然更好,但仍然可能输出具有有害或事实不准确的文本而没有任何不确定性。这种不完善性代表了RLHF的长期挑战和动力 – 在一个本质上是人类问题领域中运作意味着永远不会有一个明确的最终界限来标记模型为完成。

在使用RLHF的系统中,由于将其他人工作人员直接集成到训练循环之外,收集人类偏好数据非常昂贵。RLHF的性能取决于其人类注释的质量,这包括两种类型:人工生成的文本,如在InstructGPT中微调初始LM,以及模型输出之间的人类偏好标签。

生成回答特定提示的写作流畅的人类文本非常昂贵,因为它通常需要雇佣兼职员工(而不能依靠产品用户或众包)。幸运的是,大多数RLHF应用程序训练奖励模型使用的数据规模(约50k个标记的偏好样本)并不昂贵。然而,这仍然是学术实验室很可能无法承受的高成本。目前,只有一个大规模的RLHF通用语言模型数据集(来自Anthropic)和一些较小规模的任务特定数据集存在(例如OpenAI的摘要数据)。 RLHF的第二个数据挑战是人类注释者通常可能存在意见不一致,从而为训练数据增加了相当大的潜在差异,而没有确定的基准。

在这些限制下,仍然有大量未开发的设计选项可以使RLHF取得重大进展。其中许多属于改进RL优化器的领域。PPO是一种相对较旧的算法,但没有结构性原因使其他算法无法提供现有RLHF工作流程的好处和变体。精调LM策略的反馈部分的一个很大的成本是需要对策略生成的每个文本片段在奖励模型上进行评估(因为它在标准RL框架中充当环境的一部分)。为了避免这些大型模型的昂贵前向传递,可以使用离线RL作为策略优化器。最近出现了一些新算法,例如implicit language Q-learning(ILQL)[CarperAI上关于ILQL的讲座],非常适合这种类型的优化。 RL过程中的其他核心权衡,如探索和开发的平衡,也没有得到记录。探索这些方向至少可以发展对RLHF的功能的深入理解,如果不是提供改进的性能。

我们在2022年12月13日星期二举办了一场关于此帖子的讲座,您可以在此观看。

进一步阅读

以下是到目前为止关于RLHF最常见的论文列表。该领域最近随着DeepRL的出现(约在2017年左右)而变得流行,并已成为许多大型技术公司对LLM应用的广泛研究。以下是一些在LM关注之前的RLHF论文:

  • TAMER:通过评估性强化训练代理(Knox和Stone 2008):提出了一种学习代理的方法,其中人类迭代地对采取的动作提供分数以学习奖励模型。
  • 依赖策略相关人类反馈的交互学习(MacGlashan等,2017):提出了一种演员-评论家算法COACH,其中使用人类反馈(积极和消极)来调整优势函数。
  • 利用人类偏好进行深度强化学习(Christiano等,2017):在Atari轨迹之间的偏好上应用RLHF。
  • 在高维状态空间中塑造交互式代理的深度TAMER(Warnell等,2018):扩展了TAMER框架,其中使用深度神经网络来建模奖励预测。

这里还有一个显示RLHF在LM上性能的不断增长的“关键”论文集的快照:

  • 利用人类偏好微调语言模型(Zieglar等,2019):一个早期的论文,研究了奖励学习对四个特定任务的影响。
  • 利用人类反馈进行学习摘要(Stiennon等,2020):将RLHF应用于摘要文本的任务。此外,还有后续工作《使用人类反馈递归摘要书籍》(OpenAI Alignment Team 2021)。
  • WebGPT:使用人类反馈在浏览器中回答问题(OpenAI,2021):使用RLHF训练代理程序以浏览网络。
  • InstructGPT:使用人类反馈训练语言模型遵循指令(OpenAI Alignment Team 2022):将RLHF应用于通用语言模型[InstructGPT的博客文章]。
  • GopherCite:教会语言模型通过验证的引文提供支持(Menick等,2022):使用RLHF训练LM以返回带有特定引文的答案。
  • Sparrow:通过有针对性的人类判断改进对话代理的对齐(Glaese等,2022):使用RLHF对对话代理进行精调。
  • ChatGPT:优化对话的语言模型(OpenAI 2022):使用RLHF训练LM以用作通用聊天机器人。
  • 奖励模型过度优化的缩放定律(Gao等,2022):研究了RLHF中学习的偏好模型的缩放特性。
  • 使用人类反馈从强化学习中训练一个有用和无害的助手(Anthropic,2022):详细记录了使用RLHF训练LM助手的过程。
  • 减少语言模型的危害性的红队测试:方法、扩展行为和经验教训(Ganguli等,2022):详细记录了“发现、衡量和试图减少[语言模型]潜在有害输出”的努力。
  • 使用强化学习进行开放式对话的动态规划(Cohen等,2022):使用RL增强开放式对话代理的对话技能。
  • 强化学习是否适用于自然语言处理?:自然语言策略优化的基准、基线和构建块(Ramamurthy和Ammanabrolu等,2022):讨论了RLHF中开源工具的设计空间,并提出了一种新算法NLPO(自然语言策略优化)作为对PPO的替代方案。

该领域是多个领域的融合,因此您也可以在其他领域找到资源:

  • 根据指令进行持续学习(Kojima等,2021年;Suhr和Artzi,2022年)或从用户反馈中进行强化学习(Sokolov等,2016年;Gao等,2022年)
  • 早期有关使用其他强化学习算法进行文本生成的历史(并非都是基于人类偏好),例如使用循环神经网络(Ranzato等,2015年),用于文本预测的演员-评论家算法(Bahdanau等,2016年),或者将人类偏好添加到该框架的早期工作(Nguyen等,2017年)

引用:如果您在学术工作中发现这对您有用,请考虑在文中引用我们的工作:

Lambert等人,“从人类反馈中说明强化学习(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特定实现的一些事实错误。感谢Peter Stone、Khanh X. Nguyen和Yoav Artzi帮助进一步扩展相关工作的历史。

感谢Stas Bekman修正了一些拼写错误或令人困惑的短语。

感谢Igor Kotenkov指出了RLHF过程中KL惩罚项的技术错误、其图示和文本描述。

Leave a Reply

Your email address will not be published. Required fields are marked *