论文:
https://arxiv.org/abs/2005.14165
摘要
最近的研究表明,通过在大规模文本语料库上进行预训练,然后在特定任务上进行微调,可以在许多NLP任务和基准上取得显著的进展。虽然这种方法在结构上通常是任务无关的,但仍然需要数千或数万个示例的任务特定微调数据集。相比之下,人类通常可以通过少量示例或简单指令来执行新的语言任务,而当前的NLP系统在这方面仍然存在很大困难。在这里,我们展示了扩大语言模型的规模大大改善了任务无关的少量示例学习的性能,有时甚至达到了与之前的最先进的微调方法竞争的水平。具体来说,我们训练了GPT-3,这是一个具有1750亿参数的自回归语言模型,比之前的任何非稀疏语言模型多10倍,并测试了其在少量示例设置中的性能。对于所有任务,GPT-3均未进行任何梯度更新或微调,通过纯文本与模型进行任务和少量示例演示的交互。GPT-3在许多NLP数据集上表现出强劲的性能,包括翻译、问答和完形填空任务,以及一些需要即时推理或领域适应的任务,如打乱单词、在句子中使用新词或执行三位数算术运算。同时,我们还发现了一些数据集,其中GPT-3的少量示例学习仍然存在困难,以及一些数据集,其中GPT-3在大规模网络语料库训练中面临方法论问题。最后,我们发现GPT-3可以生成新闻文章样本,人类评估者难以区分这些文章与人类撰写的文章。我们讨论了这一发现以及GPT-3总体的更广泛社会影响。
1 引言
近年来,NLP系统中预训练语言表示的趋势呈现出越来越灵活和任务无关的方式应用于下游转移。首先,使用词向量[ MCCD13 , PSM14 ]学习单层表示并将其输入任务特定架构,然后使用具有多层表示和上下文状态的RNN形成更强的表示[ DL15 , MBXS17 , PNZtY18 ](尽管仍然应用于任务特定架构),最近预训练的循环或变压器语言模型[ 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.1所示)。最近的工作[ RWC + 19 ]尝试通过我们称之为"上下文学习"的方法来实现这一点,使用预训练语言模型的文本输入作为任务规范的一种形式:模型以自然语言指令和/或少量任务演示为条件,然后仅通过预测下一步来完成进一步的任务实例。
虽然这一方法显示出一些初步的希望,但其结果仍远不及微调------例如[ RWC + 19 ]在自然问题上仅达到4%,即使其55 F1的CoQa结果现在也落后于最新技术35分以上。显然,元学习需要大幅改进才能作为一种实用的解决语言任务的方法。
语言建模中的另一个最近趋势可能提供前进的途径。近年来,变压器语言模型的容量显著增加,从1亿参数[ RNSS18 ],到3亿参数[ DCLT18 ],到15亿参数[ RWC + 19 ],到80亿参数[ SPP + 19 ],110亿参数[ RSR + 19 ],最后是170亿参数[ Tur20 ]。每次增加都带来了文本合成和/或下游NLP任务的改进,有证据表明,日志损失与许多下游任务相关,并随着规模的扩大呈现出平滑的改进趋势[ KMH + 20 ]。由于上下文学习涉及在模型参数内吸收许多技能和任务,因此合理推测,上下文学习能力可能随着规模的增加显示出同样强劲的增长。
图1.1:语言模型的元学习
在无监督预训练期间,语言模型开发出一套广泛的技能和模式识别能力。然后,它在推理时使用这些能力快速适应或识别所需任务。我们使用术语"上下文学习"来描述这一过程的内循环,该过程在每个序列的前向传递中发生。本图中的序列并非旨在代表模型在预训练期间看到的数据,而是为了展示有时在单个序列中嵌入了重复的子任务。
图1.2:更大规模的模型对上下文信息的利用效率越来越高
我们展示了在一个简单任务上的上下文学习性能,该任务要求模型从单词中移除随机符号,分别在有和没有自然语言任务描述的情况下进行(见3.9.2节)。对于大型模型来说,"上下文学习曲线"更陡峭,表明其从上下文信息中学习任务的能力有所改善。我们在广泛的任务中看到了类似的定性行为。
图1.3:所有42个以准确率为单位的基准测试的总体性能
虽然零样本性能随着模型规模的增大而稳步提高,但少量样本性能提高得更快,表明更大的模型在上下文学习方面更为熟练。有关SuperGLUE这一标准NLP基准套件的更详细分析,请参见图3.8。
在本文中,我们通过训练一个拥有1750亿参数的自回归语言模型(我们称之为GPT-3),并测量其上下文学习能力来测试这一假设。具体来说,我们在超过二十个NLP数据集以及一些新任务上评估GPT-3,这些任务旨在测试对训练集中不太可能直接包含的任务的快速适应性。对于每个任务,我们在三种条件下评估GPT-3:(a) "少量示例学习",即上下文学习,允许在模型的上下文窗口中放入尽可能多的示例(通常是10到100个);(b) "单次示例学习",即只允许一个示例;© "零示例学习",即不允许示例,仅给模型一个自然语言的指令。GPT-3也可以在传统的微调设置中进行评估,但我们将其留待未来工作中处理。
图1.2展示了我们研究的条件,并展示了一个简单任务的少量示例学习,要求模型从单词中移除多余的符号。随着自然语言任务描述的添加以及模型上下文中的示例数量(K)的增加,模型性能提高。少量示例学习也随着模型规模的增加而显著提高。尽管在这个案例中的结果特别显著,但在我们研究的大多数任务中,模型规模和上下文中示例数量的总体趋势都是一致的。我们强调,这些"学习"曲线不涉及任何梯度更新或微调,仅仅是增加作为条件输入的示例数量。
总体而言,在NLP任务上,GPT-3在零示例和单次示例设置中取得了令人鼓舞的结果,在少量示例设置中,有时甚至与最先进的微调模型竞争甚至偶尔超越最先进水平。例如,GPT-3在零示例设置中在CoQA上取得了81.5的F1,在单次示例设置中取得了84.0的F1,在少量示例设置中取得了85.0的F1。类似地,GPT-3在零示例设置中在TriviaQA上达到了64.3%的准确率,在单次示例设置中达到了68.0%,在少量示例设置中达到了71.2%,最后一项在相同的闭卷设置下与微调模型的最先进水平相当。
GPT-3还显示出在测试快速适应性或即时推理任务上的单次示例和少量示例的熟练度,这些任务包括打乱单词、执行算术运算以及在只看过一次定义后在句子中使用新词。我们还展示了在少量示例设置中,GPT-3可以生成合成新闻文章,评估者难以区分这些文章与人类生成的文章。
同时,我们也发现了一些任务,即使在GPT-3的规模下,少量示例性能也存在困难。这包括自然语言推理任务,如ANLI数据集,以及一些阅读理解数据集,如RACE或QuAC。通过展示GPT-3的优点和缺点,包括这些限制,我们希望能够激发对语言模型中少量示例学习的研究,并引起对最需要进展的领域的关注。
整体结果的启发性概览可以在图1.3中看到,该图汇总了各种任务(尽管本身不应被视为严格或有意义的基准)。
我们还系统地研究了"数据污染"------这是在使用如Common Crawl等数据集训练高容量模型时越来越严重的问题,因为这些数据集可能包含测试数据集中的内容,原因是这些内容经常出现在网络上。在本文中,我们开发了系统工具来测量数据污染并量化其扭曲效应。尽管我们发现数据污染对GPT-3在大多数数据集上的性能影响微乎其微,但我们确实发现有几个数据集可能会夸大结果,我们要么不报告这些数据集上的结果,要么根据严重程度用星号标注。
除了以上所有内容,我们还训练了一系列较小的模型(参数范围从1.25亿到130亿),以便在零示例、单次示例和少量示例设置中将它们的性能与GPT-3进行比较。总体而言,我们发现对于大多数任务,在这三种设置中,模型容量与性能之间呈现出相对平滑的扩展;一个显著的模式是,零示例、单次示例和少量示例性能之间的差距通常随着模型容量的增加而扩大,这可能表明更大的模型是更熟练的元学习者。
最后,鉴于GPT-3展示的广泛能力,我们讨论了偏见、公平性和更广泛的社会影响问题,并尝试对GPT-3在这方面的特性进行初步分析。
本文其余部分的组织如下:在第2节中,我们描述了训练GPT-3和评估其方法。在第3节中,展示了在零示例、单次示例和少量示例设置中的全部任务结果。第4节探讨了数据污染(训练-测试重叠)的问题。第5节讨论了GPT-3的局限性。第6节讨论了更广泛的影响。第7节回顾了相关工作,第8节总结全文。
2 方法
我们的基本预训练方法,包括模型、数据和训练,与[ RWC + 19 ]中描述的过程相似,主要是对模型规模、数据集规模和多样性、训练时长进行相对直接的扩展。我们对上下文学习的使用也类似于[ RWC + 19 ],但在这项工作中,我们系统地探索了在上下文中学习的不同设置。因此,我们从明确定义和对比我们将评估GPT-3的不同设置开始。这些设置可以被视为它们在多大程度上依赖于任务特定数据的一个谱。具体来说,我们可以在这个谱上确定至少四个点(见图2.1的插图):
-
微调(Fine-Tuning,FT)是近年来最常见的方法,涉及通过在特定于所需任务的监督数据集上训练来更新预训练模型的权重。通常使用成千上万到数十万个标记示例。微调的主要优点是在许多基准上表现出色。主要缺点是每个任务都需要一个新的大型数据集、跨分布泛化能力差[ MPL19 ]、以及可能利用训练数据的虚假特征[ GSL + 18 , NK19 ],可能导致与人类表现的不公平比较。在这项工作中,我们不微调GPT-3,因为我们专注于任务无关的性能,但GPT-3原则上可以进行微调,这是未来工作的一个有前途的方向。
-
少量示例(Few-Shot,FS)是我们在这项工作中使用的术语,指的是在推理时为模型提供一些任务演示作为条件[ RWC + 19 ],但不允许进行权重更新。如图2.1所示,对于一个典型的数据集,一个示例有一个上下文和一个期望的完成(例如一个英文句子和法文翻译),少量示例通过提供K个上下文和完成的示例,然后是一个最终的上下文示例,模型预计提供完成。我们通常将K设置在10到100之间,因为这是模型的上下文窗口( n c t x = 2048 n_{ctx} = 2048 nctx=2048)可以容纳的示例数量。少量示例的主要优点是大大减少了对任务特定数据的需求,并减少了从大型但狭窄的微调数据集中学习过于狭窄分布的潜力。主要缺点是这种方法的结果迄今为止远不如最先进的微调模型。此外,仍然需要少量的任务特定数据。正如名称所示,这里描述的用于语言模型的少量示例学习与在其他ML上下文中使用的少量示例学习相关[ HYC01 , VBL + 16 ]------两者都涉及基于广泛任务分布(在本例中隐含在预训练数据中)学习,然后快速适应新任务。
-
单次示例(One-Shot,1S)与少量示例相同,只允许一个演示,此外还有一个自然语言描述任务,如图1所示。将单次示例与少量示例和零示例区分开的原因是,它最接近某些任务传达给人类的方式。例如,当要求人类在一个人类工人服务(如Mechanical Turk)上生成一个数据集时,通常会给出一个任务示例。相比之下,如果不给出任何示例,有时很难传达任务的内容或格式。
-
零示例(Zero-Shot,0S)与单次示例相同,只是不允许任何演示,仅给模型一个描述任务的自然语言指令。这种方法提供了最大的便利性、潜在的稳健性以及避免虚假相关性的可能性(除非它们在大规模预训练数据集中非常广泛地出现),但也是最具挑战性的设置。在某些情况下,即使对人类来说,如果没有先前的示例也难以理解任务的格式,所以这种设置在某些情况下是"极其困难的"。例如,如果有人被要求"制作一张200米短跑世界纪录的表格",这可能是模棱两可的,因为不清楚表格的确切格式或应该包含什么(即使进行了仔细澄清,准确理解所需的内容也可能很困难)。尽管如此,至少在某些设置中,零示例与人类执行任务的方式最为接近------例如,在图2.1的翻译示例中,人类可能仅从文本指令中就知道该做什么。
图2.1展示了使用英译法的示例的四种方法。在本文中,我们专注于零示例、单次示例和少量示例,目的是将它们作为不同的设置进行比较,而不是作为竞争的替代方案,这些设置在特定基准上的性能和样本效率之间提供了不同的权衡。我们特别强调了少量示例的结果,因为其中许多结果仅略低于最先进的微调模型。最终,单次示例,甚至有时是零示例,看起来是与人类性能最公平的比较,也是未来工作的重要目标。
下文的第2.1-2.3节分别详细介绍了我们的模型、训练数据和训练过程。第2.4节讨论了我们如何进行少量示例、单次示例和零示例评估的细节。
图2.1:零示例、单次示例和少量示例,与传统微调的对比
上图展示了使用语言模型执行任务的四种方法------微调是传统方法,而零示例、单次示例和少量示例(我们在这项工作中研究的)要求模型在测试时仅通过前向传递执行任务。在少量示例设置中,我们通常为模型提供几十个示例。所有任务描述、示例和提示的确切措辞可在附录G中找到。
这些参数代表的是用于描述和训练GPT-3模型的各种重要特性和超参数。以下是对每个参数的解释:
-
n params (参数数量): 模型中所有可训练参数的总数。这些参数决定了模型的复杂度和能力。例如,GPT-3 Small 有 125M (百万) 个参数,而 GPT-3 175B 有 175B (十亿) 个参数。
-
n layers (层数): 模型中的Transformer层的数量。每一层都包括一个多头注意力机制和一个前馈神经网络。层数越多,模型越深,通常也越强大。
-
d model (模型维度): 每一层中隐藏状态的维度。这个参数表示每一个隐藏状态向量的大小。例如,GPT-3 Small 的模型维度是 768,而 GPT-3 175B 的模型维度是 12288。
-
n heads (注意力头数): 每一层中多头注意力机制的头数。注意力头数越多,模型能够从更多角度"看"数据,捕捉到更多的复杂关系。例如,GPT-3 Small 有 12 个头,而 GPT-3 175B 有 96 个头。
-
d head (每个头的维度): 每个注意力头的维度。这个参数表示每一个注意力头的向量大小。例如,GPT-3 Small 中每个头的维度是 64,而 GPT-3 XL 中每个头的维度是 128。
-
Batch Size (批量大小): 训练过程中每一步处理的数据样本数量。在表中,它表示为以token为单位的批量大小。例如,GPT-3 Small 和 Medium 的批量大小是 0.5M (50万) tokens,而 GPT-3 175B 的批量大小是 3.2M (320万) tokens。
-
Learning Rate (学习率): 模型训练中使用的学习率。学习率决定了模型参数在每次更新中的变化幅度。例如,GPT-3 Small 的学习率是 6.0 × 10^{-4},而 GPT-3 175B 的学习率是 0.6 × 10^{-4}。
这些参数共同决定了GPT-3模型的架构、性能和训练过程中的效率。
2.1 模型和架构
我们使用与GPT-2 [ RWC + 19 ]相同的模型和架构,包括其中描述的修改初始化、预归一化和可逆标记化,唯一的例外是我们在变压器层中使用交替的密集和局部带状稀疏注意力模式,类似于稀疏变压器 [ CGRS19 ]。为了研究机器学习性能对模型规模的依赖性,我们训练了8种不同规模的模型,参数范围跨越三个数量级,从1.25亿到1750亿参数,最后一个是我们称之为GPT-3的模型。先前的研究 [ KMH + 20 ] 表明,在有足够训练数据的情况下,验证损失的扩展应大致呈现为平滑的幂律函数;训练许多不同规模的模型允许我们测试这一假设,不仅对验证损失,还包括下游语言任务。
表2.1展示了我们8个模型的规模和架构。这里, n p a r a m s n_{params} nparams是可训练参数的总数, n l a y e r s n_{layers} nlayers是层的总数, d m o d e l d_{model} dmodel是每个瓶颈层的单元数(我们总是将前馈层的大小设为瓶颈层的四倍, d f f = 4 ∗ d m o d e l d_{ff} = 4 * d_{model} dff=4∗dmodel), d h e a d d_{head} dhead是每个注意力头的维度。所有模型都使用一个上下文窗口, n c t x = 2048 n_{ctx} = 2048 nctx=2048个标记。我们在深度和宽度维度上将模型分布在GPU上,以最小化节点之间的数据传输。每个模型的精确架构参数是基于计算效率和在GPU布局中的负载平衡选择的。先前的研究 [ KMH + 20 ] 表明,在合理的宽范围内,验证损失对这些参数并不强烈敏感。
2.2 训练数据集
语言模型的数据集迅速扩展,最终形成了Common Crawl数据集2 [ RSR + 19 ],包含近一万亿个单词。这个规模的数据集足以训练我们最大的模型,而无需在同一个序列上进行两次更新。然而,我们发现未过滤或轻度过滤的Common Crawl版本往往比更多精心策划的数据集质量较低。因此,我们采取了三步来提高数据集的平均质量:(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亿个字节对编码的标记。请注意,在训练期间,数据集的抽样不是按其大小的比例,而是我们认为质量较高的数据集被更频繁地抽样,因此CommonCrawl和Books2数据集在训练期间被抽样不到一次,而其他数据集被抽样2-3次。这本质上是在接受少量过拟合以换取更高质量的训练数据。
图2.2:训练期间使用的总计算量
基于《神经语言模型的扩展定律》 [ KMH + 20 ] 中的分析,我们在更少的标记上训练了更大规模的模型。结果,尽管GPT-3 3B的规模几乎是RoBERTa-Large(355M参数)的10倍,但两者在预训练期间都消耗了大约50 petaflop/s-days的计算量。这些计算的具体方法可以在附录D中找到。
表2.2:用于训练GPT-3的数据集
"训练混合权重"指的是训练期间从给定数据集中抽取的示例比例,我们故意不按数据集的大小进行比例分配。结果是,当我们训练3000亿个标记时,一些数据集在训练期间最多被看到3.4次,而其他数据集则不到一次。
使用大规模互联网数据预训练的语言模型,尤其是那些能够记住大量内容的大型模型,一个主要方法学问题是下游任务可能被预训练时无意中看到的测试或开发集内容污染。为了减少这种污染,我们搜索并尝试移除所有研究基准中的开发和测试集的重叠部分。不幸的是,由于过滤中的一个错误,我们忽略了一些重叠部分,并且由于训练成本高,重新训练模型不可行。在第4节中,我们描述了剩余重叠的影响,并且在未来的工作中我们将更积极地去除数据污染。
2.3 训练过程
正如[ KMH + 20 , MKAT18 ]所发现的,更大的模型通常可以使用更大的批量大小,但需要较小的学习率。我们在训练过程中测量了梯度噪声规模,并用它来指导我们选择批量大小[ MKAT18 ]。表2.1显示了我们使用的参数设置。为了在训练较大模型时不耗尽内存,我们在每个矩阵乘法内使用模型并行性,并在网络层之间使用模型并行性。所有模型均在Microsoft提供的高带宽集群中的V100 GPU上进行训练。训练过程和超参数设置的详细信息见附录B。
2.4 评估
对于少量示例学习,我们通过从该任务的训练集中随机抽取K个示例作为条件来评估评估集中的每个示例,具体由1或2个换行符分隔,具体取决于任务。对于LAMBADA和Storycloze,没有可用的监督训练集,因此我们从开发集中抽取条件示例并在测试集上进行评估。对于Winograd(原版,而不是SuperGLUE版本),只有一个数据集,因此我们直接从中抽取条件示例。
K的值可以从0到模型上下文窗口允许的最大值不等,对于所有模型来说,这个值为 n c t x = 2048 n_{ctx} = 2048 nctx=2048,通常适合10到100个示例。较大的K值通常更好,但并不总是如此,因此当有单独的开发集和测试集时,我们在开发集上试验几个K值,然后在测试集上运行最佳值。对于某些任务(见附录G),我们还使用自然语言提示(对于K=0的情况,则不使用演示)。
对于涉及从多个选项中选择一个正确完成的任务(多项选择),我们提供K个上下文加正确完成的示例,然后提供一个上下文示例,并比较每个完成的语言模型似然性。对于大多数任务,我们比较每个标记的似然性(以规范化长度),但在少量数据集(ARC、OpenBookQA和RACE)上,我们通过规范化每个完成的无条件概率来获得额外的好处,如在开发集上测量的那样,计算
P ( completion ∣ context ) P ( completion ∣ answer context ) \frac{P(\text{completion}|\text{context})}{P(\text{completion}|\text{answer context})} P(completion∣answer context)P(completion∣context)
其中,answer context是字符串"Answer: "或"A: ",用于提示完成应为答案,但在其他方面是通用的。
对于涉及二元分类的任务,我们给选项起更语义化的名称(例如"True"或"False"而不是0或1),然后将任务视为多项选择;我们有时也会将任务框架类似于[ RSR + 19](详见附录G)。
对于自由形式完成的任务,我们使用与[ RSR + 19 ]相同参数的束搜索:束宽为4,长度惩罚为 α = 0.6 \alpha = 0.6 α=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节中,我们评估了传统语言建模任务和类似语言建模的任务,如完形填空任务和句子/段落完成任务。在第3.2节中,我们评估了"闭卷"问答任务:需要使用存储在模型参数中的信息来回答一般知识问题的任务。在第3.3节中,我们评估了模型在语言之间翻译的能力(特别是单次示例和少量示例)。在第3.4节中,我们评估了模型在Winograd Schema类任务上的表现。在第3.5节中,我们评估了涉及常识推理或问答的数据集。在第3.6节中,我们评估了阅读理解任务,在第3.7节中,我们评估了SuperGLUE基准套件,并在第3.8节中简要探讨NLI。最后,在第3.9节中,我们设计了一些额外的任务,特别是为了探测上下文学习能力------这些任务侧重于即时推理、适应技能或开放式文本生成。我们在少量示例、单次示例和零示例设置中评估所有任务。