摘要
对于语言模型(LMs),哪些类型的指导提示更容易遵循?我们通过广泛的实证分析来研究这个问题,揭示了成功的教学提示的重要特征。
具体来说,我们研究了几种用于手动将提示重新表述为更有效提示的重构技术。一些示例包括将复杂的任务指令分解为多个更简单的任务,或是将指令逐项划分为连续的步骤。我们的实验比较了在六个类别的十二个NLP任务中,由重构指令提示的LMs的零样本和少样本性能。与原始指令相比,我们的重构指令在不同规模的LMs上取得了显著的改进。例如,在所有任务中,相同的重构提示分别使GPT-3系列和GPT-2系列的少样本性能平均提高了12.5%和6.7%。此外,重构指令减少了在少样本设置中提示LMs所需的示例数量。我们希望这些经验驱动的技术将为未来更有效的提示算法铺平道路。
1 引言
提示语言模型(LMs) (Liu et al ., 2021a)通过NLP任务的纯文本指令使非专业用户可以访问NLP模块。非专业用户编写的任务指令通常很长,并且包含抽象的描述,对于LM来说不容易理解,这可以从它们的低性能中看出(Efrat和Levy, 2020;Mishra et al, 2022)。然而,目前还不清楚这是由于目标任务的固有难度还是由于语言指令的复杂措辞造成的。
在本分析中,我们旨在了解LMs对教学提示框架的敏感性。特别是,我们研究了几种重构技术,以不同的方式构建教学提示,以便LMs更好地理解任务。这些重构技术是由各种经验直觉驱动的,比如易于理解、简洁具体的指令,以及那些包含很少关于人类常识或背景知识的抽象陈述的指令。例如,图1显示了一个重构示例,该示例涉及将一个任务分解为多个子任务。这里的预期任务是编写需要实体共同参考的问题(Dasigi等人,2019)。虽然GPT3在解决原始任务指令(顶部黄色框)时失败,但当任务分解为四个更简单和更容易的子任务时,它成功了。
图1:GPT3在编写需要基于单个冗长提示(顶部,黄色)进行实体共同引用解析的问题时存在困难,然而,它成功地解决了一个手动重构的任务,该任务有四个更简单的子步骤(底部,绿色)。
我们提供了五种不同重构技术的分析。这些技术包括融入关于目标任务的低级模式,分解和逐项指令,陈述任务约束,以及提供专门指令(示例见表1)。
我们分析了来自自然指令(NATURAL INSTRUCTIONS)(Mishra等人,2022年)的12个任务的重新构建指令,该数据集包含了多种NLP任务及其指令。实证上,我们比较了两种设置下LMs(GPT2/3 Radford等人,2019年;Brown等人,2020年)的质量:原始指令与重构指令。特别是,我们观察到重构提示在原始指令上的性能有显著提升(图2中红色和蓝色趋势之间的差距),在使用GPT3-instruct的少样本和零样本设置中,平均增益分别为14%和17%。此外,跨任务的平均增益在不同模型上保持一致,这暗示了重构提示在各种架构上的一致性。这与广泛使用的微调方法形成对比,后者需要为每个模型单独进行。当在大LMs上进行评估时,模型设计者重构提示可以特别有效,因为在这些模型上进行微调可能过于昂贵(例如GPT3)。特别是,我们观察到,在GPT3-instruct上的重构提示得分比监督了1k实例的GPT2Large高出大约17%(即多200倍的数据)。
图2:在不同的模型大小中,在少量的学习设置中,与原始任务指令(没有重构)相比,重构提示始终显示出相当大的性能增益。由于微调GPT3非常昂贵,我们将展示微调较小模型的性能(水平线)。这一结果表明,在像gpt3 - directive(红线)这样的大模型上评估重构提示可能比在像GPT2Large(绿线)这样的小模型上微调200多数据更有效。实验细节见§4。
虽然重构指令不是算法,但我们认为这种系统分析是朝着这个方向的初步踏脚石。我们希望这项研究将导致算法更好的少数次学习方法的发展,从而导致更有效的方式来收获已经投入到创建大规模LMs的投资。
贡献:(a)这项工作的灵感来自于LMs对其教学提示框架的敏感性。在许多实证分析的推动下,我们为模型设计者确定了一些指导方针,以重新构建指导性提示,并提供与每种类型的重构技术相关的说明性用例。(b)对不同任务的广泛实验表明,在各种模型大小的范围内,重构比原始任务指令产生了更好的性能和改进的样本复杂性。(c)我们的实验量化了提示技术的贡献,并分析了促成提示技术成功的各种参数。
2 相关工作
我们的工作是有关设计离散提示和调整连续提示在最近的文献。
为语言模型构建有效的离散提示以执行NLP任务是一个活跃的研究领域(Schick和sch<s:1> tze, 2021;Le Scao and Rush, 2021;Tam等,2021;Logan IV等人,2021;雷诺兹和麦克唐纳,2021)。这类工作大多侧重于对原始提示进行轻量级更改(Liu et al ., 2021a)。
与早期的文献不同,我们关注的是复杂指令的框架,这通常会导致重构提示,这些提示通常与原始原始指令非常不同。虽然我们提出的即时重构并不完全是算法,但其背后的原理相对简单,这有望在未来激发算法解决方案。
我们的目标与带有指令的元训练有着根本的不同(Mishra et al, 2022;Sanh等,2022;Wei et al, 2022)。这种方法依赖于标记数据(针对数千个任务的语言提示),而这些数据的收集成本很高。此外,它们需要对模型进行微调,这对于较大的LM来说可能代价高昂。探索语言指令的有效框架可以为LMs的使用提供替代方法。
连续提示调整导致相较于微调模型参数,产生了空间效率更高的模型(Liu等人,2021b;Lester等人,2021年)。尽管这些模型是算法性的,但它们需要在整个架构中传播梯度信息,导致高计算成本,这对于像GPT3这样的大型LM来说是一个关键的瓶颈。虽然我们的提议需要人工干预,但它为模型设计者提供了一些相对简单的经验法则,以便他们能够提出与大型LM有效配合的语言提示。
3 重构提示
本节描述了我们的重构原则,然后描述了实现这些原则的指导方针。通过探索NATURAL instructions训练分割中各种任务的指令获得重构原则(Mishra et al ., 2022),了解GPT3中与提示相关的不同失效模式。
我们观察到,当提供给GPT3的长提示通常包含重复信息、抽象概念、类比、需要人类常识和领域知识的复杂陈述时,GPT3无法遵循指令(参见表1和表4中的示例)。人类通常会发现这些提示有助于描述他们的任务。例如,一些旨在激励任务或为了强调而重复的内容对于模型来说可能是不必要的,甚至是多余的。
3.1 重构原则
我们观察到,包含具体陈述和避免与背景知识相关的术语的简短提示提高了GPT3对指令的响应。通过对GPT3广泛实证分析,我们递归地应用这一观察结果,并提供了一组重构原则,以解决GPT3故障提示的各种问题。
(C1)使用低级模式:使用需要背景知识才能理解的术语,而不是使用有关预期输出的各种模式。
(C2)逐项说明:将描述性属性转换为项目符号列表。如果有任何否定语句,将它们转换为断言语句。
(C3)分解:尽可能将一项任务分解成多个更简单的任务。
(C4)强制约束:添加输出约束的显式文本语句。
(C5)专门化指令:定制指令,使其直接与预期输出对话。
我们用5种重构技术来实现上述原则。在不同的重构技术中,重构的程度(应用于原始指令的更改量)差别很大:最简单的一种是在最后添加执行声明,而另一种极端则是将任务作为一个整体进行彻底改变(例如,将其分解为多个任务)。
3.2 重构技术
我们用三个部分解释了每一种重构技术(1)模型失效状态,LM的潜在弱点,参考表4中的例子(2)方法描述了我们建议的方法及其背后的直觉,根据我们的经验观察(3)例子说明了参考表1的建议技术的应用。在设计这些技术时,我们使用了一个开发集,其中包含了作为NATURAL instructions中每个任务指令的一部分的所有正例。
3.2.1 模式重构
虽然人类在理解和处理抽象描述方面具有令人难以置信的能力,但LM倾向于忽略其中的大部分,或者只是在其输出中重复这些指令的内容(复制表4中的指令)。方法在开发集示例中找到低级模式,并通过添加类似模式来推断这些模式(C1)。
表1(第1行)说明了CosmosQA (Huang et al ., 2019)问题生成任务。原始任务指令由各种高级语句组成,如"常识"、"复杂"、"有趣"、"对人类来说容易,对人工智能机器来说很难",而重构任务则由各种关于预期输出的低级模式组成,如"可能发生什么"、"在未来,将......","为什么可能",这通常会提高GPT3在生成有效问题方面的性能。
3.2.2 逐项重构
模型失败:LMs无法遵循陈述多个要求的长段落(表4中的第一条指令偏差),并且在要求以否定语句形式表达时表现不佳(表4中的否定挑战)。
方法:将长描述转换为几个陈述的要点列表(C2)。此外,将否定语句转换为肯定语句。例如,重新表述"不要创建无法从段落中找到答案的问题"为"创建可以从段落中找到答案的问题"。
示例:表1(第2行)展示了WinoGrande(Sakaguchi等人,2020年)样本生成任务的例子,其中原始指令包含几个难以让模型遵循的要求(该做和不该做的)。将指令重构为结构化列表可以提高模型的响应。
3.2.3 分解重构
模型失败:即使在进行项目化重构(3.2.2)之后,具有隐含多步骤推理的任务对模型来说仍然是挑战性的(表4中的多步骤任务挑战)。
方法:在可能的情况下,将任务分解为多个不同的子任务,这些子任务可以顺序执行或并行执行(C3),从而使模型相对容易处理。
示例:在表1(第3行)中,任务是生成Winogrande(Sakaguchi等人,2020年)数据集的样本。将任务分解为5个顺序步骤提高了GPT3的响应。
3.2.4 约束重构
模型失败:GPT3的一个常见错误发生在任务定义偏离其预训练目标(预测下一个单词)时(表4中的传统任务偏差)。例如,在预测问题类型时,GPT3经常回答问题而不是生成其类型。同样,在阅读理解任务中,GPT3有时会基于其背景知识回答问题,而不是根据给定的段落回答。
方法:在任务指令中添加一个语句,该语句表达关于输出生成的约束(C4)。
示例:表1(第4行)展示了DROP(Dua等人,2019年)答案类型生成任务的例子,其目标是为给定的问题生成一个有效的答案类型,包括"数字"、"日期"和"跨度"。添加一个强制执行语句通常会通过限制模型仅提供这些类型来改善模型输出。
3.2.5 专业化重构
模型失败:LMs忽略诸如"回答以下问题"的通用指令,并且有时在给定的指令包含冗余文本时会误判输出格式(表4中的误判输出格式)。
方法:重新制定指令,使其直接描述需要完成的低级任务,并删除所有重复和通用的语句(C5)。
示例:表1(第5行)展示了一个涉及描述加法和减法的自然语言句子的数值推理问题任务。重构的提示专门化了通用任务指令("计算答案")。
4 实验设置
我们对来自NATURAL INSTRUCTIONS (Mishra et al ., 2022)的评估任务评估了提出的重构技术,该任务由12个任务组成,分为6类。按照最初的设置,我们在实验中使用ROUGE-L (Lin, 2004)作为评估指标。表2列出了本研究使用的评估任务列表。
表2:本研究中使用的评估任务列表(§4)。
模型评估:我们使用了GPT家族的多种模型进行评估:GPT2、GPT2Large、GPT2XL、GPT3和GPT3-instruct(Brown等人,2020年;Radford等人,2019年)以及BART-base(Lewis等人,2020年)。我们根据以下设置评估模型:
GPTk使用原始指令:我们遵循Mishra等人(2022年)的设置,他们在原始指令上使用GPT3-instruct进行实验。总的来说,提供给模型的提示由三个部分组成(按此顺序):(a) 任务指令,(b) 示例(输入和输出)以及(c) 我们期望模型响应的新输入。我们根据提示中的示例数量,对三种不同变体的基线进行了实验:(i) 少样本(FEW-SHOT):我们使用5个示例进行实验,这是一个更现实的少样本设置。 (ii) 最大示例(MAX. EX.):在另一个变体中,我们使用了尽可能多的示例,以适应GPT的令牌限制。 (iii) 零样本(ZERO-SHOT):在这种设置中,我们在提供指令时没有包含任何示例。最后,我们通过进行"模式选择"构建这些基线的变体,我们实验了12种不同的指令编码(Mishra等人,2022年),并为每个任务选择表现最好的一个。
GPTk使用重构指令:模型设计者应用各种重构技术(第3.2节)在NATURAL INSTRUCTIONS中的任务上。与原始指令基线类似,我们在重构的任务中使用了5个示例。在我们的设置中,模型设计者是一个作者,他通过观察开发集中的5个示例并遵循指南(§3.2)来重构指令。这个过程是通过与GPT3-instruct交互开发示例来完成的。这大约花费了每个任务和每种重构类型15分钟。与原始指令的设置类似,最终编码的提示包含了以下内容的串联(按此顺序):重构指令,正示例和实例输入。
GPTk使用校准:这种方法扩展了Zhao等人(2021年)最近引入的校准方法,该方法涉及在少样本设置中补偿各种模型特定的偏差,如近期偏差和多数偏差。Zhao等人(2021年)通过用"N/A"令牌屏蔽输入实例,估计模型预测概率中的偏差,然后在预测时补偿偏差来执行校准。我们将校准扩展到我们的指令设置,通过在指令编码中用"N/A"令牌屏蔽输入实例,并校准与GPT3-instruct相关的偏差。
监督式基线:尽管监督式学习的传统设置对于合理大小的模型已经取得了成功,但对于像GPT3这样的大型模型来说,它是过于昂贵的。我们在每个任务的5k个示例上训练中型LM(例如,BART-base,Lewis等人,2020年),并在相应任务的未见实例上进行评估。
5 实证结果
5.1 主要结果
我们的实验总结如图2所示,该图展示了重构指令在各种模型上的性能,与我们的基线进行比较。此外,表3提供了少样本、零样本和监督式模型在每个任务类别上的更细致比较,所有比较均在GPT3-instruct上进行,并以ROUGE-L为衡量标准。以下是这些实验的几个主要观察结果:
重构提高了少样本和零样本基线的性能。表3显示,重构在少样本和零样本设置中分别以14%(44%至58%)和17%(33%至50%)的绝对增益超过了原始原始指令基线。此外,它还在少样本和零样本设置中分别以11%(47%至58%)和13%(37%至50%)的绝对增益超过了模式选择基线。它还以12%(46%至58%)和8%(50%至58%)的增益分别超过了带有模式选择的校准和最大示例基线。这些增益在任务类别中分布,其中答案生成(AG)、分类(CF)和验证(VF)类别的增益最高。
表3:在ROUGE-L中评估各种少样本和监督式学习基线。类别名称:QG:问题生成,AG:答案生成,CF:分类,IAG:错误答案生成,MM:最小文本修改,VF:验证。重构的提示提高了GPT3-instruct的性能。在使用相同数量示例的方法中,表现最佳的方法以粗体显示。在少样本(最大示例)设置中,我们使用的示例数量不超过GPT的令牌限制。向上箭头(↑)和向下箭头(↓)分别表示相对于原始指令基线的性能提升和下降。
重构的提示在不同的模型上保持了其优越性。如图2所示,重构指令在各种模型上始终优于原始任务指令。这与参数调整算法(如微调和提示调整)形成对比,后者需要为每个模型分别执行。使用大型LM的重构指令与中型监督式模型相当。与监督式基线相关的平均性能高于重构方法。然而,在答案生成(AG)和错误答案生成(IAG)类别中,少样本设置中的重构性能分别优于监督式基线11%和4%的绝对增益。在图2中也可以观察到类似的情况,其中使用GPT3-instruct的重构提示的性能明显优于使用了200倍更多数据的监督式中型模型(GPT2Large)。
5.2 分析
重构技术的贡献:图3展示了每种重构技术在不同类别任务中平均性能提升情况。我们将各种重构技术应用于NATURAL INSTRUCTIONS的每个任务。我们观察到,专门化重构、限制性重构和模式重构在更广泛的任务上提高了模型性能。我们还观察到,限制性重构对分类任务贡献最大,而专门化重构在答案生成任务上占主导地位。分解重构和模式重构在问题生成任务上最有效。由于主导的重构技术在不同任务类别之间有所变化,我们建议用户为他们的任务尝试所有五种重构技术。
图3:重构指令(相对于原始指令)的平均性能增益(左侧的数字),在几次学习设置中通过gpt3 - directive进行评估。该图显示了将每种重构类型(左)应用于各种任务类别(右)所获得的增益。虽然专门化重构是通用的,但分解等其他方法可以为更小范围的任务提高模型性能。
性能与指令长度对比:我们观察到,重构后的指令通常比原始指令更短。自然会产生一个问题,即重构应用后,指令长度的减少与性能提升之间是否存在相关性。图4显示,在NATURAL INSTRUCTIONS的各个评估任务中,性能提升并不总是与长度差异成正比(图中的点)。这表明,仅仅缩短指令长度并不一定是提高指令性能的主要因素。
图4:x轴:重构导致的指令长度减少;y轴:应用重构后的性能增益(ROUGE-L),并通过gpt3 - instruction在几次学习设置中进行评估。每个点代表我们评估集中的一个任务。散点图显示,最小长度减少并不一定更糟。
定性分析:我们分析了GPT3在原始指令与重构指令上的失败情况。我们为分析在各种任务中抽取了100个示例。图5展示了错误的分布。可以看出,重构引入的额外错误很少(4%),同时纠正了原始指令上的大部分错误(24%)。我们进一步手动分析这个子集(原始指令错误通过重构纠正)以更好地理解主导错误模式以及纠正它们的重构(表4)。结果显示,大多数错误是通过项目化重构纠正的,而限制性重构的贡献最小。
表4:与通过重构解决的原始指令相关的错误模式分布。它还展示了解决错误的重构技术的类型。
图5:错误模式的分布。在24%的问题中,重构纠正了原始指令错误,而只导致4%的额外失败。
6 结束语
受GPT3在遵循任务指令方面表现不佳的启发,我们研究了对它们进行重构。我们介绍了五种重新制定任务指令的方法,使它们更容易,同时保持它们的可读性。在12个任务上手动应用重构,我们研究了与使用原始指令或微调中型模型相比,它们的好处。在任务定义不断发展的应用程序中(使得众包和微调模型变得困难),重构可能特别有用,因为模型设计者可以在几分钟内提出新的重构提示。
我们希望这项研究将激发对潜在的非常规方法的进一步研究,以利用越来越大的LMs所利用的知识,其中微调及其替代方法非常昂贵。