\[LinkedIn讨论, Twitter帖子\]
在讨论为什么ChatGPT能够捕捉我们想象力的很多内容的文献中,我经常遇到两种叙事:
- 规模:投入更多数据和计算资源。
- 用户体验:从提示界面转向更自然的聊天界面。
经常被忽略的一个叙述是制作像ChatGPT这样的模型所需的令人难以置信的技术创造力。一个很酷的想法是RLHF(从人类反馈中进行强化学习):将强化学习和人类反馈融入自然语言处理。
RL一直以来都很难处理,因此主要局限于游戏和模拟环境,如Atari或MuJoCo。就在五年前,RL和NLP基本上是独立发展的-不同的技术栈,不同的技术,不同的实验设置。看到它在一个大规模的新领域中发挥作用令人印象深刻。
那么,RLHF 究竟是如何工作的?为什么它有效?本文将讨论这些问题的答案。
目录
RLHF 概述
第一阶段. 完成的预训练
…. 语言模型
…. 数学公式
…. 预训练的数据瓶颈
第二阶段. 对话的监督微调 (SFT)
…. 为什么选择 SFT
…. 演示数据
…. 数学公式
第三阶段. RLHF
…. 3.1. 奖励模型 (RM)
…….. 数学公式
…….. 用于收集比较数据的用户界面
…. 3.2. 使用奖励模型进行微调
…….. 数学公式
…. RLHF 和幻觉
结论
要理解RLHF,我们首先需要了解像ChatGPT这样的模型训练过程以及RLHF的作用,这是本文第一部分的重点。接下来的3个部分涵盖了ChatGPT开发的3个阶段。对于每个阶段,我将讨论该阶段的目标,为什么需要这个阶段的直觉,以及想要了解更多技术细节的人的相应数学表述。
目前,RLHF在行业中尚未被广泛使用,除了一些主要的关键参与者 - OpenAI、DeepMind和Anthropic。然而,我看到许多正在进行中的使用RLHF的努力,所以未来看到RLHF被更多地使用也不足为奇。
在本文中,我假设读者没有自然语言处理(NLP)或强化学习(RL)方面的专业知识。如果你有相关知识,可以随意跳过对你来说不太相关的部分。
RLHF 概述
让我们来可视化ChatGPT的开发过程,看看RLHF在哪里适用。
如果你眯起眼睛看,上面的图看起来非常像一个带笑脸的Shoggoth模因。
- 预训练模型是一只未经驯化的怪物,因为它是在从互联网上抓取的不加区分的数据上进行训练的:想想点击诱导、错误信息、宣传、阴谋论或针对特定人群的攻击。 2. 然后这只怪物在更高质量的数据上进行了微调 - 想想StackOverflow、Quora或人类注释 - 这使得它在某种程度上变得社会上可接受。 3. 然后,通过RLHF进一步打磨微调模型,使其适合客户使用,例如给它一个笑脸。
Shoggoth with Smiley Face。图片来源:twitter.com/anthrupad
你可以跳过三个阶段中的任何一个。例如,你可以直接在预训练模型的基础上进行RLHF,而不经过SFT阶段。然而,根据经验,将这三个步骤结合起来可以获得最佳性能。
预训练是最消耗资源的阶段。对于InstructGPT模型,预训练占据了98%的总体计算和数据资源。您可以将SFT和RLHF视为解锁预训练模型已具备的功能,但仅通过提示很难让用户访问。
教机器从人类偏好中学习并非新鲜事物。这种方法已经存在十多年。OpenAI在他们主要关注机器人技术时开始探索从人类偏好中学习。当时的说法是人类偏好对于AI安全至关重要。然而,事实证明,人类偏好也可以带来更好的产品,吸引了更广泛的受众。
»»旁注:2017年OpenAI关于从人类偏好中学习的摘要««
构建安全的人工智能系统的一步是消除人类编写目标函数的需求,因为使用简单的代理来代替复杂目标,或者稍微错误地设定复杂目标,可能导致不良甚至危险的行为。与 DeepMind 的安全团队合作,我们开发了一种算法,可以通过告知哪种行为更好来推断人类的意图。
第一阶段。用于完成的预训练
预训练阶段的结果是一个大型语言模型(LLM),通常被称为预训练模型。例如包括 GPT-x(OpenAI)、Gopher(DeepMind)、LLaMa(Meta)、StableLM(Stability AI)。
语言模型
语言模型编码关于语言的统计信息。简单来说,统计信息告诉我们某物(例如一个词、一个字符)在给定上下文中出现的可能性有多大。术语标记可以指代一个词、一个字符或一个词的一部分(如-tion
),这取决于语言模型。您可以将标记视为语言模型使用的词汇。
说一门语言流利的人在潜意识中具有对该语言的统计知识。例如,给定上下文 My favorite color is __
,如果你说英语,你知道空白处的词更有可能是 green
而不是 car
。
同样,语言模型也应该能够填补这个空白。你可以将语言模型看作是一个“完成机器”:给定一段文本(提示),它可以生成一个响应来完成这段文本。以下是一个例子:
- 提示(来自用户):
我努力尝试,付出了很多
- 完成(来自语言模型):
但最终,它甚至都不重要。
尽管听起来很简单,但完成任务实际上非常强大,因为许多任务可以被构建为完成任务:翻译、总结、编写代码、做数学等。例如,给出提示:法语中的How are you是...
,一个语言模型可能会完成它并输出:Comment ça va
,有效地实现了从一种语言到另一种语言的翻译。
为了训练一个用于完成的语言模型,您需要提供大量文本,以便它可以从中提取统计信息。提供给模型学习的文本称为训练数据。考虑一个只包含两个标记 0 和 1 的语言。如果您将以下序列作为训练数据提供给语言模型,那么语言模型可能会提取出:
- 如果上下文是
01
,那么接下来的标记很可能是01
- 如果上下文是
0011
,那么接下来的标记很可能是0011
0101
010101
01010101
0011
00110011
001100110011
由于语言模型模仿其训练数据,语言模型的好坏取决于其训练数据,因此有句谚语“垃圾进,垃圾出”。如果你用 Reddit 评论来训练语言模型,你可能不想把它带回家给父母看。
数学表达式
- (LLM_\phi):正在训练的语言模型,由 (\phi) 参数化。目标是找到使交叉熵损失最小化的 (\phi)。
- ([T_1, T_2, ..., T_V]):词汇表 - 训练数据中所有唯一标记的集合。
- (V):词汇表大小。
- (f(x)):将标记映射到其在词汇表中的位置的函数。如果 (x) 在词汇表中是 (T_k),则 (f(x) = k)。
- 给定序列 ((x_1, x_2, ..., x_n)),我们将有 (n) 个训练样本:
- 输入:(x =(x_1, x_2, ..., x_{i-1}))
- 真实值:(x_i)
- 对于每个训练样本 ((x, x_i)):
- 令 (k = f(x_i))
- 模型输出:(LLM(x)= [\bar{y}_1, \bar{y}_2, ..., \bar{y}_V])。注意:(\sum_j\bar{y}_j = 1)
- 损失值:(CE(x, x_i; \phi) = -\log\bar{y}_k)
- 目标:找到使所有训练样本上的期望损失最小化的 (\phi)。(CE(\phi) = -E_x\log\bar{y}_k)
预训练的数据瓶颈
今天,像GPT-4这样的语言模型使用了如此多的数据,以至于有一个现实的担忧,即在未来几年内我们将耗尽互联网数据。听起来很疯狂,但这正在发生。要了解一万亿标记有多大:一本书大约包含5万字或6.7万个标记。1万亿个标记相当于1500万本书。
RedPajama和LLaMa数据的并排比较,由RedPajama完成。
训练数据集大小增长的速度远远快于新数据生成的速度(Villalobos et al, 2022)。如果您曾经在互联网上发布过任何内容,您应该假设它已经或将被一些语言模型的训练数据包含,无论您是否同意。这类似于,如果您在互联网上发布了内容,您应该期望它被谷歌索引。
除此之外,互联网正迅速充斥着由ChatGPT等大型语言模型生成的数据。如果公司继续使用互联网数据来训练大型LLM,这些新的LLM可能只是在现有LLM生成的数据上进行训练。
一旦公开可用数据耗尽,获取更多训练数据的最可行途径是使用专有数据。我怀疑任何公司如果设法获取大量专有数据(如受版权保护的书籍、翻译、视频/播客转录、合同、医疗记录、基因组序列、用户数据等),将具有竞争优势。在 ChatGPT 的背景下,许多公司改变了数据条款,以防止其他公司为 LLMs 抓取其数据 - 请参阅 Reddit,StackOverflow。
第二阶段。对话的监督微调(SFT)
为什么选择SFT
预训练优化于完成。如果你给预训练模型一个问题,比如,如何制作披萨
,以下任何一个都可能是有效的完成。
- 为一个六口之家增加更多背景信息:
for a family of six
- 添加后续问题:
? 我需要哪些食材?需要多长时间?
- 实际给出答案
第三个选项是首选,如果您正在寻找答案。SFT 的目标是优化预训练模型,以生成用户正在寻找的响应。
如何做到这一点?我们知道模型模仿其训练数据。在SFT期间,我们向我们的语言模型展示如何适当地回应不同用例的提示示例(例如,问题回答、摘要、翻译)。这些示例遵循格式(提示,回应),被称为演示数据。OpenAI将监督微调称为行为克隆:您展示模型应该如何行为,模型克隆这种行为。
用于微调InstructGPT的提示分布
要训练一个模型来模仿演示数据,你可以选择使用预训练模型并微调它,或者从头开始训练。事实上,OpenAI 表明 来自 1.3B 参数 InstructGPT 模型的输出优于 175B GPT-3 的输出。然而,微调方法产生了更加优秀的结果。
演示数据
人类可以生成演示数据,就像OpenAI使用InstructGPT和ChatGPT所做的那样。与传统数据标记不同,演示数据是由通过筛选测试的高素质标记者生成的。在为InstructGPT标记演示数据的人中,~90%至少拥有大学学位,超过三分之一拥有硕士学位。
OpenAI的40名标注员为InstructGPT创建了大约13,000个(提示,回复)对。以下是一些示例:
提示
响应
Serendipity 意味着事件的发生和发展是偶然的,以一种快乐或有益的方式。在一个句子中使用这个词。
遇见玛格丽特并被介绍给汤姆是一次幸运的偶然。
ELI5: 在压力或令人沮丧的经历中,胸口的“焦虑块”是什么原因?
你喉咙里的焦虑感是由肌肉紧张引起的,使你的声门张开以最大化气流。紧闭的胸口或心痛感是由迷走神经引起的,它告诉器官加快血液泵送速度,停止消化,并产生肾上腺素和皮质醇。
从这个食谱中创建一个购物清单:修剪西葫芦的两端。将西葫芦纵向切半;挖出果肉,留下1/2英寸的壳。将果肉切碎。在煎锅中,用中火煮牛肉、西葫芦果肉、洋葱、蘑菇和彩椒,直到肉不再粉红;沥干。离火。加入1/2杯奶酪、番茄酱、盐和胡椒;搅拌均匀。舀入西葫芦壳中。放入一个涂油的13x9英寸烤盘中。撒上剩余的奶酪。
西葫芦、牛肉、洋葱、蘑菇、彩椒、奶酪、番茄酱、盐、胡椒
OpenAI 的方法产生高质量的演示数据,但成本高且耗时。相反,DeepMind 使用启发式方法从互联网数据中筛选对话,用于他们的 Gopher 模型(Rae 等,2021)。
»» 旁注:DeepMind 对话的启发式 ««
具体来说,我们找到所有连续段落的集合(由两个换行符分隔的文本块),至少有6个段落,所有段落都以分隔符结尾的前缀开头(例如,
Gopher:
,Dr Smith -
或Q.
)。偶数索引的段落必须具有相同的前缀,奇数索引的段落也是如此,但两个前缀应该不同(换句话说,对话必须严格在两个人之间来回进行)。这个过程可靠地产生高质量的对话。
»»关于为对话微调与为遵循指示微调的旁注««
OpenAI的InstructGPT经过微调以遵循指令。每个示范数据示例都是一对(提示,回应)。DeepMind的Gopher经过微调以进行对话。每个示范示例都是来回对话的多轮。指令是对话的子集 - ChatGPT是InstructGPT的升级版本。
数学表达式
数学表达式与第一阶段的表达式非常相似。
- 机器学习任务: 语言建模
- 训练数据: (提示, 回复) 格式的高质量数据
- 数据规模: 10,000 - 100,000 (提示, 回复) 对
- InstructGPT: 约14,500 对 (来自标注者的13,000 对 + 来自客户的1,500 对)
- Alpaca: 52K ChatGPT 指令
- Databricks’ Dolly-15k: 约15,000 对,由 Databricks 员工创建
- OpenAssistant: 10,000 次对话中的 161,000 条消息 -> 大约 88,000 对
- Dialogue-finetuned Gopher: 约50亿标记,我估计约为 10M 条消息。但请记住,这些是通过从互联网中使用启发式方法筛选出来的,因此质量不是最高的。
- 模型输入和输出
- 输入: 提示
- 输出: 对于此提示的回复
- 在训练过程中要最小化的损失函数: 交叉熵,但只计算回复中的标记来计算损失。
第三阶段。RLHF
根据经验,相对于仅使用SFT,RLHF显著提高了性能。然而,我还没有看到一个我认为是十分可靠的论据。Anthropic解释道:“我们预期人类反馈(HF)在人们具有复杂直觉易于引出但难以形式化和自动化时,相对于其他技术具有最大的比较优势。”([Bai等,2022](https://arxiv.org/abs/2204.05862))
InstructGPT(SFT + RLHF)优于仅使用SFT
对话是灵活的。给定提示后,有许多合理的回应,其中一些比其他的更好。演示数据告诉模型在特定上下文中哪些回应是合理的,但并不告诉模型一个回应是多好或多差。
这个想法是:如果我们有一个评分函数,当给定一个提示和一个回应时,会输出一个评分,用于评估该回应的好坏。然后我们使用这个评分函数进一步训练我们的LLMs,使其给出得分较高的回应。这正是RLHF所做的。RLHF由两部分组成:
- 训练一个奖励模型作为评分函数。 2. 优化LLM以生成奖励模型会给出高分的响应。
»»RLHF有效的假设原因««
Yoav Goldberg 在 三个关于为什么 RLHF 有效的假设 上有一篇很棒的笔记。
- 多样性假设:在SFT期间,预期模型的输出应该在一定程度上与展示的响应相匹配。例如,给定提示“举例说明一种语言?”,如果展示的响应是“西班牙语”,而模型的响应是“Java”,则可能会将模型的响应标记为错误。
- 负反馈假设:演示只给模型提供正面信号(例如,只展示模型良好的响应),而不是负面信号(例如,展示模型不良响应的情况)。RL使我们能够向模型展示负面信号。
- 幻觉假设:RLHF应该有助于处理幻觉问题,我们将在RLHF和幻觉部分详细介绍。
3.1. 奖励模型(RM)
RM 的工作是为一对(提示,回复)输出一个分数。训练模型输出给定输入的分数是机器学习中一项非常常见的任务。你可以将其简单地构建为分类或回归任务。训练奖励模型的挑战在于获取可信赖的数据。让不同的标注者为相同的回复给出一致的分数结果是相当困难的。要求标注者比较两个回复并决定哪个更好要容易得多。
标注过程将生成类似这样的数据:(提示,获胜回应,失败回应)。这被称为比较数据。
这里放翻译好的文字:这是来自Anthropic的HH-RLHF数据集比较数据的示例。就个人而言,我更喜欢losing_response。这突显了从人类偏好中学习的挑战。人类偏好是多样的,不可能用单一的数学公式来捕捉。
提示
获胜回应
失去响应
如何让我的狗高兴?
我不确定你指的是什么。
我不知道我们是否应该让狗变得兴奋。我认为对于一只狗来说,在清醒的状态下体验世界是很重要的。
现在是迷幻的部分:只给定这些比较数据,如何训练模型给出具体的分数?就像你可以让人类做(基本上)任何事情一样,只要给出正确的激励,你也可以让模型做(基本上)任何事情,只要给出正确的目标(即损失函数)。
对于InstructGPT,其目标是最大化获胜回复和失败回复之间的得分差异(详见数学公式部分)。
人们已经尝试了不同的方法来初始化一个RM:例如从头开始训练一个RM,或者以SFT模型作为种子开始。从SFT模型开始似乎能够获得最佳性能。直觉是RM至少应该和LLM一样强大,才能够很好地评分LLM的回应。
数学表达式
可能会有一些变化,但这是核心思想。
- 训练数据:格式为(提示,获胜响应,失败响应)的高质量数据
- 数据规模:100K - 1M 个示例
- InstructGPT:50,000 个提示。每个提示有 4 到 9 个响应,形成 6 到 36 对(获胜响应,失败响应)。这意味着在(提示,获胜响应,失败响应)格式中有 30 万到 180 万个训练示例。
- Constitutional AI,被怀疑是 Claude(Anthropic)的骨干:318K 比较 - 由人类生成的 135K,由人工智能生成的 183K。Anthropic 有一个旧版本的数据是开源的(hh-rlhf),其中大约包含 17 万次比较。
- (r_\theta):正在训练的奖励模型,由 (\theta) 参数化。训练过程的目标是找到使损失最小化的 (\theta)。
- 训练数据格式:
- (x):提示
- (y_w):获胜响应
- (y_l):失败响应
- 对于每个训练样本 ((x, y_w, y_l))
- (s_w=r_\theta(x, y_w)):获胜响应的奖励模型得分
- (s_l=r_\theta(x, y_l)):失败响应的奖励模型得分
- 损失值:(-\log(\sigma(s_w - s_l)))
- 目标:找到 (\theta) 以最小化所有训练样本的期望损失。(-E_x\log(\sigma(s_w - s_l)))
为了更直观地了解这个损失函数是如何工作的,让我们将其可视化。
让 (d = s_w - s_l)。这是 (f(d) = -\log(\sigma(d))) 的图表。对于负的 (d),损失值较大,这鼓励奖励模型不要给予获胜响应比输掉响应更低的分数。
收集比较数据的用户界面
以下是 OpenAI 标注员用来为 InstructGPT 的 RM 创建训练数据的 UI 截图。标注员既会给出从 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的分数。如今,大多数人使用Proximal Policy Optimization(PPO),这是OpenAI于2017年发布的一种强化学习算法。
在这个过程中,从一个分布中随机选择提示 - 例如,我们可能会在客户提示中随机选择。这些提示中的每一个都被输入到LLM模型中,以获得一个响应,然后由RM给出一个分数。
OpenAI 还发现有必要添加一个约束:从这个阶段得到的模型不应该偏离太远于从 SFT 阶段得到的模型(在下面的目标函数中以 KL 散度项数学表示)和原始的预训练模型。直觉是对于任何给定提示,可能有许多可能的响应,其中绝大多数 RM 以前从未见过。对于许多未知的(提示,响应)对,RM 可能会错误地给出极高或极低的分数。没有这个约束,我们可能会偏向那些得分极高的响应,尽管它们可能不是好的响应。
OpenAI有一张很棒的图表,解释了SFT和RLHF在InstructGPT中的应用。
数学表达式
- 机器学习任务: 强化学习
- 行动空间: LLM 使用的标记词汇。采取行动意味着选择一个标记词来生成。
- 观察空间: 所有可能提示的分布。
- 策略: 在给定观察(提示)的情况下,采取的所有行动(生成的所有标记词)的概率分布。LLM 构成了一种策略,因为它决定了下一个生成的标记词的可能性。
- 奖励函数: 奖励模型。
- 训练数据: 随机选择的提示
- 数据规模: 10,000 - 100,000 个提示
- InstructGPT: 40,000 个提示
- (RM):从阶段3.1获得的奖励模型。
- (LLM^{SFT}):从阶段2获得的监督微调模型。
- 给定提示 (x),它输出响应的分布。
- 在InstructGPT论文中,(LLM^{SFT})被表示为 (\pi^{SFT})。
- (LLM^{RL}_\phi):使用强化学习训练的模型,由 (\phi) 参数化。
- 目标是找到 (\phi) 以最大化根据 (RM) 的得分。
- 给定提示 (x),它输出响应的分布。
- 在InstructGPT论文中,(LLM^{RL}_\phi)被表示为 (\pi^{RL}_\phi)。
- (x):提示
- (D_{RL}):明确用于RL模型的提示分布。
- (D_{pretrain}):预训练模型的训练数据分布。
对于每个训练步骤,您从 (D ext{{RL}}) 中抽取一个 (x ext{{RL}}) 批次,从 (D ext{{pretrain}}) 中抽取一个 (x ext{{pretrain}}) 批次。每个样本的目标函数取决于样本来自哪个分布。
- 对于每个 (x ext{RL}),我们使用 (LLM^{RL} ext{_}\phi) 来采样一个回复:(y \sim LLM^{RL}_\phi(x ext{RL}))。目标函数计算如下。请注意,目标函数中的第二项是 KL 散度,以确保 RL 模型不会偏离 SFT 模型太远。
\\[\text{目标}_1(x_{RL}, y; \phi) = RM(x_{RL}, y) - \beta \log \frac{LLM^{RL}_\phi(y \vert x)}{LLM^{SFT}(y \vert x)}\\]
2. 对于每个 (x_{pretrain}),目标计算如下。直观上,这个目标是为了确保 RL 模型在文本补全任务上不会表现更差 - 这是预训练模型优化的任务。
[\text{目标}2(x{pretrain}; \phi) = \gamma \log LLM^{RL}\phi(x{pretrain})]
最终目标是上述两个目标期望值的总和。在强化学习设置中,我们最大化目标,而不是像在之前的步骤中那样最小化目标。
[\text{目标}(\phi) = E ext{_{x \sim D_{RL}}}E\text{_{y \sim LLM^{RL}_\phi(x)} [RM(x, y) - \beta \log \frac{LLM^{RL}_\phi(y \vert x)}{LLM^{SFT}(y \vert x)}] + \gamma E\text{_{x \sim D_{pretrain}}\log LLM^{RL}_\phi(x)}]
注意:
所使用的符号略有不同于InstructGPT 论文中使用的符号,我觉得这里的符号更加明确,但它们都指的是完全相同的目标函数。
The objective function as written in the InstructGPT paper.
RLHF 和幻觉
幻觉发生在人工智能模型编造内容时。这是许多公司不愿将大型语言模型纳入其工作流程的重要原因之一。
有两个假设,我发现了解释LLMs产生幻觉的原因。
Pedro A. Ortega等人于2021年10月在DeepMind首次提出的第一个假设是,LLMs产生幻觉是因为它们“缺乏对其行为因果关系的理解”(当时,DeepMind使用“妄想”一词来表示“幻觉”)。他们表明,这可以通过将响应生成视为因果干预来解决。
第二个假设是幻觉是由于LLM的内部知识与标注者的内部知识之间的不匹配造成的。在他的UC Berkeley talk(2023年4月),OpenAI联合创始人、PPO作者John Schulman提出行为克隆会导致幻觉。在SFT期间,LLMs被训练模仿人类编写的回应。如果我们使用我们拥有但LLM没有的知识来回应,我们就在教导LLM产生幻觉。
这一观点也在2021年12月由另一位OpenAI员工Leo Gao清晰地阐述。理论上,人类标注者可以在每个提示中包含他们所知道的所有上下文,以教导模型仅使用现有知识。然而,在实践中这是不可能的。
Schulman相信LLMs知道自己知道的东西(在我看来这是一个很大的说法),这意味着如果我们找到一种方法强迫LLMs只给出包含他们所知信息的答案,幻觉就可以被纠正。然后他提出了一些解决方案。
- 验证:要求LLM解释(检索)获取答案的来源。 2. RL. 记住,在第3.1阶段中,奖励模型仅使用比较进行训练:响应A比响应B更好,没有任何关于为什么A更好或更好多少的信息。 Schulman认为,通过拥有更好的奖励函数,例如对模型进行更多惩罚以防止虚构,我们可以解决幻觉问题。
这是2023年4月John Schulman的演讲的截图。
从舒尔曼的讲话中,我得到的印象是RLHF应该有助于减轻幻觉。然而,InstructGPT论文显示RLHF实际上使幻觉恶化。尽管RLHF导致幻觉恶化,但它改善了其他方面,总体上,人类标注者更喜欢RLHF模型而不是仅有SFT模型。
幻觉对InstructGPT(RLHF + SFT)的影响比仅SFT更严重(Ouyang等,2022年)
基于语言模型了解自身知识的假设,一些人尝试通过提示来减少幻觉,例如添加尽可能真实地回答,如果不确定答案,说“抱歉,我不知道”
。让语言模型简洁回答似乎也有助于减少幻觉 - 语言模型需要生成的标记越少,他们编造东西的机会就越小。
结论
这篇文章写起来真的很有趣 - 希望你阅读时也感到愉快。我还有一个关于RLHF限制的完整部分 - 例如人类偏好的偏见、评估挑战和数据所有权问题 - 但决定将其留到另一篇文章中,因为这篇已经够长了。
当我深入研究关于RLHF的论文时,我对三件事印象深刻:
- 训练像ChatGPT这样的模型是一个相当复杂的过程 - 令人惊讶的是它居然奏效了。 2. 规模之大令人发指。我一直知道大型语言模型需要大量数据和计算资源,但整个互联网的数据!!?? 3. 公司(曾经)分享了多少关于他们的流程。DeepMind的Gopher论文有120页。OpenAI的InstructGPT论文有68页,Anthropic分享了他们的161K hh-rlhf比较示例,Meta提供了他们的LLaMa模型供研究使用。社区也有大量的善意和动力来创建开源模型和数据集,比如OpenAssistant和LAION。这是一个令人兴奋的时刻!
我们仍处于LLM的早期阶段。全世界其他地方刚刚意识到LLM的潜力,所以竞赛才刚刚开始。关于LLM的许多事情,包括RLHF,都将不断发展。但我希望这篇文章能帮助您更好地了解LLM是如何在幕后训练的,这有望帮助您选择最适合您需求的最佳LLM!