摘要
仅仅通过增大语言模型的规模,并不能使其天然地更好地遵循用户的意图。例如,大型语言模型可能会生成不真实、有害或对用户毫无帮助的输出。换句话说,这些模型并未与用户保持一致。在本文中,我们展示了一种通过人类反馈微调来使语言模型在各种任务上与用户意图保持一致的方法。我们从一组由标注者编写的提示以及通过OpenAI API提交的提示开始,收集了一个标注者所期望的模型行为的数据集,并使用该数据集通过监督学习对GPT-3进行微调。随后,我们收集了一个模型输出排名数据集,并利用该数据集通过人类反馈的强化学习进一步微调该监督模型。我们将得到的模型称为InstructGPT。在针对我们提示分布进行的人类评估中,尽管InstructGPT模型的参数只有13亿个,是GPT-3(1750亿个参数)的百分之一,但其输出却更受青睐。此外,InstructGPT模型在提升真实性方面表现出色,减少了有害输出的生成,同时在公共自然语言处理(NLP)数据集上的性能下降微乎其微。尽管InstructGPT仍会犯一些简单错误,但我们的结果表明,通过人类反馈进行微调是使语言模型与人类意图保持一致的一个有前景的方向。1 引言
大型语言模型(LMs)在给定一些任务示例作为输入的情况下,可以被“提示”执行一系列的自然语言处理(NLP)任务。然而,这些模型常常会表现出一些非预期行为,比如编造事实、生成带有偏见或有害的文本,或者简单地不遵循用户指令(Bender等人,2021;Bommasani等人,2021;Kenton等人,2021;Weidinger等人,2021;Tamkin等人,2021;Gehman等人,2020)。这是因为许多最新的大型语言模型所使用的语言建模目标——即预测互联网网页上的下一个标记——与“有益且安全地遵循用户指令”这一目标大相径庭(Radford等人,2019;Brown等人,2020;Fedus等人,2021;Rae等人,2021;Thoppilan等人,2022)。因此,我们说这些语言建模目标是失调的。对于部署并应用于数百个应用程序中的语言模型来说,避免这些非预期行为尤为重要。我们在使语言模型与用户意图保持一致方面取得了进展,通过训练它们按照用户的意图行事(Leike等人,2018)。这既包括明确的意图,如遵循指令,也包括隐含的意图,如保持真实、不带有偏见、不产生有害内容等。借用Askell等人(2021)的表述,我们希望语言模型能够提供帮助(它们应帮助用户完成任务)、保持诚实(不应编造信息或误导用户),并做到无害(不应给人们、环境或社会带来身体、心理或社会伤害)。我们专注于微调方法来使语言模型与用户意图保持一致。具体而言,我们使用来自人类反馈的强化学习(RLHF;Christiano等人,2017;Stiennon等人,2020)来微调GPT-3,以遵循广泛的书面指令(见图2)。该技术将人类偏好作为奖励信号来对模型进行微调。1.首先,我们根据筛选测试的结果,聘请了一支由40名合同工组成的团队来标注我们的数据。2.随后,我们收集了一个关于(主要是英文)提示所需输出行为的人类编写示例的数据集,这些提示是通过OpenAI API提交的,以及一些标注者编写的提示,并利用这些数据集来训练我们的监督学习基线模型。3.接下来,我们收集了一个关于在更大范围的API提示下,我们模型输出之间的人类标注对比数据集。然后,我们在这个数据集上训练了一个奖励模型(RM),以预测标注者会偏好哪个模型输出。4.最后,我们将这个RM作为奖励函数,并使用PPO算法(Schulman等人,2017)来微调我们的监督学习基线模型,以最大化这个奖励。我们在图2中展示了这一过程。此程序使GPT-3的行为与特定人群(主要是我们的标注者和研究人员)的明确偏好保持一致,而不是任何更广泛的“人类价值观”概念;我们在第5.2节中进一步讨论了这一点。我们将得到的模型称为InstructGPT。我们主要通过让标注者对测试集上模型输出的质量进行评分来评估我们的模型,测试集由未参与训练数据的客户提供的提示组成。此外,我们还在一系列公共NLP数据集上进行了自动评估。我们训练了三种不同大小的模型(13亿、60亿和1750亿参数),所有模型都采用了GPT-3架构。我们的主要发现如下:
1.标注者明显更偏爱InstructGPT的输出,而非GPT-3的输出。在我们的测试集中,尽管只有GPT-3参数的1/100多,但拥有13亿参数的InstructGPT模型的输出仍比1750亿参数的GPT-3的输出更受欢迎。这些模型具有相同的架构,唯一的区别在于InstructGPT在我们的人类数据上进行了微调。即使我们为GPT-3添加了少量提示以提高其遵循指令的能力,这一结果依然成立。我们的1750亿参数的InstructGPT输出有85±3%的时间比同参数的GPT-3输出更受欢迎,且有71±4%的时间比带少量提示的1750亿参数的GPT-3输出更受欢迎。根据标注者的评价,InstructGPT模型能够生成更恰当的输出,并更可靠地遵循指令中的明确约束。
2.InstructGPT模型在真实性方面较GPT-3有所改进。在TruthfulQA基准测试中,InstructGPT生成真实且有用的答案的频率大约是GPT-3的两倍。在针对非故意与GPT-3作对的问题子集上,我们的结果同样强劲。在来自我们API提示分布的“封闭域”任务中,即输出不应包含输入中不存在的信息(如摘要和封闭域问答),InstructGPT模型生成输入中不存在的信息的频率是GPT-3的一半左右(幻觉率分别为21%和41%)。
3.与GPT-3相比,InstructGPT在毒性方面略有改善,但在偏见方面则没有显著变化。为了衡量毒性,我们采用了RealToxicityPrompts数据集(Gehman等人,2020年),并进行了自动和人工评估。在要求尊重他人的情境下,InstructGPT模型生成的毒性输出比GPT-3减少了约25%。然而,在Winogender(Rudinger等人,2018年)和CrowSPairs(Nangia等人,2020年)数据集上,InstructGPT并未显著优于GPT-3。
4.我们可以通过调整我们的RLHF微调程序来最小化在公共NLP数据集上的性能回退。在RLHF微调过程中,我们观察到在某些公共NLP数据集上,特别是SQuAD(Rajpurkar等人,2018年)、DROP(Dua等人,2019年)、HellaSwag(Zellers等人,2019年)以及WMT 2015英法翻译任务(Bojar等人,2015年)上,与GPT-3相比存在性能回退。这可以视为一种“对齐代价”,因为我们的对齐过程以牺牲某些我们可能关心的任务性能为代价。不过,我们可以在不损害标注者偏好评分的前提下,通过将PPO更新与增加预训练分布对数似然性的更新(PPO-ptx)相结合,来大幅降低这些数据集上的性能回退。
5.我们的模型能够泛化到“未参与训练”的标注者的偏好上。为了测试模型的泛化能力,我们与未参与训练的标注者进行了初步实验,并发现他们偏好InstructGPT输出的程度与训练标注者大致相同。然而,要更全面地了解这些模型在不同用户群体上的表现,以及在人类对期望行为存在分歧的输入上的表现,还需要进一步的研究。
6.公共NLP数据集并不能真实反映我们的语言模型是如何被使用的。我们将基于人类偏好数据微调后的GPT-3(即InstructGPT)与基于两种不同公共NLP任务集微调的GPT-3进行了比较: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%)。
7.InstructGPT模型在RLHF微调分布之外的指令上展现出了令人鼓舞的泛化能力。我们通过定性分析探究了InstructGPT的能力,发现它能够遵循编写代码摘要、回答代码相关问题的指令,有时甚至能遵循不同语言的指令,尽管这些指令在微调分布中非常罕见。相比之下,GPT-3虽然能够执行这些任务,但需要更细致的提示,并且通常不会遵循这些领域的指令。这一结果令人振奋,因为它表明我们的模型能够泛化“遵循指令”的概念,即使在获得直接监督信号极少的任务上,它们也保持了一定的对齐性。
8.然而,InstructGPT仍然会犯一些简单的错误。例如,它可能会无法遵循指令、编造事实、对简单问题给出冗长的模糊答案,或者无法识别带有错误前提的指令。
总体而言,我们的研究结果表明,利用人类偏好对大型语言模型进行微调,能够显著改善其在多种任务上的表现。然而,要提升这些模型的安全性和可靠性,仍需大量后续工作。
2 相关工作
基于人类反馈对齐与学习的研究:我们基于先前技术,致力于将模型与人类意图对齐,特别是利用人类反馈的强化学习(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)。Kenton等人(2021)列举了由于不对齐导致的语言模型行为问题,包括生成有害内容和误设目标的游戏化。在同时进行的研究中,Askell等人(2021)提出将语言助手作为对齐研究的试验台,研究了一些简单的基线及其扩展属性。训练语言模型遵循指令:我们的工作还与语言模型中的跨任务泛化研究密切相关,这些研究通常会将语言模型在广泛的公共NLP数据集(这些数据集通常附有适当的指令前缀)上进行微调,并在另一组NLP任务上进行评估。该领域已有诸多研究成果(Yi等人,2019;Mishra等人,2021;Wei等人,2021;Khashabi等人,2020;Sanh等人,2021;Aribandi等人,2021),它们在训练数据、评估数据、指令格式、预训练模型大小以及其他实验细节上各不相同。然而,各项研究的一致发现是,通过附带指令在多种NLP任务上对语言模型进行微调,能够提升模型在零样本和少样本设置下对未见过任务的下游性能。此外,还有一条与指令遵循相关的研究脉络聚焦于导航领域,其中模型被训练为遵循自然语言指令在模拟环境中进行导航(Bahdanau等人,2018;Abramson等人,2020;Zhao等人,2021)。这些研究为理解和提升语言模型在实际应用中的指令遵循能力提供了宝贵的见解。评估语言模型的潜在危害:调整语言模型行为的一个核心目标,是减轻这些模型在现实世界部署时可能带来的危害。这些风险已被广泛记录(Bender等人,2021;Bommasani等人,2021;Kenton等人,2021;Weidinger等人,2021;Tamkin等人,2021)。语言模型可能产生带有偏见的输出(Dhamala等人,2021;Liang等人,2021;Manela等人,2021;Caliskan等人,2017;Kirk等人,2021),泄露私人数据(Carlini等人,2021),制造虚假信息(Solaiman等人,2019;Buchanan等人,2021),甚至被恶意利用。对于全面的回顾,我们推荐读者参阅Weidinger等人(2021)的研究。在特定领域部署语言模型时,会涌现出新的风险与挑战,例如对话系统(Henderson等人,2018;Xu等人,2020;Dinan等人,2019b)。目前,一个新兴但日益壮大的领域正致力于构建基准测试,以具体评估这些危害,特别是围绕毒性(Gehman等人,2020)、刻板印象(Nadeem等人,2020)和社会偏见(Dhamala等人,2021;Nangia等人,2020;Rudinger等人,2018)等方面。然而,在这些问题上取得显著进展并非易事,因为对语言模型行为的善意干预可能会产生副作用(Welbl等人,2021;Blodgett等人,2020)。例如,为减少语言模型的毒性而进行的努力,可能会因训练数据中的偏见性关联,而削弱其模拟少数群体文本的能力(Xu等人,2021)。调整语言模型行为以减少危害:改变语言模型生成行为的方法多种多样。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 方法和实验
3.1 方法
我们的方法论借鉴了Ziegler等人(2019)和Stiennon等人(2020)的研究,这些研究在风格延续和摘要生成领域得到了应用。我们的起点是一个预训练的语言模型(Radford等人,2019;Brown等人,2020;Fedus等人,2021;Rae等人,2021;Thoppilan等人,2022),一系列我们期望模型能产出对齐输出的提示(prompts),以及一支训练有素的人工标注团队。随后,我们遵循以下三个步骤(如图2所示)。步骤1:收集示例数据,训练监督策略。我们的标注者针对输入提示提供所需行为的答案。然后,我们使用监督学习在此数据上微调预训练的GPT-3模型。步骤2:收集对比数据,训练奖励模型。我们收集了一组模型输出之间的对比数据,标注者会指出对于给定的输入,他们更偏好哪个输出。接着,我们训练一个奖励模型来预测人类偏好的输出。步骤3:使用PPO算法针对奖励模型优化策略。我们将奖励模型(RM)的输出作为标量奖励。然后,我们使用PPO算法(Schulman等人,2017)微调监督策略,以优化这一奖励。步骤2和3可以持续迭代;我们在当前最佳策略上收集更多对比数据,用这些数据训练新的奖励模型,然后训练新的策略。在实际操作中,我们的对比数据主要来自监督策略,部分来自PPO策略。3.2 数据集
我们的提示数据集主要由提交给OpenAI API的文本提示组成,特别是那些在Playground界面上使用早期版本的InstructGPT模型(通过在我们的演示数据子集上进行监督学习训练)生成的提示。我们已向使用Playground的客户发送定期通知,告知其数据可能会通过InstructGPT模型用于进一步训练。但本文中,我们并未使用在生产环境中通过API提交的客户数据。为了去重,我们启发式地检查并删除了具有长共同前缀的提示,并将每个用户ID的提示数量限制为200条。此外,我们还根据用户ID对训练集、验证集和测试集进行了划分,以确保验证集和测试集中不包含训练集中用户的任何数据。为避免模型学习到可能敏感的客户详情,我们对训练集中的所有提示进行了过滤,以移除任何个人可识别信息(PII)。我们将API请求概念化为属于以下十个用例之一:生成、开放性问题回答、封闭性问题回答、头脑风暴、聊天、重写、摘要、分类、提取或其他。为了训练最初的InstructGPT模型,我们要求标注者自行编写提示。这是因为我们需要一个初始的指令式提示来启动这一过程,而这些类型的提示通常不会频繁地提交给API上的常规GPT-3模型。我们要求标注者编写以下三种类型的提示:普通型:我们仅要求标注者提出一个任意任务,同时确保这些任务具有足够的多样性。少量样本型:我们要求标注者提出一个指令,并为该指令提供多个查询/响应对。例如,指令可以是“给出一条推文的情感”,而查询则是推文,响应则是“正面”或“负面”。然后,我们可以将这些内容格式化为Brown等人(2020)中的少量样本提示。对于K个查询-响应对,我们使用上下文中的其他K-1个来创建K个训练示例。用户导向型:我们在OpenAI API的候补名单申请中列出了多个用例。我们要求标注者根据这些用例编写相应的提示。基于这些提示,我们生成了三个不同的数据集,用于微调过程:(1) 我们的SFT数据集,包含标注者示例,用于训练我们的SFT模型;(2) 我们的RM数据集,包含标注者对模型输出的排名,用于训练我们的奖励模型(RMs);(3) 我们的PPO数据集,不包含任何人工标签,作为强化学习人类反馈(RLHF)微调的输入。SFT数据集包含约13,000条训练提示(来自API和标注者编写),RM数据集包含33,000条训练提示(同样来自API和标注者编写),而PPO数据集包含31,000条训练提示(仅来自API)。表6提供了数据集大小的更多详细信息。为了了解我们数据集的构成,表1展示了我们的API提示(特别是RM数据集)中用例类别的分布情况,这些类别由我们的承包商标注。大多数用例都是生成性的,而非分类或问答类型。表2还展示了一些示例性提示(由研究人员编写,以模仿提交给InstructGPT模型的提示类型);3.3 任务
我们的训练任务来源于两个渠道:(1)由我们的标注者编写的提示数据集;(2)通过我们的API提交给早期InstructGPT模型的提示数据集(见表6)。这些提示非常多样化,涵盖了生成、问答、对话、摘要、提取以及其他自然语言任务(见表1)。我们的数据集超过96%是英文的,我们也会测试模型对其他语言指令的响应能力以及完成编码任务的能力。对于每个自然语言提示,任务通常直接通过自然语言指令来指定(例如,“写一个关于聪明青蛙的故事”),但也可以通过少量示例(例如,给出两个青蛙故事作为示例,并提示模型生成一个新的故事)或间接延续(例如,提供关于青蛙故事的开头)来间接指定。在每种情况下,我们都要求标注者尽力推断编写提示的用户的意图,并要求他们跳过那些任务非常不明确的输入。此外,我们的标注者还会根据我们提供的指导和他们的最佳判断,考虑隐含的意图,如响应的真实性,以及可能有害的输出,如偏见或有毒语言。3.4 人工数据收集
为了生成演示和对比数据,以及进行主要评估,我们在Upwork和ScaleAI上聘请了一支约40人的承包商团队。与以往收集摘要任务中人类偏好数据的工作(Ziegler等人,2019;Stiennon等人,2020;Wu等人,2021)相比,我们的输入涵盖了更广泛的任务范围,偶尔也会包含有争议和敏感的话题。我们的目标是选择一组对不同人口统计群体偏好敏感且擅长识别潜在有害输出的标注者。因此,我们设计了一项筛选测试,以评估标注者在这些方面的表现。我们选择了在测试中表现良好的标注者;在训练和评估过程中,我们的对齐标准可能会发生冲突:例如,当用户请求可能有害的响应时。在训练阶段,我们优先考虑对用户的帮助性。然而,在最终评估中,我们要求标注者优先考虑真实性和无害性(因为这是我们真正关心的)。与Stiennon等人(2020)的研究类似,我们在整个项目过程中与标注者紧密合作。我们有一个入职流程来培训标注者,为每个任务编写详细的说明,并在共享聊天室中回答标注者的问题。为了初步研究我们的模型如何推广到其他标注者的偏好,我们聘请了另一组不参与任何训练数据制作的标注者。这些标注者来自相同的供应商,但未经过筛选测试。尽管任务复杂,但我们发现标注者之间的一致性率相当高:训练标注者之间的一致性率为72.6% ± 1.5%,而对于未参与训练的标注者,这一数字为77.3% ± 1.3%。相比之下,在Stiennon等人(2020)的摘要工作中,研究人员之间的一致性率为73% ± 4%。