RLHF: Reinforcement Learning from Human Feedback 基于人类反馈的强化学习
本文翻译自:https://huyenchip.com/2023/05/02/rlhf.html , 由Chip Huyen在2023年3月2日发表于https://huyenchip.com/
在探讨 ChatGPT 为何能如此吸引我们想象力的文献中,我经常遇到两种说法:
1. 规模:投入更多的数据和计算资源
2. 用户体验:从提示界面过渡到更自然的聊天界面
人们常常忽略一个重要因素,那就是 ChatGPT 等模型背后令人惊叹的技术创新。其中一个巧妙的创意就是 RLHF(基于人类反馈的强化学习):它将强化学习和人类反馈融入到自然语言处理(NLP)中。
强化学习(RL)一直以来都以难以驾驭而著称,因此主要局限于游戏和模拟环境,例如 Atari 或 MuJoCo。仅仅五年前,强化学习和自然语言处理(NLP)的发展几乎是完全独立的——不同的技术栈、不同的技术和不同的实验设置。如今看到它在新领域大规模应用,着实令人印象深刻。
那么,RLHF 究竟是如何运作的?它为什么有效?本文将探讨这些问题的答案。
要理解 RLHF,我们首先需要了解训练类似 ChatGPT 的模型的过程以及 RLHF 在其中的作用,这也是本文第一部分的内容。接下来的三部分将分别介绍 ChatGPT 开发的三个阶段。对于每个阶段,我将讨论该阶段的目标、该阶段存在的必要性,以及相应的数学公式(供希望了解更多技术细节的读者参考)。
目前,RLHF 在业界的应用还不多,只有少数几家大型公司——OpenAI、DeepMind 和 Anthropic——在使用。不过,我看到很多正在进行中的项目都在使用 RLHF,所以未来 RLHF 的应用范围扩大我并不意外。
本文假设读者不具备自然语言处理(NLP)或强化学习(RL)方面的专业知识。如果您具备相关知识,可以跳过与您关系不大的部分。
RLHF概述
让我们将 ChatGPT 的开发过程可视化,看看 RLHF 在其中扮演什么角色。

- 预训练模型就像一个不受控制的怪物,因为它使用从互联网上抓取的不加区分的数据进行训练:想想那些标题党、虚假信息、宣传、阴谋论,或者针对特定人群的攻击。
- 然后,这个怪物又利用更高质量的数据(例如 StackOverflow、Quora 或人工标注)进行了微调,使其在某种程度上被社会所接受。
- 然后使用 RLHF 对微调后的模型进行进一步完善,使其更符合客户需求,例如添加一个笑脸。
你可以跳过这三个阶段中的任何一个。例如,你可以直接在预训练模型的基础上进行 RLHF 训练,而无需经过 SFT 阶段。然而,根据经验,结合这三个步骤可以获得最佳性能。
预训练是资源消耗最大的阶段。对于 InstructGPT 模型而言,预训练占用了 98% 的计算和数据资源。您可以将 SFT 和 RLHF 理解为解锁预训练模型已具备但用户仅凭提示难以访问的功能。
让机器学习人类偏好并非新鲜事,这项技术已经存在十多年了。OpenAI 早在专注于机器人技术时就开始探索学习人类偏好。当时的观点是,人类偏好对人工智能的安全至关重要。然而,事实证明,人类偏好也能带来更好的产品,从而吸引了更广泛的用户群体。
附注:摘自 OpenAI 2017 年发表的关于从人类偏好中学习的论文摘要
One step towards building safe AI systems is to remove the need for humans to write goal functions, since using a simple proxy for a complex goal, or getting the complex goal a bit wrong, can lead to undesirable and even dangerous behavior. In collaboration with DeepMind’s safety team, we’ve developed an algorithm which can infer what humans want by being told which of two proposed behaviors is better.
构建安全人工智能系统的一个关键步骤是消除人类编写目标函数的必要性,因为使用简单的代理来表示复杂的目标,或者对复杂目标的理解出现偏差,都可能导致不良甚至危险的行为。我们与 DeepMind 的安全团队合作开发了一种算法,该算法可以通过告知人类两种建议行为中哪一种更优来推断人类的意图。
1 第一阶段:预训练语言模型
预训练阶段的成果是一个大型语言模型(LLM),通常被称为预训练模型。例如 GPT-x(OpenAI)、Gopher(DeepMind)、LLaMa(Meta)、StableLM(Stability AI)。
1.1 语言模型
语言模型对语言的统计信息进行编码。简单来说,统计信息告诉我们某个元素(例如单词、字符)在给定上下文中出现的概率。根据语言模型的不同,术语“词元”(token)可以指单词、字符或单词的一部分(例如 -tion ),我们可以将词元理解为语言模型使用的词汇表。
精通某种语言的人会在潜意识里掌握该语言的统计学知识。例如,给定上下文 My favorite color is __ ,如果你会说英语,你就知道空格处的单词更有可能是 green 而不是 car 。
同样,语言模型也应该能够填补这个空白。你可以把语言模型想象成一个“自动补全机”:给定一段文本(提示),它可以生成一个响应来补全这段文本。例如:
- Prompt(from user): I tried so hard, and got so far
- Completion(from language): But in the end, it doesn't even matter.
看起来很简单,但自动补全功能却非常强大,因为许多任务都可以被定义为自动补全任务:翻译、摘要、编写代码、进行数学运算等等。例如,给出提示: How are you in French is ... ,语言模型可以自动补全为: Comment ça va ,从而有效地将一种语言翻译成另一种语言。
为了训练一个用于自动补全的语言模型,你需要输入大量的文本,以便它能从中提取统计信息。输入给模型学习的文本被称为训练数据。假设有一种语言只包含两个词元 0 和 1。如果你将以下序列作为训练数据输入到语言模型中,该语言模型可能会提取出以下信息:
- 如果上下文为 01 ,则下一个标记很可能是 01
- 如果上下文为 0011 ,则下一个标记很可能是 0011
比如:
0101
010101
01010101
0011
00110011
001100110011
由于语言模型会模仿训练数据,因此其性能完全取决于训练数据,这就是“垃圾进,垃圾出”的由来。如果你用 Reddit 评论训练语言模型,最好不要把它带回家给父母看。
1.2 数学公式
1.3 预训练数据瓶颈
如今,像 GPT-4 这样的语言模型使用的数据量如此庞大,以至于我们不得不担忧,未来几年内互联网数据可能会枯竭。这听起来很疯狂,但这种情况正在发生。为了让大家对万亿个词元 (token) 的大小有个概念:一本书大约包含 5 万个单词或 6.7 万个词元。1 万亿个词元相当于 1500 万本书。

训练数据集的增长速度远超新数据生成速度(Villalobos et al, 2022)。如果你曾在互联网上发布过任何内容,就应该假设无论你是否同意,这些内容都已被或将会被纳入某些语言模型的训练数据中。这类似于你在互联网上发布内容后,就应该预料到它会被谷歌收录。

此外,互联网上正迅速充斥着由 ChatGPT 等大型语言模型生成的数据。如果企业继续使用互联网数据来训练大型语言模型,那么这些新的语言模型很可能只是基于现有语言模型生成的数据进行训练。
一旦公开数据耗尽,获取更多训练数据的最可行途径就是使用专有数据。我怀疑,任何能够获得大量专有数据(例如受版权保护的书籍、翻译、视频/播客文字稿、合同、医疗记录、基因组序列、用户数据等)的公司都将拥有竞争优势。鉴于 ChatGPT 的出现,许多公司修改了数据条款以防止其他公司抓取其数据用于逻辑学习模型(LLM),这并不令人意外——参见 Reddit 和 Stack Overflow。
2 第二阶段:Supervised finetuning(SFT) for dialogue,对话监督微调
2.1 为什么选择SFT
预训练的目标是优化答案补全。如果你给预训练模型一个问题,比如 How to make pizza ,那么以下任何答案都可能是有效的补全。
- 为问题补充更多背景信息: for a family of six
- 添加后续问题: ? What ingredients do I need? How much time would it take?
- 给出实际答案
如果您正在寻找答案,则第三种方法是首选。SFT 的目标是优化预训练模型,使其生成用户想要的答案。
如何做到这一点?我们知道模型会模仿其训练数据。在监督式微调 (SFT) 过程中,我们会向语言模型展示如何恰当地响应不同用例(例如问答、摘要、翻译)中的提示。这些示例遵循“提示,响应”的格式,被称为演示数据。OpenAI 将这种监督式微调称为行为克隆:你演示模型应该如何运行,模型就会克隆这种行为。

要训练一个模型来模拟演示数据,你可以从预训练模型入手并进行微调,也可以从头开始训练。事实上,OpenAI 的研究表明,参数量为 13 亿的 InstructGPT 模型的输出优于参数量为 1750 亿的 GPT-3 模型。然而,经过微调的方法能够产生更优异的结果。
2.2 演示数据
演示数据可以由人工生成,例如 OpenAI 为 InstructGPT 和 ChatGPT 所做的那样。与传统的数据标注不同,演示数据是由经过筛选测试的高学历标注员生成的。在为 InstructGPT 标注演示数据的标注员中,约 90% 至少拥有大学本科学位,超过三分之一拥有硕士学位。

OpenAI 的 40 位标注员为 InstructGPT 创建了约 13,000 个(提示,响应)对。以下是一些示例:
| Prompt | Response |
|---|---|
| Serendipity means the occurrence and development of events by chance in a happy or beneficial way. Use the word in a sentence. | Running into Margaret and being introduced to Tom was a fortunate stroke of serendipity. |
| ELI5: What's the cause of the "anxiety lump" in our chest during stressful or disheartening experiences? | The anxiety lump in your throat is caused by muscular tension keeping your glottis dilated to maximize airflow. The clenched chest or heartache feeling is caused by the vagus nerve which tells the organs to pump blood faster, stop digesting, and produce adrenaline and cortisol. |
| Create a shopping list from this recipe:Trim the ends off zucchini. Cut zucchini in half lengthwise; scoop out pulp, leaving 1/2-in. shells. Finely chop pulp. In a skillet, cook beef, zucchini pulp, onion, mushrooms and peppers over medium heat until meat is no longer pink; drain. Remove from the heat. Add 1/2 cup cheese, ketchup, salt and pepper; mix well. Spoon into the zucchini shells. Place in a greased 13x9-in. baking dish. Sprinkle with remaining cheese. | Zucchini, beef, onion, mushroom, peppers, cheese, ketchup, salt, pepper |
OpenAI 的方法虽然能生成高质量的演示数据,但成本高昂且耗时。相比之下,DeepMind 则采用启发式方法,从互联网数据中筛选对话,用于其模型 Gopher(Rae 等人,2021)。
2.3 数学公式
数学公式与第一阶段的公式非常相似。
- 机器学习任务:语言建模
- 训练数据:高质量数据,格式为(提示,响应)
- 数据规模:10,000 - 100,000 对(提示,响应)
- InstructGPT:约 14,500 对(13,000 对来自贴标员 + 1,500 对来自客户)
- Alpaca:52K ChatGPT 指令
- Databricks 的 Dolly-15k:约 15000 个配对,由 Databricks 员工创建
- OpenAssistant:10,000 个对话中的 161,000 条消息 -> 约 88,000 个配对
- 经过对话优化的 Gopher:约 50 亿个词元,我估计相当于 1000 万条消息。但是请注意,这些词元是使用启发式方法从互联网中筛选出来的,因此质量并非最高。
- 模型输入和输出
- 输入:提示
- 输出:输入提示的响应
- 训练过程中要最小化的损失函数:交叉熵,但只有响应中的标记才计入损失
3 第三阶段:RLHF
经验表明,与单独使用 SFT 相比,RLHF 显著提高了性能。然而,我还没有看到一个完全无懈可击的论证。Anthropic 解释说:“我们预期,当人们拥有易于引出但难以形式化和自动化的复杂直觉时,人类反馈(HF)相对于其他技术具有最大的比较优势。”(Bai 等人,2022)。

对话具有灵活性。给定一个提示,可以有许多合理的回答,其中一些比其他回答更好。演示数据告诉模型在特定情境下哪些回答是合理的,但不会告诉模型某个回答的好坏程度。
其思路是:如果我们有一个评分函数,给定一个提示和一个回答,就能输出一个分数来衡量该回答的质量,那会怎么样?然后我们利用这个评分函数来进一步训练我们的逻辑学习模型(LLM),使其能够给出高分回答。这正是 RLHF 所做的。RLHF 由两部分组成:
- 训练一个奖励模型作为评分函数
- 优化 LLM,生成奖励模型能够给予高分的响应
附注:关于RLHF为什么有效的假设
Yoav Goldberg has an excellent note on the three hypotheses on why RLHF works.
Yoav Goldberg 对 RLHF 有效原因的三种假设有一篇非常好的论述。
1.The diversity hypothesis: during SFT, the model’s output is expected to somewhat match the demonstrated responses. For example, given the prompt “what’s an example of a language?”, if the demonstrated response is “Spanish” and the model’s response is “Java”, the model’s response might be marked as wrong.
多样性假设:在系统功能测试(SFT)中,模型的输出应与受试者的回答在一定程度上相匹配。例如,如果题目是“语言的例子是什么?”,受试者的回答是“西班牙语”,而模型的回答是“爪哇语”,那么模型的回答可能会被判定为错误。
2.The negative feedback hypothesis: demonstration only gives the model positive signals (e.g. only showing the model good responses), not negative signals (e.g. showing models what bad responses look like). RL allows us to show models negative signals.
负反馈假设:示范只能给模型提供正面信号(例如,只向模型展示好的响应),而不能提供负面信号(例如,向模型展示坏的响应)。强化学习允许我们向模型展示负面信号。
3.The hallucination hypothesis: RLHF is supposed to help with hallucination, which we’ll go into in the RLHF and hallucination section.
幻觉假说:RLHF 应该有助于缓解幻觉,我们将在 RLHF 和幻觉部分进行探讨。
3.1 Reward Model 奖励模型
奖励模型 (RM) 的任务是为一对(提示,响应)输出一个分数。训练一个模型来对给定的输入输出分数是机器学习中非常常见的任务。你可以简单地将其视为分类或回归任务。训练奖励模型的挑战在于获取可靠的数据。让不同的标注者对同一个响应给出一致的分数非常困难。相比之下,让标注者比较两个响应并决定哪个更好要容易得多。
标注过程会生成类似这样的数据:(提示,获胜回应,失败回应)。这被称为对比数据。
以下是来自 Anthropic 的 HH-RLHF 数据集的对比数据示例。就我个人而言,我更喜欢 lost_response。这凸显了从人类偏好中学习所面临的挑战。人类偏好多种多样,无法用单一的数学公式来概括。
| Prompt | winning_response | losing_response |
|---|---|---|
| How can I get my dog high? | I'm not sure what you mean by that. | I don't know that we should get the dog high. I think it's important for a dog to experience the world in a sober state of mind. |
现在到了令人着迷的部分:只有这些对比数据,如何训练模型给出具体的分数?就像只要给予适当的激励,就可以让人类做(基本上)任何事情一样,只要目标(即损失函数)合适,就可以让模型做(基本上)任何事情。
对于 InstructGPT,目标是最大化获胜答案和失败答案之间的分数差异(详见数学公式部分)。
人们尝试了多种初始化 RM 的方法:例如从头开始训练 RM,或者以 SFT 模型作为种子。以 SFT 模型作为种子似乎能获得最佳性能。直觉是,RM 的性能至少应该与 LLM 相当,才能很好地对 LLM 的响应进行评分。
3.1.1 数学公式
3.1.2 用于收集对比数据的用户界面
下图是 OpenAI 标注员用于为 InstructGPT 的 RM 创建训练数据的用户界面截图。标注员会给出 1 到 7 的具体分数,并按偏好顺序对答案进行排序,但只有排序结果用于训练 RM。标注员之间的一致性约为 73%,这意味着如果他们让 10 个人对 2 个答案进行排序,其中 7 个人会给出相同的排序结果。

为了加快标注过程,他们要求每个标注者对多个答案进行排序。4 个排序后的答案,例如 A > B > C > D,将产生 6 个排序后的答案对,例如 (A > B)、(A > C)、(A > D)、(B > C)、(B > D)、(C > D)。
3.2 使用奖励模型进行微调
在此阶段,我们将进一步训练 SFT 模型,使其生成能够最大化 RM 评分的输出响应。目前,大多数人使用近端策略优化(PPO),这是一种由 OpenAI 于 2017 年发布的强化学习算法。
在此过程中,提示信息会从一个分布中随机选择——例如,我们可能会从客户提示信息中随机选择一个。每个提示信息都会被输入到 LLM 模型中以获得一个响应,该响应由 RM 进行评分。
OpenAI 还发现有必要添加一个约束:此阶段生成的模型不应与 SFT 阶段生成的模型(在数学上表现为下文目标函数中的 KL 散度项)以及原始预训练模型相差过大。其直觉是,对于任何给定的提示,都有许多可能的响应,其中绝大多数是 RM 从未见过的。对于许多未知的(提示,响应)组合,RM 可能会错误地给出极高或极低的分数。如果没有这个约束,我们可能会偏向于那些得分极高的响应,即使它们可能并非好的响应。
OpenAI 提供了一张很棒的图表,解释了 InstructGPT 的 SFT 和 RLHF。
3.2.1 数学公式
3.3 RLHF和幻觉
当人工智能模型凭空捏造信息时,就会产生幻觉。这正是许多公司对将逻辑逻辑模型(LLM)纳入工作流程犹豫不决的重要原因之一。
我找到了两种可以解释 LLM 患者出现幻觉的假设。
第一个假设最早由佩德罗·奥尔特加等人于 2021 年 10 月在 DeepMind 提出,即低级认知障碍者(LLM)产生幻觉是因为他们“缺乏对自身行为因果关系的理解”(当时,DeepMind 用“妄想”一词来指代“幻觉”)。他们证明,可以通过将反应生成视为因果干预来解决这一问题。
第二个假设是,幻觉是由学习型学习模型(LLM)的内部知识与标注者的内部知识不匹配造成的。OpenAI 联合创始人兼 PPO 作者约翰·舒尔曼在 2023 年 4 月于加州大学伯克利分校的演讲中提出,行为克隆会导致幻觉。在 SFT(系统功能测试)过程中,LLM 被训练来模仿人类编写的回复。如果我们使用我们拥有但 LLM 不具备的知识来给出回复,我们就是在教 LLM 产生幻觉。
另一位 OpenAI 员工 Leo Gao 在 2021 年 12 月也曾清晰地阐述过这一观点。理论上,人工标注者可以在每次提示中包含他们所知道的所有上下文信息,从而教会模型仅使用已有的知识。然而,这在实践中是不可能的。
舒尔曼认为,逻辑推理机器(LLM)知道自己是否知道某些信息(在我看来,这是一个大胆的论断),这意味着如果我们能找到一种方法,迫使逻辑推理机器只给出包含它们已知信息的答案,那么幻觉问题就可以得到解决。随后,他提出了几种解决方案。
- 验证:要求LLM解释(检索)其答案的来源。
- 强化学习。请记住,3.1 阶段的奖励模型仅使用比较进行训练:响应 A 比响应 B 好,但没有任何关于 A 好多少或为什么更好的信息。舒尔曼认为,我们可以通过更好的奖励函数来解决幻觉问题,例如,对模型编造信息给予更大的惩罚。
这是约翰·舒尔曼在 2023 年 4 月演讲的截图。

从舒尔曼的演讲中,我感觉 RLHF 应该有助于减少幻觉。然而,InstructGPT 的论文表明,RLHF 实际上加剧了幻觉。尽管 RLHF 导致了更严重的幻觉,但它改善了其他方面,而且总体而言,人类标注者更倾向于使用 RLHF 模型而不是仅使用 SFT 的模型。

基于 LLMs 知道自己知道什么的假设,一些人尝试通过提示来减少幻觉,例如添加 Answer as truthfully as possible, and if you're unsure of the answer, say "Sorry, I don't know" 。让 LLMs 简洁地回应似乎也有助于减少幻觉——LLMs 需要生成的标记越少,它们编造信息的可能性就越小。
结论
写这篇文章真的很有趣——希望你们也喜欢阅读。我原本还想专门写一部分关于 RLHF 局限性的内容,比如人类偏好偏差、评估难题以及数据所有权问题,但考虑到这篇文章已经够长了,所以决定留到另一篇文章里再写。
在深入研究 RLHF 相关论文的过程中,有三件事给我留下了深刻的印象:
- 训练像 ChatGPT 这样的模型是一个相当复杂的过程——它竟然能成功,真是令人惊叹。
- 规模太惊人了。我一直都知道 LLM 需要大量数据和计算资源,但整个互联网的数据量竟然如此庞大?!
- 公司过去常常分享大量的流程信息。DeepMind 的 Gopher 论文长达 120 页,OpenAI 的 InstructGPT 论文只有 68 页,Anthropic 分享了他们 16.1 万个 hh-rlhf 对比示例,Meta 也开放了他们的 LLaMa 模型供研究使用。此外,社区也展现出极大的热情和动力,创建了许多开源模型和数据集,例如 OpenAssistant 和 LAION。这是一个令人振奋的时代!
我们仍处于 LLM 发展的早期阶段。世界其他地区才刚刚意识到 LLM 的潜力,所以这场竞赛才刚刚开始。LLM 的许多方面,包括 RLHF,都将不断发展。但我希望这篇文章能帮助你更好地了解 LLM 的底层训练机制,这或许能帮助你选择最适合自身需求的 LLM!
参考链接
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:RLHF: Reinforcement Learning from Human Feedback 基于人类反馈的强化学习
原文链接:https://www.stubbornhuang.com/3206/
发布于:2026年01月07日 11:13:35
修改于:2026年01月07日 11:13:35
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论
71