研究与学习 4.0 · 优秀 2022-12-09 · 文章

ChatGPT内核:InstructGPT,基于反馈指令的PPO强化学习

ChatGPT内核:InstructGPT,基于反馈指令的PPO强化学习 聊天机器人 ChatGPT 在诱导下写出「毁灭人类计划书」,并给出... 5.1 对准性研究(Alignment Research)的启发 > 聊天机器人 ChatGPT 在诱导下写出「毁灭人类计划书」,并给出代码,AI 发展有哪些问题需关注? 泻药。开发GPT也有两年了,看到这样的新闻确实是欣慰而震撼的。GPT Family刚提出的时候并没有受到很大的关注度,因此GPT-1也是不温不火。到GPT-2的时候auto-regressive paradigm终于开始有一群大佬研究,到现在也在学术界被广泛研究,很多大模型都...

打开原文回到归档

ChatGPT内核:InstructGPT,基于反馈指令的PPO强化学习

原文链接: https://zhuanlan.zhihu.com/p/589747432

目录

聊天机器人 ChatGPT 在诱导下写出「毁灭人类计划书」,并给出代码,AI 发展有哪些问题需关注?

泻药。开发GPT也有两年了,看到这样的新闻确实是欣慰而震撼的。GPT Family刚提出的时候并没有受到很大的关注度,因此GPT-1也是不温不火。到GPT-2的时候auto-regressive paradigm终于开始有一群大佬研究,到现在也在学术界被广泛研究,很多大模型都借鉴了GPT-2的思想(纯预训练模型)。后来到GPT-3,模型能力进一步增强,终于有出圈的趋势。后来的InstructGPT一经提出,立刻获得学界广泛关注,22年才提出的,到现在已经100+引用了。现在ChatGPT相当于超大版本的InstructGPT终于出圈,表现出来的能力确实也给我很大的震撼。

在回答这个问题之前,首先要搞清楚ChatGPT的发展历程。

1. GPT-1用的是无监督预训练+有监督微调。 2. GPT-2用的是纯无监督预训练。 3. GPT-3沿用了GPT-2的纯无监督预训练,但是数据大了好几个量级。 4. InstructGPT在GPT-3上用强化学习做微调,内核模型为PPO-ptx,下面的论文会详细分析。 5. ChatGPT沿用了InstructGPT,但是数据大了好几个量级。

怎么微调呢?看下面的图:

1. 你现在有一个GPT-3模型。 2. 第一步,先简单地微调一下GPT-3,需要人工标注。

1. 工程师团队设计了一个prompt dataset,里面有大量的提示文本,这些文本介绍了任务是啥。 2. 把这个prompt dataset发给人类标注员进行标注,其实就是回答问题。 3. 用这个标注过的数据集微调GPT-3。

4. 第二步,训练一个奖励模型,需要人工标注。

1. 拿这个微调过的GPT-3去预测prompt dataset里面的任务,获得一系列结果,图中是四个。 2. 把这四个结果交给人类标注员进行标注,把预测的结果从好到坏进行标注。 3. 用这些标注的结果训练一个奖励模型(reward model),这个模型在下一步会用到。

6. 第三步,用PPO持续更新策略的参数,不用任何人工标注。

1. 再拿GPT-3预测prompt dataset中的文本,这里GPT-3被一个策略包装并且用PPO更新。 2. 用第二步训练好的奖励模型给策略的预测结果打分,用强化学习术语说就是计算reward。 3. 这个计算出来的分数会交给包着GPT-3内核的策略来更新梯度。

总结来看,就是结合了监督学习和强化学习。监督学习先让GPT-3有一个大致的微调方向,强化学习用了AC(Actor-Critic)架构里面的PPO(Proximal Policy Optimization)更新方法来更新GPT-3的参数。PPO是OpenAI的baseline method,可以说使用PPO是InstructGPT非常自然的一个选择。

从上面的分析可以看出,模型几乎没有太多创新点可言,除了把PPO套进来没有太多难点。事实上,InstructGPT的这种训练方法的提出就是为了解决AI的毒性和不忠实性,因为人工标注数据的时候特别关注了这一块的优化,从结果来看在忠实性上InstructGPT已经比GPT-3提升了不少。论文里提到,微调的数据考虑了大量安全方面的case,甚至邀请了DeepMind安全专家组共同研究。但是题主说的毁灭人类计划书的这个case诱导性还是比较强,模型在诱导attack的case下能力还是不足的,这也在论文的5.3节和5.4节讨论到了。随着模型能够存储的有效知识越来越多,模型的可靠性会越来越重要,这估计会引来一大堆研究。总体而言,目前模型的毒性还比较高,需要进一步的探索。

如果你对详细的技术分析感兴趣,请往下读。本文整理自ChatGPT的兄弟模型InstructGPT(小型ChatGPT)的原论文。

  • * *

如果你还没有读过ChatGPT的博客,请在阅读本文前优先阅读博客,因为博客提供了更加直观的解释。如果想要基于InstructGPT做研究,请直接查阅 _5.5节:影响_。注意:译者在文中有注解的地方会标为(译者注:……)

ChatGPT全家桶阅读指南

对InstructGPT的大致了解:InstructGPT博客+RLHF博客

对InstructGPT的深度理解:InstructGPT博客+RLHF博客+论文(本文)

对InstructGPT的系统学习:InstructGPT博客+RLHF博客+论文(本文)+系统性概括(更新后会上链接)

必备知识

要快速读懂本论文,强烈建议对以下先修知识有所理解。如果有大致的了解但是并不确定具体内容,请先阅读文章,如果遇到不懂的地方再回来点链接;如果连名字都没听过,最好不要在看完相应的文章前试图阅读本论文。

1. InstructGPT博客+RLHF博客 2. 强化学习基础 3. PPO(近端策略优化) 4. Prompt Tuning基础

论文地址:

InstructGPT: Training language models to follow instructions with human feedback

摘要

使语言模型更大并不能从本质上使它们更好地遵循用户的意图。 例如,大型语言模型可能会生成不真实的、有毒的或对用户没有帮助的输出。 换句话说,这些模型与其用户不一致。 在本文中,我们展示了一种途径,可以通过根据人类反馈进行微调,使语言模型与用户对各种任务的意图保持一致。 从一组标记器编写的提示和通过 OpenAI API 提交的提示开始,我们收集了所需模型行为的标记器演示数据集,我们用它来使用监督学习微调 GPT-3。 然后,我们收集模型输出排名的数据集,我们使用该数据集通过人类反馈的强化学习进一步微调该监督模型。 我们将生成的模型称为 InstructGPT。 在对我们的提示分布的人工评估中,1.3B 参数 InstructGPT 模型的输出优于 175B GPT-3 的输出,尽管参数少 100 倍。 此外,InstructGPT 模型显示了真实性的提高和有毒输出生成的减少,同时对公共 NLP 数据集的性能回归最小。 尽管 InstructGPT 仍然会犯一些简单的错误,但我们的结果表明,根据人类反馈进行微调是使语言模型与人类意图保持一致的一个有前途的方向。

1 引入

可以“提示”大型语言模型 (LM) 执行一系列自然语言处理 (NLP) 任务,并将一些任务示例作为输入。 然而,这些模型经常表现出意想不到的行为,例如编造事实、生成有偏见或有毒的文本,或者根本不遵循用户指令(Bender 等人,2021 年;Bommasani 等人,2021 年;Kenton 等人,2021 年;Weidinger 等人) 等人,2021 年;Tamkin 等人,2021 年;Gehman 等人,2020 年)。 这是因为许多最近的大型 LM 使用的语言建模目标——预测来自互联网的网页上的下一个标记——不同于“有帮助和安全地遵循用户的指示”的目标(Radford et al., 2019; Brown et al ., 2020 年;Fedus 等人,2021 年;Rae 等人,2021 年;Thoppilan 等人,2022 年)。 因此,我们说语言建模目标未对齐。 避免这些意外行为对于在数百个应用程序中部署和使用的语言模型尤为重要。

通过训练语言模型按照用户的意图行事,我们在对齐语言模型方面取得了进展(Leike 等人,2018 年)。 这既包括明确的意图,例如遵循指示,也包括隐含的意图,例如保持真实、不带偏见、有毒或以其他方式有害。 使用 Askell 等人的语言 (2021),我们希望语言模型有帮助(它们应该帮助用户解决他们的任务)、诚实(它们不应该捏造信息或误导用户)和无害(它们不应该对人或环境造成身体、心理或社会伤害)。 我们在第 3.6 节中详细说明了对这些标准的评估。

图 1:在我们的 API 提示分布上对各种模型的人工评估,根据每个模型的输出优于 175B SFT 模型的输出的频率进行评估。 我们的 InstructGPT 模型(PPO-ptx)及其未经预训练混合训练的变体(PPO)显着优于 GPT-3 基线(GPT,GPT 提示); 我们的 1.3B PPO-ptx 模型的输出优于 175B GPT-3 的输出。

我们专注于调整语言模型的微调方法。 具体来说,我们使用来自人类反馈的强化学习(RLHF;Christiano 等人,2017 年;Stiennon 等人,2020 年)来微调 GPT-3 以遵循广泛的书面说明(见图 2)。 该技术使用人类偏好作为奖励信号来微调我们的模型。 我们首先聘请了一个由 40 名承包商组成的团队,根据他们在筛选测试中的表现来标记我们的数据(有关更多详细信息,请参见第 3.4 节和附录 B.1)。 _(译者注:果然是财大气粗)_然后,我们在提交给 OpenAI API 的提示(主要是英语)和一些标签编写的提示上收集所需输出行为的人工演示数据集,并使用它来训练我们的监督学习baseline。 接下来,我们收集了一个数据集,该数据集包含我们模型在更大的 API 提示集上的输出之间的人工标记比较。 然后,我们在该数据集上训练一个奖励模型 (RM),以预测我们的贴标签者更喜欢哪个模型输出。 最后,我们使用此 RM 作为奖励函数并微调我们的监督学习基线以使用 PPO 算法最大化此奖励(Schulman 等人,2017)。 我们在图 2 中说明了这个过程。这个过程使 GPT-3 的行为与特定人群(主要是我们的贴标签者和研究人员)的既定偏好保持一致,而不是任何更广泛的“人类价值观”概念; 我们将在 5.2 节中进一步讨论这个问题。 我们将生成的模型称为 InstructGPT。

图 2:说明我们方法的三个步骤的图表:(1) 监督微调 (SFT),(2) 奖励模型 (RM) 训练,以及 (3) 通过近端策略优化 (PPO) 对此奖励模型进行强化学习。 蓝色箭头表示此数据用于训练我们的模型之一。 在第 2 步中,方框 A-D 是来自我们的模型的样本,这些样本由标注者进行排序。

我们主要通过让我们的贴标机对我们测试集上模型输出的质量进行评分来评估我们的模型,包括来自拒绝客户(未在训练数据中表示)的提示。 我们还对一系列公共 NLP 数据集进行自动评估。 我们训练三种模型尺寸(1.3B、6B 和 175B 参数),我们所有的模型都使用 GPT-3 架构。 我们的主要发现如下:

1. 与 GPT-3 的输出相比,打标签者明显更喜欢 InstructGPT 输出。 在我们的测试集上,1.3B 参数 InstructGPT 模型的输出优于 175B GPT-3 的输出,尽管参数少了 100 多倍。 这些模型具有相同的架构,唯一不同的是 InstructGPT 是根据我们的人类数据进行微调的。 即使我们向 GPT-3 添加少量提示以使其更好地遵循指令,这个结果仍然成立。 我们的 175B InstructGPT 的输出在 85±3% 的时间内优于 175B GPT-3 输出,在 71±4% 的时间内优于 few-shot 175B GPT-3。 InstructGPT 模型还根据我们的标签生成更合适的输出,并且更可靠地遵循指令中的明确约束。 2. InstructGPT 模型在真实性方面比 GPT-3 有所改进。TruthfulQA 基准测试中,InstructGPT 生成真实且信息丰富的答案的频率大约是 GPT-3 的两倍。 对于未针对 GPT-3 进行对抗性选择的问题子集,我们的结果同样出色。 在我们的 API 提示分发中的“封闭域”任务中,输出不应包含输入中不存在的信息(例如摘要和封闭域 QA),InstructGPT 模型将输入中不存在的信息弥补大约一半 通常为 GPT-3(幻觉率分别为 21% 和 41%)。 3. InstructGPT 与 GPT-3 相比毒性略有改善,但偏差并没有改善。 为了测量毒性,我们使用 RealToxicityPrompts 数据集(Gehman 等人,2020 年)并进行自动和人工评估。 当提示尊重时,InstructGPT 模型产生的毒性输出比 GPT-3 少约 25%。 在 Winogender(Rudinger 等人,2018 年)和 CrowSPairs(Nangia 等人,2020 年)数据集上,InstructGPT 与 GPT-3 相比没有显着改善。 4. 我们可以通过修改我们的 RLHF 微调程序来最小化公共 NLP 数据集的性能回归。 在 RLHF 微调期间,我们在某些公共 NLP 数据集上观察到与 GPT-3 相比的性能回归,特别是 SQuAD(Rajpurkar 等人,2018 年)、DROP(Dua 等人,2019 年)、HellaSwag(Zellers 等人,2019 年) ), 和 WMT 2015 法英翻译 (Bojar et al., 2015)。 这是一个“调整税”的例子,因为我们的调整程序是以降低我们可能关心的某些任务的性能为代价的。 通过将 PPO 更新与增加预训练分布 (PPO-ptx) 对数似然的更新混合,我们可以大大减少这些数据集的性能回归,而不会影响标签偏好分数。(译者注:性能回归测试(我们一般直接叫回归测试regression tests)是一种比较方法,用于检查软件应用程序在连续构建中的性能。通俗地讲,如果第二个版本基于第一个版本之上,我们认为第二个版本在几乎所有指标上都取得比第一个版本更好的性能,才算通过第二个版本的性能回归测试。) 5. 我们的模型概括为不产生任何训练数据的“保留”标签的偏好。 为了测试我们模型的泛化性,我们对留出的贴标器进行了初步实验,发现它们更喜欢 InstructGPT 输出而不是 GPT-3 的输出,其速率与我们的训练贴标器大致相同。 然而,还需要做更多的工作来研究这些模型如何在更广泛的用户群体上执行,以及它们如何在人类不同意所需行为的输入上执行。 6. 公共 NLP 数据集并不能反映我们的语言模型是如何使用的。 我们将根据人类偏好数据(即 InstructGPT)微调的 GPT-3 与根据两种不同的公共 NLP 任务编译微调的 GPT-3 进行比较:FLAN(Wei 等人,2021 年)和 T0(Sanh 等人,2021年)(特别是 T0++ 变体)。 这些数据集由各种 NLP 任务组成,并结合了每个任务的自然语言指令。 在我们的 API 提示分布上,我们的 FLAN 和 T0 模型比我们的 SFT 基线表现稍差,并且标记者明显更喜欢 InstructGPT 而不是这些模型(InstructGPT 与我们的基线相比有 73.4 ± 2% 的胜率,而 26.8 ± 2% 和 29.8 ± 我们的 T0 和 FLAN 版本分别为 2%)。 7. InstructGPT 模型显示了对 RLHF 微调分布之外的指令的有前途的泛化。 我们定性地探究了 InstructGPT 的功能,发现它能够遵循指令来总结代码,回答有关代码的问题,有时还会遵循不同语言的指令,尽管这些指令在微调分布中非常罕见。 相比之下,GPT-3 可以执行这些任务,但需要更仔细的提示,并且通常不会遵循这些领域的说明。 这个结果令人兴奋,因为它表明我们的模型能够概括“遵循指令”的概念。 即使在他们获得很少直接监督信号的任务上,他们也会保持一定的一致性。 8. InstructGPT 仍然会犯一些简单的错误。 例如,InstructGPT 仍然可能无法遵循指令、编造事实、对简单问题给出长对冲答案,或者无法检测到带有错误前提的指令。

总的来说,我们的结果表明,使用人类偏好微调大型语言模型可以显着改善它们在广泛任务中的行为,尽管要提高它们的安全性和可靠性还有很多工作要做。

本文的其余部分结构如下:我们首先在第 2 节详细介绍相关工作,然后在第 3 节深入介绍我们的方法和实验细节,包括我们的高级方法 (3.1)、任务和数据集详细信息(3.3 和 3.2) ,人类数据收集(3.4),我们如何训练我们的模型(3.5),以及我们的评估程序(3.6)。 然后,我们在第 4 节中展示了我们的结果,分为三个部分:API 提示分布的结果 (4.1)、公共 NLP 数据集的结果 (4.2) 和定性结果 (4.3)。 最后,我们在第 5 节中对我们的工作进行了扩展讨论,包括对对齐研究的影响 (5.1)、我们对齐的对象 (5.2)、局限性 (5.3)、开放性问题 (5.4) 以及这项工作的更广泛影响 (5.5 ).

2 相关工作

1. 关于对齐和从人类反馈中学习的研究。 我们以先前的技术为基础,使模型与人类意图保持一致,特别是从人类反馈中强化学习 (RLHF) 。 它最初是为在模拟环境和 Atari 游戏中训练简单的机器人而开发的(Christiano 等人,2017 年;Ibarz 等人,2018 年),最近被应用于微调语言模型以总结文本(Ziegler 等人,2019 年; Stiennon 等人,2020 年;Böhm 等人,2019 年;Wu 等人,2021 年)。 这项工作反过来又受到在对话(Jaques 等人,2019 年;Yi 等人,2019 年;Hancock 等人,2019 年)、翻译(Kreutzer 等人, 2018 年;Bahdanau 等人,2016 年)、语义解析(Lawrence 和 Riezler,2018 年)、故事生成(Zhou 和 Xu,2020 年)、评论生成(Cho 等人,2018 年)和证据提取(Perez 等人, 2019)等领域。 Madaan等人 (2022) 使用书面人工反馈来增强提示并提高 GPT-3 的性能。 还有一些工作是在基于文本的环境中使用 RL 和规范先验来对齐代理(Nahian 等人,2021)。 我们的工作可以看作是 RLHF 在广泛分布的语言任务上对齐语言模型的直接应用。对齐语言模型意味着什么这个问题最近也受到关注(Gabriel,2020)。 肯顿等人。 (2021) 对 LM 中因错位导致的行为问题进行分类,包括产生有害内容和游戏指定错误的目标。 在并行工作中,Askell 等人。 (2021) 提议将语言助手作为对齐研究的试验台,研究一些简单的基线及其缩放特性。 2. 训练语言模型以遵循说明。 我们的工作还与语言模型中的交叉任务泛化研究有关,其中 LM 在广泛的公共 NLP 数据集(通常以适当的指令为前缀)上进行微调,并在一组不同的 NLP 任务上进行评估。 在这一领域已有一系列工作(Yi 等人,2019 年;Mishra 等人,2021 年;Wei 等人,2021 年;Khashabi 等人,2020 年;Sanh 等人,2021 年;Aribandi 等人。 , 2021),它们在训练和评估数据、指令格式、预训练模型的大小和其他实验细节方面有所不同。 跨研究的一致发现是,在一系列 NLP 任务上使用指令微调 LM 可以提高它们在零样本和少样本设置中的保留任务的下游性能。 在导航指令遵循方面也有相关工作,其中训练模型遵循自然语言指令在模拟环境中导航(Bahdanau 等人,2018 年;Abramson 等人,2020 年;Zhao 等人,2021 年) ). 3. 评估语言模型的危害。 修改语言模型行为的一个目标是减轻这些模型在现实世界中部署时的危害。 这些风险已被广泛记录(Bender 等人,2021 年;Bommasani 等人,2021 年;Kenton 等人,2021 年;Weidinger 等人,2021 年;Tamkin 等人,2021 年)。 语言模型会产生有偏见的输出(Dhamala 等人,2021 年;Liang 等人,2021 年;Manela 等人,2021 年;Caliskan 等人,2017 年;Kirk 等人,2021 年),泄露私人数据(Carlini 等人 ., 2021),产生错误信息 (Solaiman et al., 2019; Buchanan et al., 2021),并被恶意使用; 为了进行全面审查,我们将读者引导至 Weidinger 等人 (2021) 在特定领域部署语言模型会带来新的风险和挑战,例如在对话系统中(Henderson 等人,2018 年;Xu 等人,2020 年;Dinan 等人,2019b)。 有一个新兴但不断发展的领域旨在建立基准以具体评估这些危害,特别是围绕毒性(Gehman 等人,2020 年)、刻板印象(Nadeem 等人,2020 年)和社会偏见(Dhamala 等人,2021 年 ;Nangia 等人,2020 年;Rudinger 等人,2018 年)。 在这些问题上取得重大进展很困难,因为对 LM 行为的善意干预可能会产生副作用(Welbl 等人,2021 年;Blodgett 等人,2020 年); 例如,由于训练数据中的偏见相关性,降低 LM 毒性的努力会降低它们对来自代表性不足的群体的文本建模的能力(Xu 等人,2021 年)。 4. 修改语言模型的行为以减轻危害。 有很多方法可以改变语言模型的生成行为。 Solaiman 和 Dennison (2021) 在一个小型的、以价值为目标的数据集上微调 LM,这提高了模型在问答任务中遵守这些价值观的能力。 恩戈等 (2021) 通过删除语言模型很有可能生成一组研究人员编写的触发短语的文档来过滤预训练数据集。 当在这个过滤后的数据集上训练时,他们的 LM 生成的有害文本较少,但代价是语言建模性能略有下降。 Xu等 (2020) 使用多种方法来提高聊天机器人的安全性,包括数据过滤、在生成过程中阻止某些单词或 n-gram、安全特定控制令牌(Keskar 等人,2019 年;Dinan 等人,2019a), 和人在环路数据收集(Dinan 等人,2019b)。 减轻 LM 产生的偏差的其他方法使用词嵌入正则化(Liu 等人,2019 年;Huang 等人,2019 年)、数据增强(Liu 等人,2019 年;Dinan 等人,2019a;Sheng 等人。 , 2019),零空间投影使敏感标记上的分布更加均匀 (Liang et al., 2021),不同的目标函数 (Qian et al., 2019),或因果中介分析 (Vig et al., 2020)。 还有一些工作是使用第二个(通常较小的)语言模型来指导语言模型的生成(Dathathri 等人,2019 年;Krause 等人,2020 年),并且这种想法的变体已被应用于减少语言模型的毒性( 希克等人,2021 年)。

表 1:来自我们的 API 提示数据集的用例类别分布。

表 2:来自我们的 API 提示数据集的说明性提示。 这些是受实际用法启发而虚构的示例——请参阅附录 A.2.1 中的更多示例。

3 方法

3.1 高层方法论

我们的方法遵循 Ziegler 等人(2019) 和 Stiennon 等人 (2020) 的方法,将其应用于文体延续和总结领域。 我们从预训练语言模型(Radford 等人,2019 年;Brown 等人,2020 年;Fedus 等人,2021 年;Rae 等人,2021 年;Thoppilan 等人,2022 年)开始。 我们希望我们的模型能够和一组训练有素的人工标注者产生一致的输出(详情请参阅第 3.4 节)。 然后,我们应用以下三个步骤(图 2)。

(译者注:知道你们都懒得翻回去,我重新贴一张上来,一定要搞清楚这个图,全文的精髓都在这)

图 2:说明我们方法的三个步骤的图表:(1) 监督微调 (SFT),(2) 奖励模型 (RM) 训练,以及 (3) 通过近端策略优化 (PPO) 对此奖励模型进行强化学习。 蓝色箭头表示此数据用于训练我们的模型之一。 在第 2 步中,方框 A-D 是来自我们的模型的样本,这些样本由标注者进行排序。

第 1 步:收集演示数据,并训练监督策略。 我们的标签提供了输入提示分布上所需行为的演示(有关此分布的详细信息,请参阅第 3.2 节)。 然后,我们使用监督学习对该数据微调预训练的 GPT-3 模型。 第 2 步:收集对比数据,训练奖励模型。 我们收集了模型输出之间比较的数据集,其中标记器指示他们更喜欢给定输入的输出。 然后我们训练奖励模型来预测人类偏好的输出。 第 3 步:使用 PPO 针对奖励模型优化策略。 我们使用 RM 的输出作为标量奖励。 我们使用 PPO 算法微调监督策略以优化此奖励(Schulman 等人,2017)。

步骤2和步骤3可以不断迭代; 收集当前最佳策略的更多比较数据,用于训练新的 RM,然后训练新的策略。 在实践中,我们的大部分比较数据来自我们的有监督策略,也有一些来自我们的 PPO 策略。

3.2 数据集

我们的提示数据集主要包含提交给 OpenAI API 的文本提示,特别是那些在 Playground 界面上使用早期版本的 InstructGPT 模型(通过对我们演示数据的子集进行监督学习进行训练)的提示。使用 Playground 的客户被告知 只要使用 InstructGPT 模型,他们的数据就可以通过定期通知来训练更多模型。 在本文中,我们不使用来自在生产中使用 API 的客户的数据。 我们通过检查共享长公共前缀的提示来启发式地删除重复提示,并且我们将提示的数量限制为每个用户 ID 200 个。 我们还根据用户 ID 创建我们的训练、验证和测试拆分,以便验证和测试集不包含来自其数据在训练集中的用户的数据。 为了避免模型学习潜在的敏感客户详细信息,我们过滤了训练拆分中的所有提示以获取个人身份信息 (PII)。

为了训练第一个 InstructGPT 模型,我们要求贴标签者自己编写提示。 这是因为我们需要一个类似指令的提示的初始来源来引导这个过程,而这些类型的提示并不经常提交给 API 上的常规 GPT-3 模型。 我们要求贴标签者写出三种类型的提示:

1. 简单:我们只是要求贴标签者提出一个任意任务,同时确保任务具有足够的多样性。 2. Few-shot:我们要求标注者提出一条指令,以及该指令的多个查询/响应对。 3. 基于用户:我们在 OpenAI API 的候补名单申请中陈述了许多用例。

我们要求标签商提出与这些用例相对应的提示。 根据这些提示,我们生成了三个用于微调过程的不同数据集:(1) 我们的 SFT 数据集,带有用于训练我们的 SFT 模型的标签器演示,(2) 我们的 RM 数据集,带有用于训练的模型输出的标签器排名,和 (3) 我们的 PPO 数据集,没有任何人工标签,用作 RLHF 微调的输入。 SFT 数据集包含大约 13k 个训练提示(来自 API 和 labeler-written),RM 数据集有 33k 个训练提示(来自 API 和 labeler-written),PPO 数据集有 31k 个训练提示(仅来自 API)。 表 6 中

... (内容已截断,原文更长)