论文InstructGPT (2)2022.3 Training language models to follow instructions with human feedback;架构

Ankie的评论:

2020.3 InstructGPT是ChatGPT的前身,openAI从InstructGPT开始探索商业化GPT,本来是外包团队来做强化学习,后来变成全世界人都来给ChatGPT做强化学习。例如:文心一言的结果里面有几个button,好,坏,重新来一个。其实就是告诉模型当前的结果好不好。

InstructGPT需要3步:

(1) supervised fine-tuning (SFT), 
(2)reward model (RM) training, 
(3) reinforcement learning via proximal policy optimization (PPO) on this reward model.

2 相关工作

模型对齐与从人类反馈中学习。

我们建立在先前的技术上,以将模型与人类意图对齐,特别是从人类反馈中进行的强化学习(RLHF)。该技术最初是为在模拟环境和Atari游戏中训练简单机器人而开发的,最近被应用于微调语言模型以总结文本。这项工作反过来又受到类似工作的影响,这些工作使用人类反馈作为奖励,在对话、翻译、语义解析、故事生成、评论生成和证据提取等领域中进行了尝试。Madaan等人(2022)使用书面的人类反馈来增强提示并改善GPT-3的性能。还有工作致力于使用具有规范先验的RL来在基于文本的环境中对齐智能体。我们的工作可以被视为RLHF在广泛的语言任务上对齐语言模型的直接应用。

语言模型对齐的含义最近也受到了关注列出了由于模型对齐不当而导致的LM中的行为问题,包括产生有害内容和误设目标的游戏化。在并行工作中,Askell等人(2021)提出了语言助手作为对齐研究的测试平台,研究了一些简单的基准和它们的缩放属性。

训练语言模型遵循指令。

我们的工作也与语言模型中的跨任务泛化研究相关,其中语言模型(LMs)在一系列公开的NLP数据集上进行微调,并在不同的NLP任务集上进行评估。这一领域已有一系列工作,这些工作在训练数据、评估数据、指令格式、预训练模型大小以及其他实验细节上存在差异。一项跨研究的共同发现是,在多个NLP任务上对LMs进行微调,并附带指令,可以提高它们在留出任务上的下游性能,无论是在零次学习还是少次学习设置下。

此外,还有一条与导航指令遵循相关的研究线,其中模型被训练以遵循自然语言指令在模拟环境中进行导航。

评估语言模型的危害。

修改语言模型行为的一个目标是减轻这些模型在现实世界中部署时可能带来的危害。这些风险已被广泛记录。语言模型可能产生有偏见的输出,泄露私人数据,制造错误信息,以及被恶意使用;对于全面的回顾,我们建议读者参阅相关研究。在特定领域部署语言模型会产生新的风险和挑战,例如在对话系统中。目前有一个新兴但不断发展的领域,旨在建立基准来具体评估这些危害,特别是围绕毒性、刻板印象和社会偏见。在这些问题上取得重大进展是困难的,因为对LM行为的善意干预可能会产生副作用;例如,减少LM毒性的努力可能会降低其建模来自少数群体的文本的能力。

修改语言模型的行为以减轻危害。

有多种方式可以改变语言模型的生成行为。Solaiman和Dennison对LMs进行了微调,提高了模型在问答任务中遵守价值的能力。Ngo等人通过删除某些文档来过滤预训练数据集,当在这个过滤后的数据集上进行训练时,他们的LMs生成的有害文本减少,但语言建模性能略有下降。Xu等人使用多种方法来提高聊天机器人的安全性,包括数据过滤、在生成过程中阻止某些内容、使用特定于安全性的控制手段以及人类参与的数据收集。还有其他方法用于减轻LMs生成的偏差,如词嵌入正则化、数据增强、空间投影以使敏感内容的分布更加均匀,以及使用不同的目标函数或因果中介分析。还有工作使用第二个语言模型来引导语言模型的生成,以及这种思想的变体被应用于减少语言模型的毒性。

3 方法和实验细节 Methods and experimental details

3.1 架构 High-level methodology


我们的方法论遵循Ziegler等人(2019年)和Stiennon等人(2020年)的方法,这些方法论应用于风格化续写和摘要生成领域。我们首先从一个预训练的语言模型开始,这个模型包含了我们希望其产生对齐输出的提示的分布,以及一组训练有素的人类标注者(详见第3.4节)。然后,我们执行以下三个步骤(见图2)。

  1. 步骤1:收集演示数据,并训练一个监督策略supervised policy。我们的标注者针对输入提示分布提供所需行为的演示(关于此分布的详细信息见第3.2节)。然后,我们使用监督学习在这些数据上微调一个预训练的GPT-3模型。
  2. 步骤2:收集比较数据,并训练一个奖励模型reward model。我们收集一组模型输出之间的比较数据,其中标注者针对给定的输入指出他们更喜欢哪个输出。然后,我们训练一个奖励模型来预测人类偏好的输出。
  3. 步骤3:使用PPO针对奖励模型优化策略。我们将奖励模型的输出作为标量奖励。我们使用PPO算法(Schulman等人,2017年)来微调监督策略以优化此奖励。

步骤2和3可以持续迭代;在当前最佳策略上收集更多比较数据,用于训练新的奖励模型,然后训练新的策略。在实践中,我们的大多数比较数据来自监督策略,少部分来自PPO策略。

3.2 数据集

我们的提示数据集主要由提交给OpenAI API的文本提示组成,特别是那些在Playground界面上使用InstructGPT模型(通过在我们的演示数据子集上进行监督学习训练)的早期版本的用户所提交的。使用Playground的客户被告知,每当使用InstructGPT模型时,他们的数据可能会通过反复通知的方式用于训练更多的模型。在本文中,我们没有使用在生产环境中使用API的客户的数据。我们通过检查具有长共同前缀的提示来启发式地删除重复的提示,并且每个用户ID的提示数量限制为200个。我们还根据用户ID创建训练、验证和测试分割,以确保验证集和测试集中不包含训练集中用户的数据。为了避免模型学习可能敏感的客户详细信息,我们在训练分割中过滤了所有提示中的个人可识别信息(PII)。

为了训练最初的InstructGPT模型,我们要求标签人员自行编写提示。这是因为我们需要一个初始的类似指令的提示来源来启动这个过程,而这类提示通常不会提交给API上的常规GPT-3模型。我们要求标签人员编写三种类型的提示:

• 普通提示:我们仅要求标签人员提出任意任务,同时确保任务具有足够的多样性。
• 少量示例提示:我们要求标签人员提出一个指令,并为该指令提供多个查询/响应对。
• 基于用户的提示:我们在OpenAI API的等待列表申请中列出了一些用例。我们要求标签人员提出与这些用例相对应的提示。

从这些提示中,我们生成了三种不同的数据集,用于我们的微调过程:

  • (1) 我们的SFT数据集,包含用于训练SFT模型的标签人员演示;
  • (2) 我们的RM数据集,包含用于训练RM的标签人员对模型输出的排名;
  • (3) 我们的PPO数据集,没有任何人工标签,用作RLHF微调的输入。

SFT数据集包含约13k个训练提示(来自API和标签人员编写),RM数据集有33k个训练提示(来自API和标签人员编写),而PPO数据集有31k个训练提示(仅来自API)。表6中提供了关于数据集大小的更多详细信息。

为了了解我们数据集的组成,我们在表1中展示了我们的API提示(特别是RM数据集)的用例类别的分布,这些类别由我们的合同工标记。大多数用例都是生成性的,而不是分类或问答。我们还在表2中展示了一些示例性提示(由研究人员编写,以模仿提交给InstructGPT模型的提示类型);附录A.2.1中展示了更多提交给InstructGPT模型的提示,附录A.2.2中展示了提交给GPT-3模型的提示。我们在附录A中提供了关于我们数据集的更多详细信息。

3.3 任务

我们的训练任务来自两个来源:(1) 由我们的标签人员编写的提示数据集;(2) 提交到我们API上早期InstructGPT模型的提示数据集(参见表6)。这些提示非常多样化,包括生成、问答、对话、摘要、提取和其他自然语言任务(参见表1)。我们的数据集超过96%是英文的,但在第4.3节中,我们也会探究我们的模型响应其他语言指令并完成编程任务的能力。

对于每个自然语言提示,任务通常直接通过自然语言指令来指定(例如,“写一个关于聪明青蛙的故事”),但也可以通过少量示例(例如,给出两个青蛙故事的示例,并提示模型生成一个新的故事)或隐式续写(例如,提供一个关于青蛙的故事的开头)来间接指定。在每种情况下,我们都要求标签人员尽最大努力推断编写提示的用户的意图,并要求他们跳过任务非常不清楚的输入。此外,我们的标签人员还考虑了我们提供的指导(参见附录B)和他们自己的最佳判断所隐含的意图,如响应的真实性,以及可能有害的输出,如偏见或有毒的语言。

3.4 人类数据收集

为了生成我们的演示和比较数据,以及进行我们的主要评估,我们在Upwork和通过ScaleAI聘请了一个大约40人的承包商团队。与早期在摘要任务上收集人类偏好数据的工作相比,我们的输入涵盖了更广泛的任务范围,偶尔也会包含有争议和敏感的话题。我们的目标是选择一组对不同人口群体的偏好敏感的标签人员,并且擅长识别可能有害的输出。因此,我们设计了一个筛选测试来衡量标签人员在这些方面的表现。我们选择了在这个测试中表现良好的标签人员;有关我们的选拔程序和标签人员的人口统计信息的更多信息,请参见附录B.1。

在训练和评估过程中,我们的对齐标准可能会产生冲突:例如,当用户请求一个可能有害的响应时。在训练过程中,我们优先考虑对用户的有用性(不这样做需要我们做出一些困难的设计决策,这些决策我们留给未来的工作;更多讨论见第5.4节)。然而,在我们的最终评估中,我们要求标签人员优先考虑真实性和无害性(因为这是我们真正关心的)。

与Stiennon等人(2020)一样,我们在项目过程中与标签人员紧密合作。我们有一个入职流程来培训标签人员参与项目,为每个任务编写详细的说明(见附录B.2),并在共享聊天室中回答标签人员的问题。

作为初步研究,以了解我们的模型如何很好地泛化到其他标签人员的偏好,我们聘请了一组不产生任何训练数据的标签人员。这些标签人员来自相同的供应商,但没有经过筛选测试。

尽管任务的复杂性很高,但我们发现标注者之间的一致性率相当高:训练中的标注者之间的一致性率为72.6 ± 1.5%,而对于不参与训练的标注者,这一数字为77.3 ± 1.3%。相比之下,在Stiennon等人(2020)的摘要工作中,研究人员之间的一致性率为73 ± 4%。

3.5 模型

我们从Brown等人(2020)的GPT-3预训练语言模型开始。这些模型在互联网数据的广泛分布上进行训练,并适用于广泛的下游任务,但行为特征描述不佳。从这些模型出发,我们使用三种不同的技术来训练模型:

监督微调(SFT)。

我们使用监督学习在标签人员的演示数据上微调GPT-3。我们训练了16个周期,使用了余弦学习率衰减和0.2的残差丢弃率。我们根据验证集上的RM得分来选择最终的SFT模型。与Wu等人(2021)类似,我们发现我们的SFT模型在1个周期后就开始在验证损失上过度拟合;然而,我们发现训练更多的周期有助于提高RM得分和人类偏好评分,尽管存在这种过度拟合。

奖励建模(RM)。

从去除了最终嵌入层的SFT模型开始,我们训练了一个模型,以接收一个提示和响应,并输出一个标量奖励。在本文中,我们只使用了6B RM,因为这节省了大量计算资源,并且我们发现175B RM训练可能不稳定,因此在强化学习(RL)中作为值函数使用时不太合适(更多详细信息见附录C)。

为了加快比较数据的收集速度,我们向标签人员提供K=4到K=9个响应以供排名。这为每个呈现给标签人员的提示生成了(K 2)比较数据。由于每个标记任务内的(K 2)比较数据高度相关,我们发现,如果我们只是简单地将(K 2)比较数据打乱并放入一个数据集中,那么仅对数据集进行一次遍历就会导致奖励模型过拟合。

相反,我们将每个提示的所有(K 2)比较数据作为一个单独的批次元素进行训练。这在计算上更加高效,因为它只需要对每个完成项进行一次RM的前向传递(而不是对K个完成项进行前向传递),而且由于它不再过拟合,因此获得了更好的验证准确率和日志损失。

具体来说,奖励模型的损失函数是:

最后,由于RM损失对奖励的偏移是不变的,因此我们在进行强化学习之前,使用偏置对奖励模型进行归一化,使得标签人员演示的平均得分为0。

强化学习(RL)。

再次遵循Stiennon等人(2020)的方法,我们使用PPO(Schulman等人,2017)在我们的环境中对SFT模型进行微调。这个环境是一个随机选择的环境,它呈现一个随机的客户提示,并期待对提示的响应。给定提示和响应,它根据奖励模型产生奖励并结束这一回合。此外,我们在每个标记上添加了一个来自SFT模型的每标记KL惩罚,以缓解对奖励模型的过度优化。值函数从RM初始化。我们称这些模型为“PPO”。

我们还尝试将预训练梯度混合到PPO梯度中,以修复公共NLP数据集上的性能回归。我们称这些模型为“PPO-ptx”。在RL训练中,我们最大化以下组合目标函数:

基线。

我们将PPO模型的性能与SFT模型和GPT-3进行比较。我们还与给定少量前缀来“提示”GPT-3进入指令跟随模式(GPT-3-prompted)的GPT-3进行比较。这个前缀被添加到用户指定的指令之前。

此外,我们还将InstructGPT与在FLAN(Wei等人,2021)和T0(Sanh等人,2021)数据集上微调175B GPT-3的结果进行比较,这两个数据集都包含各种NLP任务,以及每个任务的自然语言指令(这两个数据集在包含的NLP数据集和使用的指令风格上有所不同)。我们分别在大约100万个示例上对它们进行微调,并选择验证集上获得最高奖励模型评分的检查点。更多训练细节见附录C。

3.6 评估


为了评估我们的模型“对齐”程度如何,我们首先需要明确在这个上下文中对齐意味着什么。对齐的定义历来是一个模糊且令人困惑的主题,存在各种相互竞争的建议(Chen等人,2021;Leike等人,2018;Gabriel,2020)。遵循Leike等人(2018)的方法,我们的目标是训练出符合用户意图的模型。更具体地说,针对我们的语言任务,我们使用了一个与Askell等人(2021)类似的框架,他们定义如果模型是有帮助、诚实且无害的,那么模型就是对齐的。

为了做到有帮助,模型应该遵循指令,但也要从少量示例的提示或其他可解释的模式(如“Q: {问题}\nA:”)中推断意图。由于给定提示的意图可能不清楚或含糊不清,我们依赖标签人员的判断,并且我们的主要指标是标签人员的偏好评分。然而,由于我们的标签人员并不是生成提示的用户,因此用户实际意图与标签人员仅通过阅读提示所认为的意图之间可能存在差异。

在纯生成模型中如何衡量诚实性尚不清楚;这需要将模型的实际输出与其对正确输出的“信念”进行比较,而由于模型是一个大黑箱,我们无法推断其信念。相反,我们衡量真实性——即模型关于世界的陈述是否真实——使用两个指标:(1)评估我们的模型在封闭领域任务中编造信息的倾向(“幻觉”),(2)使用TruthfulQA数据集(Lin等人,2021)。不用说,这仅捕获了真实性实际含义的一小部分。

与诚实性类似,衡量语言模型的危害也面临许多挑战。在大多数情况下,语言模型的危害取决于其输出在现实世界中的用途。例如,一个生成有毒输出的模型在部署的聊天机器人上下文中可能是有害的,但如果用于数据增强以训练更准确的毒性检测模型,则可能是有益的。在项目的早期阶段,我们曾让标签人员评估输出是否“可能有害”。然而,我们后来停止了这一做法,因为这需要对输出的最终用途进行过多的推测;特别是因为我们的数据也来自与Playground API界面交互的客户(而不是来自生产用例)。

因此,我们使用一套更具体的代理标准,旨在捕捉已部署模型中可能导致危害的不同行为方面:我们让标签人员评估输出是否在不适当的客户助理上下文中、贬低受保护群体或包含色情或暴力内容。我们还在旨在衡量偏见和毒性的数据集上对我们的模型进行基准测试,如RealToxicityPrompts(Gehman等人,2020)和CrowS-Pairs(Nangia等人,2020)。

总之,我们可以将我们的定量评估分为两个独立的部分:

API分布上的评估

我们的主要指标是对从与训练分布相同来源中保留的一组提示进行的人类偏好评分。当使用来自API的提示进行评估时,我们仅选择未包含在训练中的客户提示。然而,鉴于我们的训练提示设计用于与InstructGPT模型一起使用,它们可能会对GPT-3基线模型产生不利影响。因此,我们也在提交给GPT-3模型的API上的提示上进行评估;这些提示通常不是“遵循指令”的风格,而是专门为GPT-3设计的。在这两种情况下,对于每个模型,我们都会计算其输出相对于基线策略被偏好的频率;我们选择我们的175B SFT模型作为基线,因为它的性能在整体中处于中等水平。此外,我们要求标签人员使用1-7的里克特量表判断每个响应的整体质量,并收集每个模型输出的各种元数据(见表3)。

公共NLP数据集上的评估

我们在两种类型的公共数据集上进行评估:一种是捕获语言模型安全性的某些方面,特别是真实性、毒性和偏见,另一种是捕获在传统NLP任务(如问答、阅读理解和总结)上的零次学习性能。我们还在RealToxicityPrompts数据集(Gehman等人,2020)上进行毒性的人类评估。我们将发布所有基于采样的NLP任务的模型样本。

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Programming skills are indispensable in today’s world, not just for computer science students, but also for anyone in any scientific or technical discipline. Introduction to Programming in Java, Second Edition, by Robert Sedgewick and Kevin Wayne is an accessible, interdisciplinary treatment that emphasizes important and engaging applications, not toy problems. The authors supply the tools needed for students and professionals to learn that programming is a natural, satisfying, and creative experience, and to become conversant with one of the world’s most widely used languages. This example-driven guide focuses on Java’s most useful features and brings programming to life for every student in the sciences, engineering, and computer science. Coverage includes Basic elements of programming: variables, assignment statements, built-in data types, conditionals, loops, arrays, and I/O, including graphics and sound Functions, modules, and libraries: organizing programs into components that can be independently debugged, maintained, and reused Algorithms and data structures: sort/search algorithms, stacks, queues, and symbol tables Applications from applied math, physics, chemistry, biology, and computer science Drawing on their extensive classroom experience, throughout the text the authors provide Q&As;, exercises, and opportunities for creative engagement with the material. Together with the companion materials described below, this book empowers people to pursue a modern approach to teaching and learning programming. Companion web site (introcs.cs.princeton.edu/java) contains Chapter summaries Supplementary exercises, some with solutions Detailed instructions for installing a Java programming environment Program code and test data suitable for easy download Detailed creative exercises, projects, and other supplementary materials Companion studio-produced online videos (informit.com/sedgewick) are available for purchase and provide students and professionals with th
自然语言处理技术日益发展,就如何让机器能够理解和执行人类指令这一问题,成为了研究的重要方向。这涉及到如何将自然语言和机器学习模型有效地融合,从而让机器能够通过自然语言理解人类的指令,并按照指令进行行动。 据目前的研究表明,最有效的方法是对语言模型进行训练,通过数据驱动的方法,让机器能够理解人类的指令,从而完成特定的任务。要实现这一目标,需要采用一定的语言模型和机器学习算法。 其中,最流行的算法包括序列标注、文本生成、神经机器翻译等。这些算法都能通过对文本进行深度学习来训练模型,从而让机器能够更好地理解指令和完成任务。 然而,一些挑战依然存在。首先,不同的语言之间存在巨大的差异,因此需要针对不同的语言训练不同的模型。其次,语言模型需要和任务场景建立紧密的联系,才能更好地理解和执行指令。 最后,持续的技术进步也需要不断地改进和更新语言模型,以保证在不同的场景下,机器能够更好地理解和执行人类的指令。这意味着,对数据的收集和处理,对算法和模型的优化,都需要不断地实践和创新。 总之,针对语言模型的训练和优化,是实现机器按照人类指令执行的关键。只有通过不断的探索和实践,才能让机器更好地理解我们的指令,并更加有效地完成任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ankie(资深技术项目经理)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值