Abstract
将语言模型做得更大并不会自动提高它们遵循用户意图的能力。例如,大型语言模型可能会生成不真实、有毒或对用户不有帮助的输出。换句话说,这些模型并未与用户对齐(aligned)。本文展示了一种通过人类反馈来对齐语言模型与用户意图的途径,适用于广泛的任务。我们首先使用一组标签者编写的提示和通过OpenAI API提交的提示,收集了一个展示所需模型行为的数据集,然后利用这些数据集对GPT-3进行监督学习的微调。接着,我们收集了模型输出的排名数据集,用于进一步通过人类反馈的强化学习微调这个监督模型。我们称得出的模型为InstructGPT。在我们提示分布上的人工评估中,1.3亿参数的InstructGPT模型的输出优于175亿参数的GPT-3模型,尽管其参数少了100倍。此外,InstructGPT模型在真实性方面有改善,并且在生成有毒输出方面有所减少,同时在公共NLP数据集上的性能退步也很小。尽管InstructGPT仍然会犯简单的错误,但我们的结果表明,通过人类反馈进行微调是一种对齐语言模型与人类意图的有前途的方向。
1 Introduction
大型语言模型(LMs)可以通过一些任务示例作为输入来“提示”(“prompte)执行各种自然语言处理(NLP)任务。然而,这些模型经常表现出意外的行为,例如捏造事实、生成偏见或有毒的文本,或根本不遵循用户指令(Bender et al., 2021; Bommasani et al., 2021; Kenton et al., 2021; Weidinger et al., 2021; Tamkin et al., 2021; Gehman et al., 2020)。这是因为许多最近的大型语言模型所使用的语言建模目标——从互联网上预测下一个词——与“以有帮助和安全的方式遵循用户指令”的目标不同(Radford et al., 2019; Brown et al., 2020; Fedus et al., 2021; Rae et al., 2021; Thoppilan et al., 2022)。因此,我们称语言建模目标为不对齐。避免这些意外行为对于部署并在数百个应用中使用的语言模型尤为重要。
图1:在我们的API提示分布上对各种模型进行的人类评估,评估标准是每个模型的输出相对于175B SFT模型的输出被偏好的频率。我们的InstructGPT模型(PPO-ptx)以及其不使用预训练混合的变体(PPO)显著优于GPT-3基线模型(GPT、GPT提示)。我们的1.3B PPO-ptx模型的输出相比于175B GPT-3模型的输出更受偏好。本文中的误差条表示95%的置信区间。
我们通过训练语言模型以符合用户意图来在对齐方面取得进展(Leike et al., 2018)。这包括显式意图,例如遵循指令,以及隐式意图,例如保持真实,不带有偏见、毒性或其他有害内容。使用Askell et al.(2021)的术语,我们希望语言模型具备以下特征:有用(能够帮助用户完成任务),诚实(不捏造信息或误导用户),无害(不对个人、环境或社会造成身体、心理或社会上的伤害)。我们在第3.6节中详细阐述了这些标准的评估方法。
我们专注于通过微调方法对齐语言模型。具体来说,我们使用来自人类反馈的强化学习(reinforcement learning from human feedback,RLHF;Christiano et al., 2017; Stiennon et al., 2020)来微调GPT-3,使其能够遵循广泛的书面指令(见图2)。该技术使用人类偏好作为奖励信号来微调模型。我们首先雇佣了40名承包商来标注我们的数据,基于他们在筛选测试中的表现(有关更多详细信息,请参见第3.4节和附录B.1)。然后,我们收集了一组人类编写的示例数据,这些示例展示了期望输出行为的表现,这些示例来自提交到OpenAI API的(主要是英语的)提示和一些标注者编写的提示,并用来训练我们的监督学习基线。接下来,我们收集了一组人类标注的比较数据,比较了模型在更大范围的API提示下的输出。然后,我们训练一个奖励模型(RM),以预测标注者更喜欢哪个模型输出。最后,我们使用这个RM作为奖励函数,并利用PPO算法(Schulman et al., 2017)微调我们的监督学习基线,以最大化这个奖励。我们在图2中展示了这一过程。这个过程使GPT-3的行为对齐到特定人群(主要是我们的标注者和研究人员)的偏好,而不是任何更广泛的“人类价值观”;我们将在第5.2节中进一步讨论这一点。我们将得到的模型称为InstructGPT。
图2:一个图解展示了我们方法的三个步骤:(1)监督微调(SFT),(2)奖励模型(RM)训练,以及(3)通过近端策略优化(PPO)在该奖励模型上进行强化学习。蓝色箭头表示这些数据用于训练我们的一种模型。在步骤2中,A-D框是来自我们模型的样本,这些样本由标注者进行排名。有关我们方法的更多细节,请参见第3节。
我们主要通过让标注员对模型输出的质量进行评分来评估我们的模型,这些评分基于来自持有数据的客户的测试集(这些客户在训练数据中没有被代表)。我们还在一系列公共NLP数据集上进行自动评估。我们训练了三种模型大小(分别为1.3B、6B和175B参数),所有模型都使用GPT-3架构。我们的主要发现如下:
标注员显著更喜欢InstructGPT的输出,而不是GPT-3的输出。在我们的测试集中,1.3B参数的InstructGPT模型的输出比175B GPT-3的输出更受青睐,尽管前者的参数数量少了100倍。这些模型使用相同的架构,唯一的区别在于InstructGPT是在我们的人工数据上进行微调的。即使我们为GPT-3添加了少量示例提示来提高其跟随指令的能力,这一结果仍然成立。175B InstructGPT的输出被更喜欢的概率为85 ± 3%,相比之下,少量示例的175B GPT-3的输出被更喜欢的概率为71 ± 4%。InstructGPT模型生成的输出在标注员看来也更合适,并且更可靠地遵循了指令中的明确约束。
InstructGPT在真实性方面比GPT-3有所改善。在TruthfulQA基准测试中,InstructGPT生成真实和有信息量的回答的频率是GPT-3的两倍。我们的结果在没有针对GPT-3进行对抗性选择的题目子集上也同样强劲。在我们API提示分布中的“封闭域”任务中(例如摘要和封闭域QA),InstructGPT模型编造输入中不存在的信息的频率是GPT-3的一半(分别为21%和41%的虚假率)。
InstructGPT在毒性方面相较于GPT-3有小幅改善,但在偏见方面没有显著提升。为了测量毒性,我们使用了RealToxicityPrompts数据集(Gehman等,2020),并进行了自动评估和人工评估。在被提示要尊重的情况下,InstructGPT模型生成的毒性输出比GPT-3少约25%。在Winogender(Rudinger等,2018)和CrowSPairs(Nangia等,2020)数据集上,InstructGPT的表现并没有显著优于GPT-3。
通过修改我们的RLHF微调过程,我们可以最小化在公共NLP数据集上的性能退化。在RLHF微调过程中,我们观察到与GPT-3相比,在某些公共NLP数据集上出现了性能退化,尤其是在SQuAD(Rajpurkar等,2018)、DROP(Dua等,2019)、HellaSwag(Zellers等,2019)和WMT 2015法语到英语翻译(Bojar等,2015)等数据集上。这是一个“对齐税”的例子,因为我们的对齐过程以某些我们可能关心的任务性能降低为代价。通过将PPO更新与提高预训练分布对数似然的更新(PPO-ptx)混合使用,我们可以大幅减少这些数据集上的性能退化,同时不会影响标注员的偏好评分。
我们的模型对未用于训练数据的“持出”标注者的偏好进行了泛化。为了测试模型的泛化能力,我们进行了一个初步实验,发现持出标注者对InstructGPT的输出的偏好与训练标注者差不多。然而,还需要进一步研究这些模型在更广泛用户群体中的表现,以及它们在对所需行为存在分歧的输入上的表现。
公共NLP数据集并不反映我们的语言模型的实际使用情况。我们将GPT-3在我们的人工偏好数据(即InstructGPT)上的微调与GPT-3在两种不同的公共NLP任务汇编上的微调进行了比较:FLAN(Wei等,2021)和T0(Sanh等,2021)(特别是T0++变体)。这些数据集包括各种NLP任务,以及每个任务的自然语言指令。在我们的API提示分布上,FLAN和T0模型的表现略逊于我们的SFT基准,标注者显著偏好InstructGPT(InstructGPT的胜率为73.4 ±2%,而我们的T0和FLAN版本分别为26.8 ±2%和29.8 ±2%)。
InstructGPT模型在RLHF微调分布之外的指令上展现出有前景的泛化能力。我们定性地探测了InstructGPT的能力,发现它能够按照指令总结代码、回答关于代码的问题,有时还能遵循不同语言的指令,尽管这些指令在微调分布中非常稀少。相比之下,GPT-3也能执行这些任务,但需要更细致的提示,且通常不遵循这些领域的指令。这个结果令人兴奋,因为它表明我们的模型能够泛化“遵循指令”的概念。它们即使在获得很少直接监督信号的任务上也保持了一些对齐。
InstructGPT仍然会犯一些简单错误。例如,InstructGPT可能仍会未能遵循指令、编造事实、对简单问题给出长篇模糊回答,或未能识别具有虚假前提的指令。
总体来说,我们的结果表明,通过使用人工偏好对大型语言模型进行微调显著改善了其在各种任务上的表现,尽管仍需大量工作以提高其安全性和可靠性。
本文的其余部分结构如下:我们首先在第2节详细介绍相关工作,然后在第3节深入探讨我们的方法和实验细节,包括我们的高层次方法(3.1)、任务和数据集细节(3.2和3.3)、人工数据收集(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 Related work
Research on alignment and learning from human feedback. 规范性先验(Nahian et al., 2021)。我们的工作可以视为将RLHF直接应用于对语言模型在广泛语言任务分布上的对齐。对齐和从人类反馈中学习的研究。我们在之前的技术基础上进行构建,旨在使模型与人类意图对齐,特别是从人类反馈中学习的强化学习(RLHF)。这一技术最初用于训练简单机器人在模拟环境和Atari游戏中(Christiano et al., 2017; Ibarz et al., 2018),最近被应用于对语言模型进行微调以总结文本(Ziegler et al., 2019; Stiennon et al., 2020; Böhm et al., 2019; Wu et al., 2021)。这些工作也受到类似的使用人类反馈作为奖励的研究的影响,包括对话(Jaques et al., 2019; Yi et al., 2019; Hancock et al., 2019)、翻译(Kreutzer et al., 2018; Bahdanau et al., 2016)、语义解析(Lawrence and Riezler, 2018)、故事生成(Zhou and Xu, 2020)、评论生成(Cho et al., 2018)和证据提取(Perez et al., 2019)。Madaan et al.(2022)利用书面的人类反馈来增强提示,提高GPT-3的性能。还有工作在文本环境中使用带有规范性先验的RL对代理进行对齐(Nahian et al., 2021)。我们的工作可以视为将RLHF直接应用于对齐语言模型在广泛语言任务上的分布。
Training language models to follow instructions。我们的工作还与语言模型在跨任务泛化研究相关,在这类研究中,语言模型在各种公开的自然语言处理(NLP)数据集上进行微调(通常以适当的指令为前缀),并在不同的NLP任务上进行评估。相关研究表明,对语言模型进行各种NLP任务的微调,通过指令可以提高它们在持留任务上的下游表现,无论是zero-shot还是few-shot设置下。
还有一类相关的工作是针对导航的指令跟随,其中模型被训练以遵循自然语言指令在模拟环境中进行导航(Bahdanau et al., 2018; Abramson et al., 2020; Zhao et al., 2021)。
Evaluating the harms of language models.。修改语言模型行为的目标之一是减轻这些模型在实际部署中的危害。这些风险已经被广泛记录(Bender et al., 2021; Bommasani et al., 2021; Kenton et al., 2021; Weidinger et al., 2021; Tamkin et al., 2021)。语言模型可能会产生偏见的输出(Dhamala et al., 2021; Liang et al., 2021; Manela et al., 2021; Caliskan et al., 2017; Kirk et al., 2021),泄露私人数据(Carlini et al., 2021),生成虚假信息(Solaiman et al., 2019; Buchanan et al., 2021),并被恶意使用;有关详细信息,请参阅Weidinger et al. (2021)。在特定领域部署语言模型会带来新的风险和挑战,例如在对话系统中(Henderson et al., 2018; Xu et al., 2020; Dinan et al., 2019b)。有一个新兴但不断增长的领域旨在建立基准,以具体评估这些危害,特别是毒性(Gehman et al., 2020)、刻板印象(Nadeem et al., 2020)和社会偏见(Dhamala et al., 2021; Nangia et al., 2020; Rudinger et al., 2018)。在这些问题上取得显著进展是困难的,因为对语言模型行为的善意干预可能会有副作用(Welbl et al., 2021; Blodgett et al., 2020);例如,减少语言模型毒性的努力可能会降低其对少数群体文本建模的能力,因为训练数据中存在偏见相关性(Xu et al., 2021)。
Modifying the behavior of language models to mitigate harms.有许多方法可以改变语言模型的生成行为。Solaiman 和 Dennison(2021)在一个小型的、以价值为导向的数据集上对语言模型进行了微调,这提高了模型在问答任务中遵守这些价值观的能力。Ngo 等(2021)通过删除语言模型在生成一组研究者编写的触发短语时具有较高条件概率的文档来过滤预训练数据集。当在这个过滤后的数据集上进行训练时,他们的语言模型生成的有害文本减少,但语言建模性能略有下降。Xu 等(2020)使用多种方法来提高聊天机器人的安全性,包括数据过滤、在生成过程中阻止某些词或n-gram、使用安全专用控制令牌(Keskar 等,2019;Dinan 等,2019a),以及人类在环数据收集(Dinan 等,2019b)。其他减轻语言模型生成偏见的方法包括词嵌入正则化(Liu 等,2019;Huang 等,2019)、数据增强(Liu 等,2019;Dinan 等,2019a;Sheng 等,2019)、利用零空间投影使敏感词汇的分布更均匀(Liang 等,2021)、不同的目标函数(Qian 等,2019)或因果中介分析(Vig 等,2020)。还有一些研究致力于通过使用第二个(通常较小的)语言模型来引导语言模型的生成(Dathathri 等,2019;Krause 等,2020),这种思路的变体也被应用于减少语言模型的毒性(Schick 等,2021)。
3 Methods and experimental details
3.1 High-level methodology
我们的方法论遵循 Ziegler 等(2019)和 Stiennon 等(2020)的研究,他们将该方法应用于风格化续写和总结领域。我们的流程从一个预训练的语言模型开始(例如 Radford 等,2019;Brown 等,2020;Fedus 等,2021;Rae 等,2021;Thoppilan 等,2022),我们希望模型在这些模型上生成一致的输出,同时配备了一组经过培训的人工标注员(详见第 3.4 节)。然后我们执行以下三个步骤(见图 2)。
步骤 1:收集示例数据,并训练一个监督策略。我们的标注员在输入提示分布上提供所需行为的示例(有关此分布的详细信息,请参见第 3.2 节)。然后,我们使用监督学习对预训练的 GPT-3 模型进行微调,以便在这些数据上进行训练。
步骤 2:收集比较数据,并训练一个奖励模型。我们收集一组模型输出的比较数据,其中标注员指明他们对给定输入的输出更倾向于哪个。然后,我们训练一个奖励模型来预测人类首选的输出。
步骤 3:使用 PPO 对策略进行优化。我们将奖励模型的输出作为标量奖励。我们使用 PPO 算法(Schulman 等,2017)对监督策略进行微调,以优化该奖励。
步骤 2 和 3 可以不断迭代;我们会在当前最佳策略上收集更多比较数据,这些数据用于训练新的奖励模型,然后是新的策略。在实践中,我们的大部分比较数据来自我们的监督策略,也有一些来自我们的 PPO 策略。
3.2 Dataset
我们的提示数据集主要由提交给 OpenAI API 的文本提示组成,特别是那些使用早期版本的 InstructGPT 模型(通过在我们的演示数据子集上进行监督学习进行训练)在 Playground 界面上生成的提示。(是一个由 OpenAI 托管的接口,用于直接与我们的 API 上的模型进行交互;请参见 https://beta.openai.com/playground。)使用 Playground 的客户被告知他们的数据可能会用于进一步的模型训练,这通过在使用 InstructGPT 模型时的持续通知进行告知。在本文中,我们不使用来自生产环境中使用 API 的客户的数据。我们通过检查共享长公共前缀的提示来启发式地去重提示,并将每个用户 ID 的提示数量限制为 200 个。我们还根据用户 ID 创建训练、验证和测试集分割,以确保验证集和测试集中不包含来自训练集中用户的数据。为了避免模型学习到潜在的敏感客户信息,我们会过滤训练集中所有的个人身份信息(PII)。
为了训练首批 InstructGPT 模型,我们要求标注员自己编写提示。这是因为我们需要一个初始的指令性提示来源来启动这个过程,而这类提示在常规 GPT-3 模型的 API 中不常见。我们要求标注员编写三种类型的提示:
- 普通提示:我们简单地要求标注员提出一个任意任务,同时确保这些任务具有足够的多样性。
- 少量示例提示:我们要求标注员编写一个指令,并为该指令提供多个查询/响应对。
- 基于用户的提示:我们根据 OpenAI API 等待列表应用中的用例,要求标注员编写与这些用例相对应的提示。
从这些提示中,我们生成了三个不同的数据集,用于我们的微调过程:
- SFT 数据集:包含标注员示例,用于训练我们的 SFT 模型。
- RM 数据集:包含标注员对模型输出的排名,用于训练我们的 RMs。
- PPO 数据集:没有任何人工标签,用于 RLHF 微调。
SFT 数据集包含大约 13,000 个训练提示(包括来自 API 和标注员编写的),RM 数据集有 33,000 个训练提示(包括来自 API 和标注员编写的),而 PPO 数据集有 31,000 个训练提示(仅来自 API)。关于数据集大小的更多详细信息见表 6。
为了让大家了解我们数据集的组成,在表 1 中我们展示了 API 提示(特别是 RM 数据集)中用例类别的分布,这些类别由我们的承包商标注。大多数用例是生成性的,而不是分类或问答。我们还在表 2 中展示了一些说明性提示(由研究人员编写,用以模拟提交给 InstructGPT 模型的提示),更多提交给 InstructGPT 模型的提示见附录 A.2.1,提交给 GPT-3 模型的提示见附录 A.2.2。有关我们数据集的更多详细信息,请参见附录 A。
表 1:我们 API 提示数据集中用例类别的分布
3.3 Tasks
我们的训练任务来源于两个渠道:(1)由我们的标注员编写的提示数据集;(2)提交给早期 InstructGPT 模型的提示数据集(见表 6)。这些提示非常多样,包括生成、问答、对话、总结、提取和其他自然语言任务(见表 1)。我们的数据集超过 96% 是英语,但在第 4.3 节中,我们还测试了模型响应其他语言指令和完成编程任务的能力。
对于每个自然语言提示,任务通常通过自然语言指令直接指定(例如:“写一个关于聪明青蛙的故事”),但也可以通过少量示例间接指定(例如,给出两个青蛙故事的例子,并提示模型生成一个新的故事)或隐含续写(例如,提供一个关于青蛙的故事开头)。在每种情况下,我们要求标注员尽力推测编写提示的用户的意图,并在任务非常不明确的情况下跳过输入。此外,标注员还会考虑隐含的意图,例如回答的真实性,以及潜在的有害输出,如偏见或有毒语言,遵循我们提供的指导(见附录 B)和他们的最佳判断。
3.4 Human data collection
为了生成我们的示范和比较数据,并进行主要评估,我们在 Upwork 和 ScaleAI 上聘请了大约 40 名承包商。与早期在人类偏好数据收集的总结任务中(Ziegler 等,2019;Stiennon 等,2020;Wu 等,2021)相比,我们的输入涵盖了更广泛的任务,有时可能包括争议性和敏感话题。我们的目标是选择一组对不同人群偏好敏感的标注员,并且善于识别潜在有害的输出。因此,我们进行了一个筛选测试,以评估标注员在这些方面的表现。我们选择了在此测试中表现良好的标注员;有关我们选择程序和标注员人口统计信息的更多信息,请参见附录 B.1。
在训练和评估过程中,我们的对齐标准可能会发生冲突:例如,当用户请求可能有害的回应时。在训练期间,我们优先考虑对用户的有用性(不这样做需要做出一些困难的设计决策,我们留待未来工作中解决;有关更多讨论,请参见第 5.4 节)。然而,在最终评估中,我们要求标注员优先考虑真实性和无害性(因为这是我们真正关心的)。如 Stiennon 等(2020)所述,我们在项目过程中与标注员密切合作。我们有一个入职培训过程来培训标注员,编写每个任务的详细说明(见附录 B.2),并在共享聊天室中回答标注员的问题。作为初步研究,以观察我们的模型在多大程度上能推广到其他标注员的偏好,我们雇佣了一组不参与任何训练数据生成的独立标注员。这些标注员来自相同的供应商,但没有经过筛选测试。尽管任务复杂,我们发现标注员之间的一致性率相当高:训练标注员之间的一致性为 72.6 ± 1.5%,而对于持有标注员,这一数字为 77.3 ± 1.3%。相比之下,在 Stiennon 等(2020)的总结工作中,研究人员之间的一致性为 73 ± 4%
3.5 Models
我们从 Brown 等人(2020)提出的 GPT-3 预训练语言模型开始。这些模型在广泛的互联网数据上进行了训练,能够适应各种下游任务,但其行为特征尚不完全明确。在这些模型的基础上,我们采用了三种不同的技术进行训练:
-
监督微调(SFT):我们使用监督学习对 GPT-3 进行微调,基于标签器演示进行训练。训练进行了 16 个周期,使用了余弦学习率衰减和 0.2 的残差 dropout。我们根据验证集上的 RM 分数进行最终的 SFT 模型选择。类似于 Wu 等人(2021)的研究,我们发现 SFT 模型在经过 1 个周期后在验证损失上出现了过拟合;然而,我们发现训练更多的周期有助于提高 RM 分数和人类偏好评分,尽管存在过拟合现象。
-
奖励建模(RM):从去除最终非嵌入层的 SFT 模型开始,我们训练一个模型以接受提示和回应,并输出一个标量奖励。在本文中,我们仅使用 6B 奖励模型,因为这样可以节省大量计算资源,而我们发现 175B 奖励模型的训练可能不稳定,因此不适合作为 RL 过程中的值函数(有关更多细节,请参见附录 C)。
在 Stiennon 等人(2020)的研究中,RM 是在一个数据集上训练的,该数据集包含了两个模型输出在相同输入下的比较。他们使用交叉熵损失,比较作为标签——奖励的差异代表了一个回应比另一个回应更受人类标签器青睐的对数赔率。为了加快比较收集的速度,我们向标签器展示了 K = 4 到 K = 9 个回应进行排名。这产生了每个提示下的 次比较。由于比较在每个标注任务中高度相关,我们发现如果简单地将这些比较混入一个数据集中,一次遍历数据集会导致奖励模型过拟合。相反,我们将每个提示下的所有次比较作为一个单独的批量元素进行训练。这种方法计算效率更高,因为它只需要对每个完成进行一次前向传递(而不是对 ( K ) 个完成进行 次前向传递),并且因为它不再过拟合,所以实现了更好的验证准确性和对数损失(也就是说,如果将每个可能的 次比较视为一个独立的数据点,那么每个完成可能会用于 ( K - 1 ) 次独立的梯度更新。模型在经过一个周期后容易过拟合,因此在一个周期内重复数据也会导致过拟合。)
其中 是奖励模型在参数下对提示 ( x ) 和完成 ( y ) 的标量输出,是在 和的一对中更受偏好的完成,( D ) 是人类比较的数据集。
最后,由于奖励模型损失对奖励的偏移是不变的,我们通过使用偏差对奖励模型进行归一化,使得标注者的演示在进行强化学习之前,平均得分为0。
Reinforcement learning (RL).。我们再次遵循 Stiennon 等(2020),使用 PPO(Schulman 等,2017)对 SFT 模型进行微调。该环境是一个赌博机环境,它呈现一个随机的客户提示并期望对该提示做出回应。根据提示和回应,它产生一个由奖励模型决定的奖励并结束回合。此外,我们在每个 token 上加入来自 SFT 模型的 KL 惩罚,以减轻奖励模型的过度优化。价值函数从 RM 初始化。我们将这些模型称为“PPO”。我们还尝试将预训练梯度与 PPO 梯度混合,以解决在公共 NLP 数据集上的性能回退问题。我们将这些模型称为“PPO-ptx”。我们在 RL 训练中最大化以下综合目标函数:
其中, 是学习到的 RL 策略, 是经过监督训练的模型, 是预训练分布。KL 奖励系数和预训练损失系数 分别控制 KL 惩罚和预训练梯度的强度。对于“PPO”模型,设置为 0。除非另有说明,本文中的 InstructGPT 指的是 PPO-ptx 模型。
Baselines。我们将我们的 PPO 模型的表现与 SFT 模型和 GPT-3 进行比较。我们还比较了 GPT-3 在提供了少量示例前缀后(GPT-3-prompted)进入指令跟随模式的表现。这个前缀会被添加到用户指定的指令前面。
此外,我们还将 InstructGPT 与对 175B GPT-3 在 FLAN(Wei et al., 2021)和 T0(Sanh et al., 2021)数据集上进行微调进行比较,这两个数据集包含各种 NLP 任务,并为每个任务提供自然语言指令(数据集在包含的 NLP 任务和指令风格上有所不同)。我们分别在约 100 万个示例上进行微调,并选择在验证集上获得最高奖励模型得分的检查点。有关更多训练细节,请参见附录 C。
3.6 Evaluation
为了评估我们的模型“对齐”程度,我们首先需要明确在此背景下“对齐”是什么意思。对齐的定义历来是一个模糊且令人困惑的话题,存在各种竞争性的提议(Chen et al., 2021;Leike et al., 2018;Gabriel, 2020)。根据 Leike et al. (2018) 的定义,我们的目标是训练那些符合用户意图的模型。更实际地说,对于我们的语言任务,我们采用类似于 Askell et al. (2021) 的框架,他们定义的对齐模型应是有帮助的、诚实的和无害的。
为了体现有帮助性,模型应遵循指令,并且能够从少量示例或其他可解释模式(如“Q: {问题}\nA:”)中推断意图。由于给定的提示意图可能不明确或存在歧义,我们依赖于标注者的判断,而我们的主要指标是标注者的偏好评分。然而,由于标注者不是生成提示的用户,用户实际意图和标注者仅通过阅读提示所认为的意图之间可能存在差异。
在纯生成模型中,如何衡量诚实性尚不明确;这需要将模型的实际输出与其关于正确输出的“信念”进行比较,但由于模型是一个黑箱,我们无法推断其信念。相反,我们通过两个指标来衡量模型的真实度——即模型对世界的陈述是否真实:(1)评估模型在封闭领域任务中捏造信息的倾向(“幻觉”),以及(2)使用 TruthfulQA 数据集(Lin et al., 2021)。显然,这只是对真实度含义的一个小部分的体现。
与诚实性类似,衡量语言模型的危害性也面临许多挑战。在大多数情况下,语言模型的危害性取决于其输出在现实世界中的使用。例如,一个生成有毒输出的模型在作为部署聊天机器人时可能有害,但如果用于数据增强以训练更准确的毒性检测模型,则可能甚至是有益的。在项目早期,我们让标注者评估输出是否“潜在有害”。然而,我们停止了这一做法,因为这需要过多地推测输出最终将如何使用,特别是因为我们的数据也来自于与 Playground API 接口交互的客户(而不是来自生产使用案例)。
因此,我们使用了一套更具体的代理标准,旨在捕捉部署模型中可能导致危害的行为的不同方面:我们让标注者评估输出在客户助手背景下是否不适当、是否贬低受保护群体,或是否包含色情或暴力内容。我们还通过 RealToxicityPrompts(Gehman et al., 2020)和 CrowS-Pairs(Nangia et al., 2020)等数据集对模型进行基准测试,以测量偏见和毒性。
总之,我们可以将定量评估分为两个独立的部分:
Evaluations on API distribution. 我们的主要指标是基于从与训练分布相同来源中挑选出的提示的人工偏好评分。当使用来自 API 的提示进行评估时,我们只选择来自未包含在训练中的客户的提示。然而,考虑到我们的训练提示是为 InstructGPT 模型设计的,这可能会对 GPT-3 基线模型造成不利影响。因此,我们还在专门为 GPT-3 设计的提示上进行评估;这些提示通常不采用“指令跟随”风格,而是专门为 GPT-3 设计的。在这两种情况下,对于每个模型,我们计算其输出被偏好于基线策略的频率;我们选择 175B SFT 模型作为基线,因为其性能接近中间水平。此外,我们还要求标注员对每个响应的整体质量进行 1-7 分的评估,并收集每个模型输出的一系列元数据(见表 3)。
Evaluations on public NLP datasets. 我们在两类公共数据集上进行评估:一类数据集捕捉语言模型安全性的方面,特别是真实性、毒性和偏见;另一类数据集则捕捉传统 NLP 任务的zero-shot 性能,如问答、阅读理解和摘要。我们还在 RealToxicityPrompts 数据集(Gehman 等,2020)上进行毒性的人类评估。我们将发布我们模型在所有基于采样的 NLP 任务上的样本。