type
status
password
date
slug
summary
category
URL
tags
icon
摘要
最近的研究通过在大量文本语料库上进行预训练,然后在特定任务上进行微调,已经在许多自然语言处理任务和基准测试上取得了显著的进展。尽管在架构上通常与任务无关,但这种方法仍然需要数千或数万个示例的特定任务微调数据集。相比之下,人类通常只需要很少的例子或简单的指导就能完成新的语言任务,而当前的自然语言处理系统在这方面仍然存在很大困难。在这里,我们展示了扩展语言模型可以极大地提高通用的、少样本学习的性能,有时甚至可以达到先前最先进的微调方法的竞争力。具体来说,我们训练了GPT-3,一个具有1750亿参数的自回归语言模型,比以前的非稀疏语言模型多10倍,并在少样本学习的设置中测试其性能。对于所有任务,GPT-3都没有进行任何梯度更新或微调,任务和少样本示例纯粹通过与模型的文本交互来指定。GPT-3在许多自然语言处理数据集上表现出很强的性能,包括翻译、问答和填空任务,以及一些需要即时推理或领域适应的任务,比如词语重组、在句子中使用新词或进行3位数字运算。与此同时,我们还发现GPT-3的少样本学习仍然在一些数据集上存在困难,以及GPT-3在训练大型网络语料库时面临的一些方法问题。最后,我们发现GPT3可以生成新闻文章样本,人类评估员很难区分它们与由人类撰写的文章。我们讨论了这一发现以及GPT3的更广泛社会影响。
1引言
近年来,NLP系统中出现了一种趋势,即使用预训练的语言表征,并以越来越灵活和与任务无关的方式应用于下游转移。首先,使用单层表征学习了词向量[MCCD13,PSM14]并输入到特定任务的架构中,然后使用具有多层表征和上下文状态的RNN形成更强的表征[DL15,MBXS17,PNZtY18](尽管仍然应用于特定任务的架构),更近期的是,预训练的循环或transformer语言模型[VSP+17]已经直接经过微调,完全消除了特定任务架构的需要[RNSS18,DCLT18,HR18]。
这最后的范例在许多具有挑战性的NLP任务上取得了实质性进展,例如阅读理解、问答、文本蕴含等等,并基于新的架构和算法继续取得进展[RSR+19,LOG+19,YDY+19,LCG+19]。然而,这种方法的一个主要限制是,尽管架构与任务无关,但仍然需要特定任务的数据集和特定任务的微调:通常要在某个特定任务上实现强大的性能,需要在专门针对该任务的数千到数十万示例的数据集上进行微调。消除这种限制是可取的,有几个原因。
首先,从实际的角度来看,每个新任务都需要大量标记示例的数据集的需要,限制了语言模型的适用性。有非常广泛的可能有用的语言任务范围,包括从纠正语法到生成抽象概念的例子,再到批评一个短故事。对于许多这样的任务,很难收集大型有监督训练数据集,特别是当这个过程必须为每一个新任务重复时。
其次,模型的表现力和训练分布的狭窄程度越大,利用训练数据中的偶然相关性的潜力就越大。这可能会为预训练加微调的范例带来问题,其中模型被设计为大型以在预训练期间吸收信息,但后来在非常狭窄的任务分布上进行微调。例如[HLW+20]观察到更大的模型不一定能在分布外更好地泛化。有证据表明,在这种范例下实现的泛化可能是不好的,因为模型过于特定于训练分布,在其之外并不具有良好的泛化性[YdC+19,MPL19]。因此,即使微调模型在具体基准测试上的表现名义上达到了人类水平,也可能夸大了其在基础任务上的实际表现[GSL+18,NK19]。
第三,人类在学习大多数语言任务时不需要大型的有监督数据集——通常用自然语言(例如,“请告诉我这句话是描述快乐的事物还是悲伤的事物”)或最多一两个示例(例如,“这里有两个人表现勇敢的例子;请给出第三个勇敢的例子”)简短的指令就足够使人类至少能以相当的能力完成新任务。除了指出我们当前NLP技术的一个概念性限制,这种适应性也有实际优势——它允许人类无缝地混合或在许多任务和技能之间切换,例如在冗长的对话中执行加法。为了广泛有用,我们希望我们的NLP系统有相同的流畅性和普遍性。


解决这些问题的一个潜在途径是元学习——在语言模型的背景下,这意味着模型在训练时发展出广泛的技能和模式识别能力,然后在推理时使用这些能力迅速适应或识别所需任务(如图1.1所示)。最近的研究[RWC+19]试图通过我们所称的“上下文学习”来实现这一点,使用预先训练好的语言模型的文本输入作为任务说明的一种形式:模型基于自然语言指令和/或对任务的几个示例进行条件化训练,然后仅通过预测接下来的内容来完成任务的更多实例。
虽然这种方法显示出一些初步的希望,但它仍然远逊于微调——例如[RWC*19]在Natural Questions上仅取得了4%的成绩,即使是其55 F1 CoQa的结果现在也落后于最先进水平35分以上。显然,元学习需要大幅改进才能成为解决语言任务的实用方法。
语言建模的另一种近期趋势可能开辟了一条前进的道路。近年来,transformer语言模型的容量大幅增加,从1亿参数[RNSS18],到3亿参数[DCLT18],到15亿参数[RWC+19],到80亿参数[SPP+19],110亿参数[RSR+19],最终到170亿参数[Tur20]。每次增加都带来了文本合成和/或下游自然语言处理任务的改进,有证据表明,与许多下游任务相关联的对数损失呈现出随规模提高而改善的平滑趋势[KMH20]。由于上下文学习涉及在模型的参数中吸收多种技能和任务,因此可以合理推测,上下文学习能力可能也会随规模的增加而显示出同样强劲的提升。

在本篇论文中,我们通过训练一个1750亿参数的自回归语言模型(我们称之为GPT-3)并测试其上下文学习能力来验证这一假设。具体来说,我们评估GPT-3在两打多种NLP数据集上的表现,以及几项旨在测试快速适应训练集中不太可能直接包含的任务的新颖任务。对于每项任务,我们在3种条件下评估GPT-3:(a)“few-shot学习”,即我们允许尽可能多的示例位于模型上下文窗口中(通常为10到100)的上下文学习,(b)“one-shot学习”,我们仅允许一个示例,和(c)“zero-shot学习”,不允许示例,只给模型提供一个自然语言指令。GPT-3原则上也可以在传统的微调设置中进行评估,但我们将此留待未来的工作。
图1.2展示了我们研究的条件,并显示了few-shot学习在一个简单任务上的效果,该任务要求模型从单词中移除多余的符号。随着自然语言任务描述的添加以及在模型上下文中示例数量K的增加,模型性能得到了改善。few-shot学习随模型大小的增加而大幅提高。尽管这个例子的结果特别引人注目,但对于我们研究的大多数任务来说,模型大小和上下文中的示例数量这两个方面的一般趋势都持续存在。我们强调这些“学习”曲线不涉及梯度更新或微调,只是增加了作为条件的示例数量。
总体而言,在NLP任务上,GPT-3在zero-shot和one-shot学习设置中取得了有希望的结果,在few-shot学习设置中有时能与最先进水平(尽管最先进水平是通过微调模型实现的)竞争,甚至偶尔超过。例如,在zero-shot学习设置中,GPT-3在CoQA上取得了81.5F1的成绩,在一次学习设置中取得了84.0 F1,在few-shot学习设置中取得85.0 F1。同样,在zero-shot学习设置中GPT-3在TriviaQA上取得了64.3%的准确度,在one-shot学习设置中取得68.0%,在few-shot学习设置中取得71.2%,后者相对于在相同闭卷设置中运行的微调模型而言是最新水平。
GPT-3还展示了在one-shot和few-shot学习任务中的熟练程度,这些任务旨在测试快速适应或即时推理,包括解乱序单词、执行算术运算,在只定义一次后在句子中使用新词。我们还表明,在few-shot学习设置中,GPT-3可以生成人类评价者难以与人生成文章区分开的合成新闻文章。同时,我们也发现即使在GPT-3的规模上,few-shot学习的性能在某些任务上也存在挑战,包括自然语言推理任务,如ANLI数据集,和一些阅读理解数据集,如RACE或QuAC。通过全面描述GPT-3的优势和劣势,包括这些限制,我们希望激励对语言模型中few-shot学习的研究,并引起人们对最迫切需要进步的领域的关注。
通过图1.3可以直观地了解到总体结果,该图汇总了各种任务(尽管它本身不应被视为一个严格的或有意义的基准)。
此外,我们还系统地研究了“数据污染”——在训练如CommonCrawl这类数据集时日益严重的问题,高容量模型可能包括来自测试数据集的内容,仅因为这样的内容经常存在于网上。在本文中,我们开发了系统化的工具来衡量数据污染并量化其扭曲效应。尽管我们发现数据污染对GPT-3在大多数数据集上的性能影响最小,但我们确实确认了一些可能夸大结果的数据集,并且我们要么不报告这些数据集上的结果,要么根据严重程度用星号标注。
除了上述所有内容,我们还训练了一系列较小的模型(从1.25亿参数到130亿参数不等),以便将它们的性能与GPT-3在zero-shot、one-shot和few-shot学习设置中的表现进行比较。总的来说,对于大多数任务,我们在所有三种设置中找到了与模型容量平滑扩展相关的结果;一个显著的模式是zero-shot、one-shot和few-shot学习之间的性能差距通常随着模型容量的增加而增加,这或许表明更大的模型更擅长元学习。
最后,鉴于GPT-3显示出的广泛能力,我们讨论了有关偏见、公平性和更广泛的社会影响的关切,并尝试对GPT-3在这方面的特点进行初步分析。
本文的其余部分组织如下。在第2部分,我们描述了训练GPT-3和评估它的方法和方法。第3部分展示了在zero-shot、one-shot和few-shot学习设置中的完整任务范围的结果。第4部分讨论了数据污染问题(训练-测试重叠)。第5部分讨论了GPT-3的局限性。第6节讨论了更广泛的影响。第7节回顾了相关工作,第8节总结。
2方法
我们的基础预训练方法,包括模型、数据和训练,与[RWC*19]中描述的过程相似,主要通过扩大模型大小、数据集大小和多样性以及训练时长来进行简单直接的扩展。我们对上下文学习的使用也与[RWC"19]类似,但在这项工作中,我们系统地探索了不同上下文内学习的设置。因此,我们从明确定义和对比术文将要评估GPT-3的不同设置开始这一部分,或者原则上可能对GPT3进行评估的设置。这些设置可以看作依赖于特定任务数据的多少呈现在一定范围内的不同点。具体来说,我们至少可以识别出这一范围上的四个点(见图2.1中的插图):
- 微调(FT)在最近几年一直是最常见的方法,它通过在特定于所需任务的监督数据集上训练来更新预训练模型的权重。通常使用数千到数十万标注的示例。微调的主要优势是在许多基准测试上的强大性能。主要劣势是对每项任务都需要新的大型数据集的需求,以及分布外泛化能力差的可能性[MPL19],和利用训练数据的伪造特性的可能性[GSL*18,NK19],可能导致与人类表现不公平的比较。在这项工作中我们没有对GPT-3进行微调,因为我们关注的是任务不可知的性能,但原则上GPT-3可以进行微调,这是未来工作的一个有前景的方向。
- Few-Shot(FS)是我们在这项工作中使用的术语,指的是在推理时间模型被给予几个任务演示作为条件[RWC"19],但不允许权重更新的设置。如图2.1所示,对于一个典型的数据集来说,一个例子有上下文和一个所需的完整内容(例如一个英语句子和它的法语翻译)。少数示例通过给定K个上下文和完整内容的例子,然后再给出一个最终的上下文例子,模型被期望提供完整内容。我们通常将K设置在10到100的范围内,因为这是多少例子能够适应模型的上下文窗口(nctx=2048)。少数示例的主要优点是大大减少了对特定任务数据的需求,并且减少了从大而狭窄的微调数据集中学习过于狭窄分布的可能性。主要的劣势是到目前为止,这种方法的结果比起最先进技术水平的微调模型要差得多。此外,仍然需要少量特定任务的数据。顾名思义,如此处所描述的语言模型的few-shot示例学习与机器学习中其他上下文使用的少数示例学习有关—两者都涉及基于广泛任务分布的学习(在这种情况下隐含在预训练数据中),然后迅速适应新任务。
- one-shot(1S)与few-shot相同,只是允许一个演示,此外还有一个自然语言描述的任务,如图1所示。区分一次示例和少数示例以及零次示例(以下)的原因在于,它最接近于某些任务传达给人类的方式。例如,当要求人们在一个人类工人服务(例如MechanicalTurk)上生成一个数据集时,通常给出一个任务演示。相比之下,如果不给出示例,有时很难沟通任务的内容或格式。

- zero-shot(0S)与one-shot相同,除了不允许示例,模型只被给予一个自然语言指令来描述任务。这种方法提供了最大的便利性、潜在的鲁棒性,以及避免伪造相关性的可能性(除非它们在大量预训练数据中非常广泛地发生),但也是最具挑战性的设置。在某些情况下,如果没有先前的示例,即使是人类可能也很难理解任务的格式,所以这种设置有时是“不公平的困难”。例如,如果有人被要求“制作一张关于200米短跑世界纪录的表格”,这个请求可能是含糊的,因为可能不清楚表格应该具有什么格式或应该包含什么内容(即使经过仔细的澄清,也可能难以精确地理解所期望的内容)。然而,至少对于某些设置,zero-shot最接近于人类完成任务的方式—例如,在图2.1中的翻译例子中,一个人可能只从文本指示中就知道该做什么。
图2.1使用英译法的例子展示了这四种方法。在这篇论文中,我们专注于zero-shot、one-shot和few-shot,旨在比较它们,并不作为相互竞争的替代品,而是作为提供特定基准性能与样本效率之间不同权衡的不同问题设置。我们特别强调few-shot结果,因为它们中的许多只是稍微落后于最先进技术水平的微调模型。然而,从根本上说,one-shot,甚至有时zero-shot,看起来是与人类表现最公平的比较,是未来工作的重要目标。
下面2.1-2.3节分别给出了我们模型、训练数据和训练过程的详细信息。2.4 节讨论了我们如何进行few-shot、one-shot和zero-shot评估的细节。

2.1模型和架构
我们使用了与GPT-2[RWC+19]相同的模型和架构,包括其中所述的修改后的初始化、预归一化和可逆标记化,唯一的区别是我们在transformer的层中使用了交替的密集型和局部带状稀疏注意力模式,类似于 Sparse Transformer [CGRS19]。为了研究机器学习性能对模型大小的依赖性,我们训练了8种不同大小的模型,范围覆盖了从1.25亿个参数到1750亿个参数的三个数量级,其中最大的模型我们称为GPT-3。之前的工作[KMH20]表明,如果有足够的训练数据,验证损失的缩放应该大致是模型大小的平滑幂律函数;训练许多不同大小的模型可以让我们测试这一假设是否对验证损失和下游语言任务都成立。
表2.1展示了我们8种模型的大小和架构。这里nparams是可训练参数总数,nlayers是总层数,dmodel是每个瓶颈层的单元数目(我们总是让前馈层是瓶颈层大小的四倍,d=4*dmodel),dhead 是每个注意力头的维度。所有模型都使用nctx=2048个标记的上下文窗口。为了最小化节点间的数据传输,我们沿着深度和宽度维度对模型进行了GPU的划分。每个模型的确切架构参数都是基于计算效率和模型在GPU上的布局负载平衡来选择的。之前的研究[KMH20]表明,验证损失对这些参数在一个合理宽广范围内不是特别敏感。
2.2训练数据集
用于语言模型的数据集迅速扩增,以Common Crawl数据集2[RSR+19]为顶点,几乎包含了一万亿字。这大小的数据集足够我们训练最大的模型,而不会在训练中两次更新相同的序列。然而,我们发现未过滤或轻度过滤的Common Crawl版本往往比更精心策划的数据集质量要低。因此,我们采取了3个步骤来提高我们数据集的平均质量:(1)我们基于与一系列高质量参考语料库的相似性,下载并过滤了CommonCrawl的一个版本,(2)我们在文档级别执行了模糊的去重操作,跨数据集以及数据集内部进行,以防止冗余并保持我们保留的验证集作为过拟合准确度量的完整性,(3)我们还增加了已知的高质量参考语料库到训练混合中,以增强CommonCrawl并增加其多样性。
对于前两点(Common Crawl的处理),细节在附录A中有描述。对于第三点,我们加入了几个策划的高质量数据集,包括扩展版的WebText 数据集[RWC+19],通过更长时间抓取链接来收集,并首次在[KMH*20]中描述,两个基于互联网的图书语料库(Books1和Books2)以及英语维基百科。表2.2展示了我们在训练中使用的最终数据集混合。CommonCrawl 数据是从覆盖2016年到2019年的41个月分片的CommonCrawl下载的,在过滤前是45TB的压缩纯文本,在过滤后是570GB,大约相当于4000亿字节对BPE tokens。值得注意的是,在训练中,数据集没有按大小比例采样,而是我们认为更高质量的数据集采样得更频繁,这样CommonCrawl和Books2数据集在训练中采样的频率少于一次,但其他数据集采样2-3次。这基本上接受了少量的过拟合以换取更高质量的训练数据。
![图2.2:训练期间使用的总计算量。根据《神经语言模型的扩展规律》[KMH*20]中的分析,我们在比通常少得多的词库上训练更大的模型。因此,尽管 GPT-33B 比 RoBERTa-Large 大了近10倍(355M 个参数),但在预训练期间,两个模型都耗费了大约50 petaflop/s天的计算量。计算方法见附录D。](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F06d43171-d41b-42f5-92c6-383f47fbf41c%2F0f2c84be-824a-4a69-929e-3ce9dd2cedb4%2FScreenshot_2024-01-12-17-02-00-801_cn.wps.moffice_eng-edit.jpg?table=block&id=82ddb49e-50d5-4187-a996-ebd4e764aea0&t=82ddb49e-50d5-4187-a996-ebd4e764aea0&width=552.9921875&cache=v2)

对于预先训练的语言模型,尤其是有能力记忆大量内容的大型模一个主要的方法论关注点是潜在的通过在预训练期间意外看到下游任务的测试集或开发集而污染任务数据。为了减少这种污染,我们搜索并试图移除我们在本文研究的所有基准测试中开发和测试集的任何重叠。不幸的是,过滤中的一个bug导致我们忽视了一些重叠,由于训练成本,重训模型是不切实际的。在第4节中我们将描述剩余重叠的影响,并且在未来的工作中我们将更积极地移除数据污染。
2.3训练过程
如[KMH*20,MKAT18]中发现的,更大的模型通常可以使用更大的批量大小,但需要更小的学习率。我们在训练期间测量梯度噪声规模,并用它来指导我们选择批量大小[MKAT18]。表2.1展示了我们使用的参数设置。为了在不超出内存的情况下训练更大型的模型,我们使用了模型并行模式,在每个矩阵乘法内部和网络层之间进行混合。所有模型都在微软提供的高带宽集群部分上的V100GPU上进行了训练。关于训练过程和超参数设置的细节,在附录B中有描述。
2.4评估
对于小样本学习,我们通过随机从每个任务的训练集中抽取K个示例作为条件,根据任务的不同,用1或2个换行符隔开,来评估评估集中的每个例子。对于LAMBADA和Storycloze,因为没有可用的监督式训练集,所以我们从开发集中抽取条件示例,并在测试集上进行评估。对于Winograd(原始版本,非SuperGLUE版本),因为只有一个数据集,所以我们直接从数据集中抽取条件示例。K可以是从0到模型上下文窗口允许的最大值之间的任何值,对于所有模型来说,nctx=2048,通常可以容纳10到100个示例。
K的值通常越大越好,但并不总是如此,因此当开发集和测试集分开时,我们会在开发集上试验几个K值,然后在测试集上运行最好的K值。对于某些任务(见附录G),我们还使用自然语言提示,作为示例的补充(或对于K=0,代替示例)。
在涉及从多个选项中选择一个正确完成项的任务(多项选择)中,我们提供K个上下文加上正确完成项的示例,紧接着提供一个仅有上下文的示例,并比较语言模型预测每个完成项的可能性。对于大多数任务,我们比较每个标记的可能性(以标准化长度),但在少数数据集(ARC,OpenBookQA和RACE)中,通过除以每个完成项的无条件概率,计算P(完成项|上下文)/P(完成项|答案上下文),来获得额外的好处,其中答案上下文是字符串"Answer:"或"A:",用来提示完成项应该是一个答案,除此之外则是通用的。
在涉及二元分类的任务中,我们给出更具语义意义的选项名称(例如“True”或“False”,而不是0或1),然后像处理多项选择任务样;我们有时也会按照[RSR19](见附录G)的方法设置任务。
在自由形式完成的任务中,我们使用与[RSR+19]相同的参数进行束搜索:束宽为4,长度惩罚为a=0.6。我们根据当时的数据集标准,使用F1相似度得分、BLEU或精确匹配来评分模型。
最终结果在公开测试集上报告,针对每种模型大小和学习设置(零样本、单样本和小样本)。当测试集是私有的,我们的模型通常太大,无法适应测试服务器,所以我们报告在开发集的结果。我们确实在少数数据集(SuperGLUE、TriviaQA、PiQa)上向测试服务器提交,我们能够进行提交,并且只提交200B小样本的结果,并为其他所有数据集报告开发集的结果。
3.结果
在图3.1中,我们展示了第2节中描述的8个模型的训练曲线。对于这张图,我们还包括了6个额外的参数极少的模型,参数少至100,000个。正如[KMH*20]中观察到的,当有效利用训练计算时,语言建模性能呈幂律增长。在将这一趋势延长两个数量级后,我们观察到离幂律的偏离仅有轻微(如果有的话)的变化。可能有人会担心,这些交叉熵损失的改进仅来自于对训练语料库中不必要细节的建模。然而,在接下来的部分中,我们将看到交叉熵损失的改进在自然语言任务的广泛范围内带来了持续的性能提升。
在下面,我们评估了第2节中描述的8个模型(1750亿参数的GPT-3和7个较小的模型)在广泛的数据集上的表现。我们将数据集分为9类,代表大致相似的任务。
在3.1节中,我们评估了传统的语言建模任务和与语言建模类似的任务,如Cloze任务和句子/段落完成任务。在3.2节中,我们评估了“闭卷”问题回答任务:需要使用存储在模型参数中的信息来回答常识问题的任务。在3.3节中,我们评估了模型在语言之间的翻译能力(特别是一次性和少数次性)。在3.4节中,我们评估了模型在类似Winograd 模式的任务上的表现。在3.5节中,我们评估了涉及常识推理或问题回答的数据集。在3.6节中,我们评估了阅读理解任务;在3.7节中,我们评估了SuperGLUE 基准测试套件;3.8节中,我们简要探讨了自然语言推理。最后,在3.9节中,我们发明了一些附加任务,特别是用于探测上下文学习能力-这些任务侧重于即时推理、适应技巧或开放式文本合成。我们在few-shot场景,one-shot和zero-shot设置中评估所有任务。

3.1语言建模、Cloze和完成任务
在本节中,我们测试了GPT-3在传统的语言建模任务上的表现,以及涉及预测一个感兴趣的单词、完成一个句子或段落或在文本完成中进行选择的相关任务。
3.1.1语言建模
我们在Penn Tree Bank(PTB)[MKM94]数据集上计算zero-shot困惑度,该数据集在[RWC+19]中有度量。我们省略了其中4个与维基百科相关的任务,因为它们在我们的训练数据中完全包含,我们还省略了一个亿字基准测试,因为大部分数据集包含在我们的训练集中。由于PTB早于现代互联网,所以它避免了这些问题。我们最大的模型在PTB上刷新了最新技术水平,优势达到了15个百分点,实现了20.50的困惑度。请注意,由于PTB是一个传统的语言建模数据集,所以没有明确的示例分隔来定义one-shot或few-shot评估,所以我们只衡量zero-shot。
3.1.2 LAMBADA
LAMBADA 数据集[PKL+16]测试了文本中长距离依赖性的建模。模型被要求预测需要读取一段段落上下文的句子的最后一个单词。最近有人提出,持续的语言模型的扩展在这个困难标准上的回报逐渐减少。[BHT*20]反思了最近两个最新技术领先结果([SPP+19]和[Tur20])之间的模型大小翻倍只取得了微小的1.5%的改进,并认为“继续扩大硬件和数据规模的数量级并非前进的道路”。然而我们发现这条道路仍然有希望,在zero-shot情况下,GPT-3在LAMBADA上取得了76%,比前一项先进技术提高了8%。
![表 3.2:掐头去尾和完成任务的性能。GPT-3在 LAMBADA上明显改善了SOTA,同时在两个难度较大的完形填空预测数据集上取得了可观的性能。a[Tur20] b[RWC"19] c[LDL19] d[LCH'20]](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F06d43171-d41b-42f5-92c6-383f47fbf41c%2Faff9e394-a88a-4fb7-a596-005a5de76822%2FScreenshot_2024-01-12-17-28-50-982_cn.wps.moffice_eng-edit.jpg?table=block&id=56692107-122c-42f3-80b7-6456730773a5&t=56692107-122c-42f3-80b7-6456730773a5&width=552.984375&cache=v2)
![图3.2:在LAMBADA上,语言模型的“few-shot“能力大大提高了准确性。在这种情况下,GPT-3 2.7B 的表现优于SOTA 17B 参数 Turing-NLG [Tur20],而GPT-3 175B 则将最新技术水平提高了18%。请注意,zero-shot使用的格式不同于文中所述的one-shot和few-shot。](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F06d43171-d41b-42f5-92c6-383f47fbf41c%2Fbfe6efa8-011b-4e34-a39f-0aaf3b6a4c12%2FScreenshot_2024-01-12-17-29-56-193_cn.wps.moffice_eng-edit.jpg?table=block&id=b982f0c3-08ab-4727-b2b0-ff9e4fc5d1c1&t=b982f0c3-08ab-4727-b2b0-ff9e4fc5d1c1&width=552.984375&cache=v2)
LAMBADA也展示了few-shot学习的灵活性,因为它为解决这个数据集经常出现的问题提供了一种方式。虽然在LAMBADA中的完成词汇总是句子的最后一个词,但是标准的语言模型无法知道这一细节。因此,除了正确的结尾外,它还为段落的其他有效连续部分分配概率。在过去,这个问题已经通过停用词过滤器[RWC+19](禁止“连续”词)部分解决。few-shot情况允许我们“框架”任务作为填空测验,并允许语言模型从例子中推断出需要完成的恰恰是一个词。我们使用以下填空格式:
Alice was friends with Bob. Alice went to visit her friend ______。
Bob George bought some baseball equipment, a ball, a glove, and a _当以这种方式提出的例子,GPT-3在少数样本情况下取得了86.4%的准确性,比之前的最高水平提高了超过18%。我们观察到,少数样本的表现随着模型大小的增加而显著提高。当这种设置降低了最小模型的性能近20%时,对于GPT-3,它提高了精确度10%。最后,填空法在一次性情况下并不有效,它总是比零散情况表现得更差。可能的原因是所有模型仍然需要若干个示例来识别这种模式。表3.3:三项开放域QA任务的结果。GPT-3显示的是少量、一次和零次测试的结果,并与之前闭卷和开放域测试的SOTA结果进行了比较。TriviaQA少量测试结果在维基分割测试服务器上进行评估。
当以这种方式提出的例子,GPT-3在少数样本情况下取得了86.4%的准确性,比之前的最高水平提高了超过18%。我们观察到,少数样本的表现随着模型大小的增加而显著提高。当这种设置降低了最小模型的性能近20%时,对于GPT-3,它提高了精确度10%。最后,填空法在one–shot情况下并不有效,它总是比zero-shot情况表现得更差。可能的原因是所有模型仍然需要若干个示例来识别这种模式。

需要注意的是,对测试集污染的分析确定,LAMBADA数据集的大部分看似在我们的训练数据中出现,然而,在第4节进行的分析提示,这对性能的影响可以忽略不计。
3.1.3 HellaSwag
HellaSwag 数据集[ZHB19]涉及挑选最佳的故事或一系列指令的结尾。例子的变体悖论性地为语言模型设定为困难,同时对人类来说容易(他们取得了95.6%的精确度)。
在一次性设置中,GPT-3 取得了78.1%的精确度,在少数情况下取得了79.3%的精确度,超过了微调1.5B参数语言模型[ZHR+19]的75.4%的准确度,但仍然低于通过微调多任务模型 ALUM取得的总体最佳情况的85.6%。
3.1.4 StoryCloze
接下来我们在 StoryCloze 2016 数据集[MCH16]上评估GPT-3,该数据集使得正确选择五个句子长度故事的结束句了。在zero-shot的情况下,GPT-3取得了83.2%,在少数派环境中(其中K=70),取得了87.7%。这还是低于使用一个BERT基础模型[LDL19]的微调的最高标准4.1%,但是比之前的zero-shot结果提高了大约10%。
3.2 闭卷问题回答
在这一部分,我们测量GPT-3回答关于广泛实际知识问题的能力。由于可能的查询数量庞大,这个任务通常通过合并使用一种信息检索系统和一种模型来找到相关的文本并学习在给定问题和检索到的文本的情况下生成答案。因为这种设置允许一个系统拽索和基于可能包含答案的文本进行条件设定,它被指定为“开卷”。[RRS20]最近展示了,一种大型语言模型可以惊人地直接回答问题而不需要依赖辅助信息。他们称这种更为严格的评估设置为“闭卷”。他们的工作表明更有容量的模型可能表现得更好,我们用GPT-3来测试这个假设。我们在[RRS20]中的3个数据集上评估GPT-3:自然问题[KPR19],网络问题[BCFL13],和闻人问答JCWZ17],使用同样的分割。注意,在所有结果都在闭书设置中,我们对few-shot、one-shot、和zero-shot的评估代表了一个比以前闭书问题回答工作更加严格的设置:除了不允许外部内容,也不允许对问答数据集本身进行微调。
GPT-3的结果如表3.3所示。对于闻人问答,我们在zero-shot设置中取得了64.3%,在one-shot设置中取得了68.0%,在few-shot下取得了71.2%。zero-shot的结果已经超过了微调的T5-11B 14.2%的结果,以及在预训练期间进行Q&A定制跨预测的版本3.8%。one-shot结果提高了3.7%,并匹配了不仅进行微调而且还使用了15.3B参数密集矢量索引的21M文档的学习检索机制的开放域QA系统的最高标准。稍低于这一点的是GPT-3的少数例题成绩,在此之上又提高了3.2%。在网络问题(WebQs)上,GPT-3在zero-shot的设置中取得了14.4%,在one-shot的设置中取得了25.3%,在few-shot的情况下取得了41.5%。这与微调的T5-11B的37.4%以及使用Q&A特定预训练程序的微调的T5-11B*SSM的44.7%进行比较。在few-shot情况下的GPT-3接近最新技术的微调模型的表现。值得注意的是,相比于闻人问答,WebQs从zero-shot到few-shot的提高要大得多(确实,它的zero-shot和one-shot的表现都很差),可能表明WebQs的问题和/或答案的风格对于GPT-3来说是偏离分布的。然而,GPT-3 似乎能够适应这种分布,在少数情况下恢复了强劲的表现。
![图3.3:在TriviaQA上,GPT3的性能随着模型大小的增加而平滑增长,这表明语言模型随着容量的增加而不断吸收知识。one-shot和few-shot的性能比zero-shot的性能有显著提高,达到并超过了SOTA 微调开域模型RAG[LPP*20]的性能。](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F06d43171-d41b-42f5-92c6-383f47fbf41c%2F799a76a0-fec4-4ad8-8cf5-943478bf9052%2FScreenshot_2024-01-12-17-50-44-813_cn.wps.moffice_eng-edit.jpg?table=block&id=110d0d32-6b43-4a7a-b501-0868ab0d0c25&t=110d0d32-6b43-4a7a-b501-0868ab0d0c25&width=552.9921875&cache=v2)
在自然问题(NQ)中,GPT-3在zero-shot设置中取得了14.6%,在one-shot性设置中取得了23.0%,在few-shot环境中取得了29.9%的结果,相较于微调的TS 11B*SSM的36.6%。类似于WebQS,从zero-shot到few-shot的大幅提升可能表明一个分布的转变,并可能也解释了与闻人问答和WebQs 比较下来的表现不够竞争。特别是,NQs中的问题倾向于对维基百科的具体知识进行非常精细的测试,这可能正在测试GPT-3的容量和宽泛预训练分布的极限。
总的来说,在三个数据集中的一个,GPT-3的one-shot匹配了开放领域微调的最高标准。在另外两个数据集中,尽管没有使用微调,但它都接近闭书最高标准的性能。在所有3个数据集中,我们发现性能与模型大小的缩放非常平滑(图3.3和附录H图H7),可能反映了模型容量直接转化为在模型参数中吸收的更多‘知识’的观点。
3.3 翻译
对于GPT-2,由于容量问题,在多语言文档集合上使用了滤镜,以产生仅限英语的数据集。即使有这样的过滤,GPT-2也显示出一些多语言能力,并在仅训练了剩余10兆字节的法语文本的情况下,在法英翻译中表现出非琐碎的能力。由于我们将GPT-2扩容超过两个数量级到GPT-3,我们也扩大了训练数据集的范围,包括其他语言的更多代表性,尽管这仍是一个需要进一步改进的领域。如2.2节所讨论的,我们的大多数数据来源于原始的Common Crawl,仅进行基于质量的过滤。尽管GPT-3的训练数据仍然主要是英语(按单词计算占93%),但它也包括7%的其他语言文本。
这些语言在补充材料中有记录。为了更好地理解翻译能力,我们还将分析扩展到其他两种常见的研究语言,德语和罗马尼亚语。现有的无监督机器翻译方法通常结合了一对单语数据集的预训练和反向翻译[SHB15],以受控的方式连接两种语言。相比之下,GPT-3从混合许多语言在自然方式组合的训练数据中学习,将它们在单词、句子和文档级别结合起来。GPT-3还使用单一的训练目标,该目标不是为任何特定任务量身定制或设计的。然而,我们的one-shot/few-shot示例设置与以前的无监督工作并不严格相当,因为它们使用了少量的配对示例(1个或64个)。这相当于最多一页或两页的上下文训练数据。
结果显示在表3.4中。zero-shot的GPT-3,只接收自然语言描述的任务,仍然比最近的无监督NMT结果表现差。然而,仅提供每项翻译任务的一个示例演示可以将性能提高超过7 BLEU,并接近与先前工作的竞争性能。
完整的few-shot设置的GPT-3进一步提高了4 BLEU,导致与先前的无监督NMT工作类似的平均性能。GPT-3在性能上根据语言方向明显偏斜。对于所研究的三种输入语言,GPT-3在翻译成英语时明显超过了以前的无监督NMT工作,但在其他方向上的翻译表现不佳。在英语-罗马尼亚语言翻译上,有一个明显的异常值,比以前的无监督NMT工作差了不止10 BLEU。这可能是一个弱点,原因是重用了为几乎全英语训练数据集开发的GPT-2的字节级BPE分词器。对于法英和德英,few-shot的GPT-3超过了我们所能找到的最佳监督结果,但由于我们对文献不熟悉,并且出现了这些是非竞争性基准的迹象,我们不怀疑这些结果代表真正的最高水平。
对于罗马妮亚语-英语,few-shot的GPT-3在BLEU上仅比整体SOTA差0.5,整体SOTA是通过组合无监督预训练、在608K标记示例上的监督微调和反向翻译[LHCG19b]实现的。
![表 3.4:在翻译成英语时,Few-shot GPT-3比之前的无监督NMT工作高出5 BLEU,这反映了它作为英语LM的优势。我们报告了在WMT14 法语<–>英语、WMT16 德语<–>英语 和WMT16 罗马尼亚语<–>英语 数据集上的BLEU分数,这些数据集是通过multi-bleu.perl和XLM的标记化进行测量的,以便与之前的无监督NMT工作进行最接近的比较。附录H中报告了SacreBLEUf[Pos18]的结果。a[EOAG18] b[DHKH14] c[WXH+18] d[oR16] e[LGG+20] f [SacreBLEU 签名:BLEU+case.mixed+numrefs.1+smooth.exp+tok.intl+version.1.2.20]。](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F06d43171-d41b-42f5-92c6-383f47fbf41c%2F9b8b17dc-870c-4e66-ab9e-f6f896a4fd5f%2FScreenshot_2024-01-15-09-56-35-848_cn.wps.moffice_eng-edit.jpg?table=block&id=46a53ebe-770a-4b68-b7c3-6c0231344c5d&t=46a53ebe-770a-4b68-b7c3-6c0231344c5d&width=552.9921875&cache=v2)



最后,在所有语言对和所有三种设置(zero-shot、one-shot和few-shot示例)中,随着模型容量的增加,性能平稳提高。这在图3.4中的少量示例结果中显示出来,并且所有三种设置的缩放显示在附录H中。
3.4 Winograd 风格任务
Winograd 模式挑战[LDM12]是一个经典的NLP任务,涉及确定代词指代的是哪个词。当代词在语法上模糊但在语义上对人来说是明确的。最近经过微调的语言模型在原始的Winograd数据集上达到了接近人类的性能,但像被敌意挖掘的Winogrande 数据集那样的更难版本[SBBC19]仍然大幅度落后于人类性能。我们在zero-shot、one-shot和few-shot样本设置中常规测试了GPT-3在Winograd 和Winogrande上的表现。


在Winograd上,我们在原始的273个 Winograd模式上测试了GPT-3,使用了在[RWC*19]中描述的相同的“部分评估”方法。请注意,这个设置与SuperGLUE基准中的WSC任务略有不同,后者被呈现为二元分类并需要实体提取才能转换为本节所述的形式。在zero-shot、one-shot和few-shot设置中,GPT-3分别达到了88.3%、89.7%和88.6%的成绩,没有显示出明确的上下文学习,但在所有情况下都实现了强力结果,仅略低于最先进技术和估计的人类表现。我们注意到污染分析在训练数据中发现了一些Winograd模式,但这似乎只对结果有很小的影响(见第4节)。
在更难的Winogrande数据集上,我们确实发现了上下文学习的收益:zero-shot设置下GPT-3达到了70.2%,one-shot下达到了73.2%,few-shot设置下达到了77.7%。相比之下,微调过的RoBERTA模型达到了79%,最先进技术是通过一个微调的高容量模型(T5)达到的84.6%,[SBBC19]报告的人类在任务上的表现是94.0%。
3.5常识推理
接下来,我们考虑三个旨在捕捉物理或科学推理的数据集,与句子完成、阅读理解或广泛知识问答不同。第一个是PhysicalQA(PIQA)[BZB+19],它提出了关于物理世界运作方式的常识性问题,旨在探究对世界的基于实境的理解。GPT-3 在zero-shot下达到了81.0%的准确度,在one-shot下达到了80.5%的准确度,在few-shot下达到了82.8%的准确度(后者在PIQA的测试服务器上测量)。这比之前的最先进技术由微调的RoBERTa所实现的79.4%准确率要好。PIQA在模型大小方面显示出相对浅层的缩放,并且仍然比人类表现差10%以上,但GPT-3的少量示例甚至零示例结果超过了当前的最先进技术。我们的分析对PIQA旗帜了一个潜在的数据污染问题(尽管测试标签是隐藏的),因此我们保守地将结果标记了星号。详情见第4节。
![表 3.7:阅读理解任务的结果。a[JZC+19] b[JN20] c[AI19] d[QIA20] e[SPP+19]所有分数均为F1。](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F06d43171-d41b-42f5-92c6-383f47fbf41c%2Fa615086b-3d64-4571-8b18-4b199a57f70d%2FScreenshot_2024-01-15-11-08-40-625_cn.wps.moffice_eng-edit.jpg?table=block&id=f33494f7-fe30-40e6-8378-74340e5e200f&t=f33494f7-fe30-40e6-8378-74340e5e200f&width=552.984375&cache=v2)
ARC[CCE+18]是一个从三年级到九年级科学考试中收集的多项选择题数据集。在“挑战”版本的数据集上,被筛选出的是简单的统计或信息检索方法无法正确回答的问题,GPT-3在zero-shot设置下达到了51.4%的准确度,在one-shot设置下达到了53.2%的准确度,在few-shot设置下达到了51.5%的准确度。这接近了来自 UnifiedQA[KKS+20]的一个微调RoBERTa基线的表现(55.9%)。在“简单”版本的数据集上(该基线方法回答正确的问题),GPT-3达到了68.8%、71.2%和70.1%,略微超过了来自[KKS+20]的一个微调RoBERTa基线。然而,这两个结果仍然比由UnifiedQA所实现的整体SOTAs差得多,这超过了GPT-3在挑战集上的少量示例结果27%,在简单集上的结果22%。
在OpenBookQA 上[GPT-3从zero-shkt到few-shot设置明显提高,但仍然比整体SOTA低20多点。GPT-3的少量示例表现类似于排行榜上的微调BERT Large 基线。
总的来说,GPT-3在常识推理任务上的上下文学习表现出了混合的结果,在one-shot和few-shot学习设置中只观察到小而不一致的收益,而在OpenBookQA上观察到了显著的改进。在所有评估设置中,GPT-3在新的PIQA数据集上设定了SOTA。
3.6阅读理解
接下来我们将评估GPT-3在阅读理解任务上的表现。我们使用了一个包括概括性、多项选择、和基于跨度的答案格式的5个数据集组成的套装,在对话和单个问题设置中进行评估。我们在这些数据集上观察到GPT-3的表现有很大的差异,这表明不同的答案格式对其能力的影响不同。总体来看,我们观察到GPT-3与初始基线和使用各个数据集上下文表示进行训练的初步结果相当。
GPT-3在CoQA[RCM19]上表现最好(接近人类基线的3点),这是一个自由形式的对话数据集;并在QuAC[CHI18]上的表现最差(比 ELMo 基线低13F1),这是一个需要对教师-学生互动的结构化对话行为和答案跨度选择进行建模的数据集。在DROP数据集[DWD19]上,这是一个在阅读理解环境中测试离散推理和数值计算的数据集,GPT-3在few-shot的设置下超过了原始论文中的BERT基线,但仍远远低于人类的表现和那些利用符号系统增强神经网络的最先进方法[RLL+19]。在SQuAD2.0[RJL18]上,GPT-3展示了其少数提示的学习能力,相比zero-shot的设置提高了近10 F1(到69.8)。这使得它略微超过了原始论文中的最优的微调结果。在RACE[LXL+17]上,一个由中学和高中英语考试题组成的多项选择数据集,GPT-3的表现相对较弱,只能和最早利用上下文表示的工作竞争,但仍然落后于最先进技术45%。
3.7 SuperGLUE
为了更好地在NLP任务上汇总结果,并以更系统的方式与BERT和RoBERTa等流行模型进行比较,我们还在一个标准化的数据集集合上评估了GPT-3,即SuperGLUE基准[WPN+19][WPN+19][CLC+19][DMSTI9] [RBG11] [KCR*18] [ZLL+18] [DGM06] [BHDD*06][GMDD07][BDD+09][PCC18][PHR+18]。GPT-3在SuperGLUE 数据集上的测试集表现如表3.8所示。在few-shot的设置中,我们对所有任务使用了32个样例,这些样例是从训练集随机采样的。对于所有任务,除WSC和MultiRC外,我们采样了一组新的样例用于每个问题的上下文。对于WSC和MultiRC,我们为我们评估的所有问题使用了从训练集随机抽取的相同样例作为上下文。



我们注意到GPT-3在各任务上的表现有很大差异。在COPA和ReCoRD上,GPT-3在one-shot和few-shot的设置中接近最先进的表现,其中COPA的分数仅略低,排名积分榜第二,而第一名由一个微调过的110亿参数模型(T5)持有。在WSC上,表现仍然相当强,少数提示设置中达到了80.1%(注意GPT-3在3.4节描述的原始Winograd 数据集上达到了88.6%)。在BoolQ,MultiRC,和RTE上,表现适中,大致与微调过的BERT-Large相当。在CB上,我们看到了在few-shot设置下75.6%的训练迹象。
WiC 是一个明显的弱点,few-shot性能为49.4%(纯随机机会)。我们尝试了WiC的许多不同的说法和公式(涉及判断一个单词在两个句子中是否以同样的含义使用),其中都没有能够取得强大的表现。这暗示了一个现象,这将在下一节(讨论ANLI基准)中交得更明显-GPT-3在那些涉及比较两个句子或片段的任务上,在few-shot或one-shot的设置中表现得较弱,例如在两个句子中一个词是否以相同的方式使用(WiC),一个句子是否是另一个的释义,或者一个句子是否含蓄另一句。
这也可能解释为什么在RTE和CB上的分数相对较低,这两项也遵循这种格式。尽管有这些弱点,GPT-3仍在8个任务中的4个超过了微调过的BERT-Large,在两个任务上GPT-3接近由微调过的110个亿参数模型持有的最先进水平。
最后,我们注意到,few-shot的SuperGLUE 分数随着模型大小和上下文中示例的数量的增加而稳步提升,显示出对上下文学习的持续益处(图3.8)。我们将K增加到每个任务32个示例,然后再增加额外的示例将无法可靠地适应我们的上下文。在扫描K的值时,我们发现GPT-3需要少于每个任务总共8个示例就可以在总的SuperGLUE 得分上超过微调过的 BERT-Large。
3.8 NLI
自然语言推理(NLI,Natural Language Inference)[Fyo00]是关于理解两句话之间关系的能力。

通常,这个任务被构造为一个两类或三类分类问题,其中模型将对第二句话的分类:它是否逻辑上从第一句话推出,是否与第一句话矛盾,或者是否可能为真(中性)。
SuperGLUE 包括一个NLI数据集,RTE,它评估这个任务的二元版本。在RTE上,只有GPT-3的最大版本在任何评估设置中都能比随机做得更好(56%),但在few-shot的设置中,GPT-3的表现与单次任务微调的BERT Large 相似。我们还对最近引进的对抗性自然语言推理数据集(ANLI)[NWD+19]进行了评估。ANLI是一个困难的数据集,包含了三轮(R1,R2和R3)敌对性挖掘的自然语言推理问题。与RTE类似,除了GPT-3之外的所有模型在ANLI上的表现都几乎完全是随机的,即使在few-shot的设置下(33%),而GPT-3本身在第三轮上有所体现。ANLIR3的结果突出显示在图3.9中,所有轮次的完整结果可以在附录H中找到。这些在RTE和ANLI上的结果都表明,NLI对于语言模型仍然是一个非常困难的任务,只是开始显现出一些进展的迹象。
3.9合成和定性任务
一个引导GPT-3在few-shot(或零和一次提示)设置下展示其能力范围的方法是,将需要其进行简单的临时计算推理、识别训练中不太可能出现的新模式,或者快速适应不寻常任务的任务交给它。我们设计了几个任务来测试这类能力。首先,我们测试了GPT-3执行算术的能力。其次,我们创建了几个涉及重新排列或解开一个单词中字母的任务,这些任务在训练中不太可能精确地出现。第三,我们测试了GPT-3解决SAT风格的类比问题的few-shot能力。最后,我们测试了GPT-3处理几个定性任务的能力,包括在一句话中使用新词,修正英语语法,和新闻文章生成。我们将发布合成数据集,以希望激发进一步研究语言模型的测试行为。
3.9.1算术
为了测试GPT-3在没有任务特定训练的情况下执行简单算术运算的能力,我们开发了一个涉及在自然语言中向GPT-3提出简单算术问题的10项测试小组:
- 双位数加法(2D+)一模型被要求将两个在[0;100)均匀取样的整数相加,问题以问题的形式表达,例如,“问:48加76是多少?答:124。
- 双位数减法(2D-)一模型被要求将两个在[0;100)均匀取样的整数相减;答案可能为负。示例:“问:34减53是多少?答:-19”。
- 三位数加法(3D+)一与双位数加法相同,只是数字是从[0;1000)均匀取样的。

- 三位数减法(3D-)一与双位数减法相同,只是数字是从[0;1000)均匀取样的。
- 四位数加法(4D+)一与三位数加法相同,只是数字是从[0;10000)均匀取样的。
- 四位数减法(4D-)一与三位数减法相同,只是数字是从[0;10000)均匀取样的。
- 五位数加法(5D+)一与三位数加法相同,只是数字是从[0;100000)均匀取样的。
- 五位数减法(5D-)一与三位数减法相同,只是数字是从[0;100000)均匀取样的。
- 双位数乘法(2Dx)一模型被要求将两个在[0;100)均匀取样的整数相乘,例如,“问:24乘以42是多少?答:1008”。
- 单位数组合(1DC)一模型被要求对三个一位数进行复合运算.其中最后两个数字括在括号内。例如,“问:6+(4*8)是多少?答:38”。这三个一位数在[0;10)上均匀选取,运算是从{+,,*}中均匀选取的。
在所有10个任务中,模型必须准确地生成正确的答案。对于每一项任务,我们都生成了一个由2,000个随机任务实例组成的数据集,并在这些实例上评估所有模型。
首先我们在few-shot中评估GPT-3,其结果如图3.10所示。在加法和减法上,当数字位数很小时,GPT-3显示出强大的熟练程度,达到了2位数加法的100%的准确度,2位数减法的98.9%,3位数加法的80.2%,3位数减法的94.2%.当数字位数增加时,性能会下降,但GPT-3仍然在四位数运算上达到25-26%的准确度,五位数运算上达到9-10%的准确度,这表明至少有一些能力推广到更大数量的数字位数.GPT-3也在二位数乘法上达到了29.2%的准确度,这是一个特别计算密集的操作。最后,GPT-3在单位数的组合运算上达到21.3%的准确度(例如,9*(7+5)),这表明它对单一操作之外的鲁棒性有一定的熟练程度.
正如图3.10清晰地表示的,小模型在所有这些任务上的表现都很糟糕-即使是130亿参数模型(仅次于1750亿的全GPT-3)也只能解决2位加法和减法的一半,其他所有操作不到10%的时间。
one-shot和zero-shot性能相对于few-shot性能有些降低,这表明适应任务(或至少识别任务)对于正确执行这些计算是重要的.然而,one-shot性能仍然非常强大,甚至全GPT-3的zero-shot性能明显优于所有小型模型的few-shot学习.The full GPT-3的所有三种设置都显示在表3.9中,所有三种设置的模型容量缩放都显示在附录H中。


为了现场检查模型是否只是记忆特定的算术问题,我们取出测试集中的三位数算术问题,并在我们的训练数据中以"<NUM1>+<NUM2>=“和"<NUM1> plus <NUM2>"的形式搜索它们。在2000个加法问题中,我们只找到了17个匹配项(0.8%),在2000个减法问题中,我们只找到了2个匹配项(0.1%),这表明只有一个微不足道的比例的正确答案可能被记忆了。此外,对错误答案的检查表明,模型经常犯如不携带“1”的错误,这表明它实际上是在尝试执行相关计算,而不是记忆一个表格。
总的来说,GPT-3在适度复杂的算术上在少数发射,一次和零次设置上表现出合理的熟练程度。
3.9.2 单词混乱和操作任务
为了测试GPT-3从几个例子中学习新的符号操作的能力,我们设计了一个涉及5个“字符操作”任务的小型电池。每个任务都涉及给模型一个通过混乱、增加或删除字符扭曲的单词,并要求它恢复原始单词。这5个任务是:
- 在单词中循环字母(CL)一模型被给一个字母被循环的单词,然后是“=”符号,期望生成原始单词。例如,它可能被赋予“lyinevitab”,并应输出“inevitably”。
- 除了第一个和最后一个字母的所有字母的字谜(A1)一模型被给一个除了第一个和最后一个字母以外的所有字母被随机混乱的单词,并必须输出原始单词。示例:criroptuon=corruption。
- 除了前两个和后两个字符以外的所有字符的字谜(A2)-模型被给一个除了前两个和后两个字符以外的所有字符被随机混乱的单词,并必须恢复原始的单词。示例:opoepnnt=opponent。
- 单词中的随机插入(R1)-一个随机的标点符号或空格字符被插入到一个单词的每个字母之间,模型必须输出原始单词。示例:s.u!c/c!e.s s i/o/n= succession。
拼反的单词(RW)一模型被给一个拼错的单词,并必须输出原始单词。示例:stcejbo=objects。对于每个任务,我们都生成了10,000个例子,我们选择的是[Nor09]测量的前 10,000个最频繁的单词,长度超过4个字符,少于15个字符。few-shot结果显示在图3.11中。

任务性能随着模型大小的增加而平稳增长,整个GPT-3模型在删除随机插入方面达到66.9%,在循环字母方面达到38.6%,在简单的字谜游戏中达到40.2%,在更困难的字谜游戏中达到15.1%(只固定第一个和最后一个字母)。这些模型都无法在单词中反转字母。
在one-shot学习设置中,性能明显减弱(降低一半以上),在zero-shot学习设置中,模型很少能执行任何任务(表3.10)。这表明模型确实似乎在测试时学习这些任务,因为模型无法在零次学习设置中执行它们,而且它们的人工性质使它们不太可能出现在预训练数据中(尽管我们无法确定这一点)。
我们可以通过画出“上下文学习曲线”进一步量化性能,这些曲线显示了任务性能作为上下文示例数量的函数。我们在图1.2中显示了符号插入任务的上下文学习曲线。我们可以看到,较大的模型能够越来越有效地利用上下文信息,包括任务示例和自然语言任务描述。
最后,值得补充的是,解决这些任务需要进行字符级操作,而我们的BPE编码在单词的重要部分上运行(每个令牌平均为0.7个单词),因此从LM的角度来看,成功完成这些任务不仅涉及操作BPE token,还涉及了解和拆分它们的子结构。此外,CL,A1和 A2不是一一对应关系(即,解开单词并不是打乱单词的确定性函数),需要模型执行一些搜索来找到正确的解除打乱。因此,涉及的技能似乎需要非平凡的模式匹配和计算。
3.9.3 SAT类比问题
为了测试GPT-3在相对于典型文本分布有些不寻常的任务上,我们收集了一组374个“SAT类比”问题[TLBSO3]。类比问题是一种多项选择题,它在2005年以前构成了SAT入学考试的一部分。典型的例子如“audacious is to boldness as (a) sanctimonious is to hypocrisy,(b)anonymous is to identity, (c) remorseful is to misdeed, (d) deleterious isto result,(e)impressionable is to temptation”。学生要选择哪个单词对与原始单词对的关系相同;在本示例中,答案是“sanctimonious isto hypocrisy”。在这个任务中,GPT-3在few-shot设置中达到65.2%,在one-shot设置中达到59.1%,在zero-shot设置中达到53.7%,而大学申请者的平均得分是57%[TLO5](随机猜测得分为20%)。如图3.12所示,结果随着规模的扩大而改善,1750亿参数模型相比13亿参数模型提高了10%以上。

3.9.4新闻文章生成
在生成式语言模型的先前工作中,通过对模型进行有条件采样,给定一个由人类编写的新闻文章的开头,定性测试了其生成合成“新闻文章”的能力[RWC+19]。相对于[RWC+19],用于训练GPT-3的数据集在新闻文章方面减少了很多,因此通过原始无条件样本尝试生成新闻文章效果较差,例如,GPT-3经常将“新闻文章”的前句解释为一条推文,然后发布合成的回复或后续的推文。为了解决这个问题,我们使用了GPT-3的few-shot学习能力,给模型提供了三篇之前的新闻文章作为上下文条件。有了一篇新文章的标题和副标题,模型能够可靠地生成“新闻”类型的短篇文章。
为了衡量GPT-3生成的新闻文章质量(我们认为这可能与条件样本生成质量相关),我们决定量化人类在区分GPT-3生成的文章和真实文章方面的能力。类似工作已经由Kreps等人[KMB20]和Zellers等人[ZHR+19]完成。生成式语言模型被训练以匹配人类生成的内容分布,所以人类在区分两者的(无)能力是衡量质量的一个潜在重要标准。
为了了解人类在检测模型生成的文本方面的能力,我们从newser.com 网站上任意选取了25篇文章的标题和副标题(平均长度:215个单词)。然后,我们为大小从125M到175B(GPT-3)参数的四个语言模型生成了这些标题和副标题的补充文本(平均长度:200个单词)。对于每个模型,我们为大约80名美国参与者提供了一个测验,这个测验包括这些真实的标题和副标题,后面紧跟着的是人类编写的文章或模型生成的文章。参与者被要求选择文章是否“很有可能是人类写的”,“更有可能是人类写的”,“我不知道”,“更有可能是机器写的”,或“很有可能是机器写的”。
我们选择的文章不在模型的训练数据中,并且模型输出是通过程序化方法格式化和选择的,以防止人为挑选数据。所有模型都使用相同的上下文作为条件输出,并且事先用相同的上下文大小和相同的文章标题和副标题作为提示进行训练。
然而,我们还进行了一个实验,以控制参与者的努力和注意力,采用相同的格式,但涉及故意使用模型生成的较差的文章。这是通过从一个“控制模型”生成文章来实现的:一个没有上下文的160M参数模型和增加输出随机性的模型。

人类检测到故意写得糟糕的文章由模型生成的平均精度(每个参与者的正确分配与非中性分配的比例)是86%,而50%的随机水平表现。相比之下,人类检测到175B参数模型产生的文章的平均精度为52%只比随机水平高一点(见表3.11)。人类在检测到模型生成文本的能力似乎随着模型规模的增加而下降:有一种趋势,模型规模越大,人类对GPT-3的检测接近随机水平。尽管参与者在每个输出上花费的时间随着模型规模的增加(见附录E)。
图 3.14 和 3.15 给出了 GPT-3 生成的合成文章的示例。 正如评估所示,大部分文本对于人类来说很难与真实的人类内容区分开来。事实上的不准确性可以是文章是由模型生成的一个指标,因为,不像人类作者,模型无法访问文章标题指向的特定事实,或者当文章撰写时间。其他指标包括重复,不连贯,和不寻常的措词,尽管这些通常足够细微,以至于不会被注意到。
Ippolito等人的相关工作[IDCB E19]表明,如GROVER[ZHR+19]和GLTR[GSR19]这样的自动鉴别器可能明显比人工评估者更擅长检测模型生成的文本。检测这些模型的自动化可能是未来研究的一个有希望的领域。
Ippolito 等人 [IDCBE19] 还指出,随着人类观察到的令牌数量增加,人类检测模型生成文本的准确性也会提高。为了对人类检测 GPT-3 175B 生成的较长新闻文章的能力进行初步调查,我们从路透社选择了 12 篇平均长度为 569 字的世界新闻文章,并使用 GPT-3 生成了这些文章的补全,平均长度为 498 字(比我们最初的实验长 298 字)。按照上述方法,我们进行了两项实验,每项实验约有 80 名美国参与者,用来比较人类对GPT-3和对照模型生成的文章的检测能力。
我们发现,人类在检测对照模型生成的长文章的平均精度是88%,而在检测GPT-3 175B生成的长文章的平均精度略高于随机水平,为52%(见表3.12)。这表明,对于长度在500词左右的新闻文章,GPT-3 仍然会生成人类认为难以与人类撰写的新闻文章区分开来的文章。
3.9.5 学习和使用新词
发展语言学[CB78]中研究的一项任务是学习和运用新词汇的能力,例如,在只看到一个单词的定义后,就在句子中使用它,或者相反,仅从一个用法中推断出一个单词的含义。在这里,我们定性地测试 GPT-3 完成前者的能力。具体来说,我们给 GPT-3 一个不存在的单词的定义,比如“Gigamuru”,然后要求它在一个句子中使用它。我们给出一到五个例子,用一句话对这些单词的应用跟定义进行举例,所以就示例而言,这个任务是“ Few-Shot”(即少数示例),就具体单词而言是“One-Shot”(即一次性)。表3.16显示了我们生成的6个例子;所有定义都是人工生成的,第一个答案是人工生成的作为条件,而后续的答案是由GPT-3生成的。这些例子是一次生成的,我们没有省略或重试任何提示。在所有情况下,生成的句子似乎都是这个单词的正确或至少是合理的用法。在最后一个句子中,模型为单词“screeg”生成了一个合理的词形变化(即“screeghed”),尽管这个词的用法有点尴尬(“screeghed at each other”),但从某种意义上说,它可以描述一场玩具剑的战斗。总的来说,GPT-3似乎至少在使用新单词造句方面很熟练。

图3.13:人类识别新闻文章是否由模型生成的能力(以正确分配与非中性分配的比率来衡量)随着模型大小的增加而降低。顶部虚线表示的是对蓄意不良的对照模型(无条件 GPT-3小模型,输出随机性更高)输出的准确性,底部虚线表示的是随机水平(50%)。最佳拟合线为幂律,置信区间为95%。




3.9.6纠正英语语法
另一个非常适合few-shot学习的任务是纠正英语语法。我们通过给出提示“错误的英语输入:<句子>\n 正确的英语输出:<句子>”的形式,在few-shot环境下对 GPT-3 进行了测试。我们给 GPT-3 一个人类生成的纠正,然后要求它再纠正 5 个(同样没有任何遗漏或重复)。结果如图 3.17 所示。

4 测量和防止基准测试的记忆
由于我们的训练数据集来源于互联网,因此我们的模型有可能在一些基准测试集上进行了训练。从互联网规模的数据集中准确检测测试数据污染是一个新的研究领域,还没有建立最佳实践。虽然在不调查污染的情况下训练大型模型是常见的做法,但考虑到预训练数据集的规模越来越大,我们认为这个问题变得越来越重要。
这种担忧不仅仅是假设性的。最早之一在 Common Crawl 数据上训练语言模型的论文[TL18]检测并删除了与他们的一个评估数据集重叠的训练文档。其他工作如 GPT-2 [RWC+19]也进行了事后重叠分析。他们的研究相对令人鼓舞,发现尽管模型在训练和测试之间重叠的数据上表现稍好一些,但由于受污染数据的比例很小(通常只有几个百分点),这并没有对报告的结果产生显著影响。
GPT-3运行在一个有些不同的机制上。一方面,数据集和模型的规模大约比GPT-2的规模大两个数量级,包括大量的常用爬取,创建了污染和记忆的增加的潜力。另一方面,正是由于大量的数据,即使是GPT-3175B也并没有比其他规模的差距过大,相对于一个被他们剔除的持有验证集(图4.1)。因此,我们期待污染很可能会频繁发生,但其影响可能不会像人们担心的那样大。我们最初试图通过主动搜索和试图去掉我们训练数据和这篇论文所有基准测试的开发和测试集之间的任何重叠来解决这个问题。不幸的是,一个bug 导致只有部分检测到的重复在训练数据中去掉了。由于训练的成本,再训练模型是不可行的。为解决这个问题,我们详