论文翻译 | Language Models are Few-Shot Learners 语言模型是少样本学习者(上)

摘要

最近的工作表明,通过在大规模文本语料库上进行预训练,然后在特定任务上进行微调,许多自然语言处理(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所示)。最近的工作[RWC+19]试图通过我们称为"上下文学习"的方式来实现这一点,使用预训练语言模型的文本输入作为任务规范的一种形式:模型被条件化于自然语言指令和/或任务的几个演示,然后期望模型通过预测接下来会发生什么来完成任务的进一步实例。

图1.1:语言模型元学习。在无监督的预训练过程中,语言模型开发了一套广泛的技能和模式识别能力。然后,它在推理时使用这些能力来快速适应或识别所需的任务。我们使用术语"上下文学习"来描述这个过程的内部循环,它发生在每个序列的前向传递中。这个图中的序列并不是为了代表模型在预训练期间看到的数据,而是为了表明有时在单个序列中嵌入了重复的子任务。

尽管这种方法已经显示出一些初步的潜力,但其结果仍然远不如微调------例如[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]。由于上下文学习涉及在模型的参数中吸收许多技能和任务,因此上下文学习能力可能会随着规模的增长而显示出类似的强劲提升。

在本文中,我们通过训练一个具有1750亿参数的自回归语言模型来验证这一假设,我们将其称为GPT-3,并测量其在上下文中的学习能力。具体来说,我们使用超过二十个NLP数据集以及一些新颖的任务来评估GPT-3,这些任务旨在测试模型对训练集中未直接包含的任务的快速适应能力。对于每个任务,我们在以下三种条件下评估GPT-3:(a)"少量样本学习",或者称为上下文学习,在这种条件下,我们允许尽可能多的演示以适应模型上下文窗口(通常为10到100个)。(b)"单样本学习",在这种情况下,我们只允许一个演示。(c)"零样本"学习,在这种情况下不允许有任何演示,只向模型提供一个自然语言的指令。原则上,GPT-3也可以在传统的微调设置中进行评估,但我们将其留作未来的工作。

图1.2:更大的模型对上下文信息的利用越来越有效。我们在一个简单的任务上展示了上下文学习性能,该任务要求模型从单词中删除随机符号,包括有和没有自然语言任务描述(参见第3.9.2节)。对于大型模型来说,更陡峭的"上下文学习曲线"表明从上下文信息中学习任务的能力得到了提高。我们在很多任务中都看到了本质上相似的行为。

图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:所有42个以准确率衡量的基准测试的综合性能表现。虽然零样本性能随着模型大小的增加而稳步提升,但少量样本性能的增长更为迅速,表明更大的模型在上下文学习方面更为擅长。有关SuperGLUE的更详细分析,请参见图3.8,SuperGLUE是一个标准的NLP基准测试套件。

图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或原则上可以评估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之间,因为这是可以适合模型上下文窗口(nctx = 2048)的示例数量。少样本的主要优点是大幅减少了对特定任务数据的需求,减少了从大型但狭窄的微调数据集中学习过于狭窄分布的可能性。主要缺点是这种方法的结果到目前为止比最先进的微调模型差很多。此外,仍然需要少量的特定任务数据。正如其名所示,这里描述的针对语言模型的少样本学习与机器学习其他领域中使用的少样本学习有关[HYC01, VBL+16]------两者都涉及基于广泛任务分布(在这种情况下隐含在预训练数据中)的学习,然后迅速适应新任务。

图2.1:零样本、单样本和少样本与传统的精调对比。上图展示了使用语言模型执行任务的四种方法------精调是传统方法,而我们在这项工作中研究的零样本、单样本和少样本方法,要求模型仅在测试时通过前向传播来执行任务。在少样本设置中,我们通常向模型展示几十个示例。所有任务描述、示例和提示的确切表述可以在附录G中找到。

  • 单样本(One-Shot, 1S)与少样本相同,只是除了自然语言任务描述外,只允许一个演示,如图1所示。区分单样本与少样本和零样本(如下)的原因是,单样本最接近于某些任务向人类传达的方式。例如,当要求人类在人类工作者服务上(例如Mechanical Turk)生成数据集时,通常会给一个任务演示。相比之下,如果没有给出示例,有时很难传达任务的内容或格式。
  • 零样本(0S)与单样本相同,不同之处在于不允许提供演示,模型仅被给予一个用自然语言描述任务的指令。这种方法提供了最大的便利性、潜在的鲁棒性,以及避免虚假相关性的能力(除非这些虚假相关性非常广泛地出现在大量预训练数据中),但同时也是最具挑战性的设置。在某些情况下,即使对于人类来说,没有先前的示例也可能难以理解任务的格式,因此在某些情况下这种设置是"不公平的困难"。例如,如果有人被要求"为200米短跑制作一个世界纪录表格",这个请求可能会产生歧义,因为可能不清楚表格应该具有哪种格式或者应该包含哪些内容(即使经过仔细澄清,精确理解所期望的内容也可能很困难)。然而,至少在某些设置中,零样本最接近人类执行任务的方式------例如,在图2.1中的翻译示例中,人类很可能仅凭文本指令就知道该做什么。

图2.1以将英语翻译成法语为例展示了这四种方法。在本文中,我们将重点放在zero-shot, one-shot和few-shot上,目的不是将它们作为竞争的替代方案进行比较,而是将它们作为不同的问题设置进行比较,这些问题设置在特定基准和样本效率之间提供了不同的权衡。我们特别强调少样本的结果,因为他们中的许多人只稍微落后于最先进的微调模型。然而,最终,单样本,甚至有时是零样本,似乎是对人类表现最公平的比较,也是未来工作的重要目标。

下面2.1-2.3节分别详细介绍了我们的模型、训练数据和训练过程。第2.4节讨论了我们如何做少样本,单样本和零样本评估的细节。

2.1 模型和体系结构

我们使用了与GPT-2 [RWC+19]相同的模型和架构,包括其中描述的修改后的初始化、预归一化和可逆的标记化,不同之处在于我们在变换器层的注意力模式中使用了交替的密集和局部带状稀疏模式,类似于Sparse Transformer [CGRS19]。为了研究机器学习性能对模型大小的依赖性,我们训练了8种不同大小的模型,参数数量跨越三个数量级,从1.25亿参数到1750亿参数,最后一个模型我们称之为GPT-3。先前的工作[KMH+20]表明,在有足够的训练数据的情况下,验证损失的缩放应该大约是模型大小的一个平滑的幂律函数;训练许多不同大小的模型允许我们验证这一假设对于验证损失和下游语言任务是否成立。

表2.1:我们训练的模型的大小、架构和学习超参数(token的批处理大小和学习率)。所有模型都接受了总共3000亿个token的训练。

表2.1展示了我们8个模型的大小和架构。在这里,nparams是可训练参数的总数,nlayers是总层数,dmodel是每个瓶颈层的单元数(我们的前馈层总是瓶颈层大小的四倍,dff = 4 * dmodel),dhead是每个注意力头的维度。所有模型都使用nctx = 2048个标记的上下文窗口。我们沿着深度和宽度维度在GPU之间分割模型,以最小化节点之间的数据传输。每个模型的精确架构参数是基于跨GPU布局模型时的计算效率和负载平衡来选择的。先前的工作[KMH+20]表明,验证损失对这些参数在合理宽泛的范围内的敏感性不强。

2.2 训练数据集

语言模型的数据集迅速扩大,以Common Crawl数据集2 [RSR+19]为顶峰,该数据集包含了近一万亿个单词。这样大小的数据集足以训练我们最大的模型,而无需在同一序列上更新两次。然而,我们发现未经过滤或轻微过滤的Common Crawl版本的质量通常低于更加精心策划的数据集。因此,我们采取了三个步骤来提高我们数据集的平均质量:(1) 我们下载并根据与一系列高质量参考语料库的相似性过滤了Common Crawl的一个版本,(2) 我们在文档级别进行了模糊去重,包括在数据集内部和数据集之间,以防止重复并保持我们预留的验证集的完整性,作为过度拟合的准确衡量,(3) 我们还增加了已知的高质量参考语料库到训练混合中,以增强Common Crawl并增加其多样性。

前两点(处理Common Crawl)的详细信息在附录A中描述。对于第三点,我们增加了几个精心策划的高质量数据集,包括一个扩展版的WebText数据集 [RWC+19],该数据集是通过在更长的时间内抓取链接收集的,首次在[KMH+20]中描述,两个基于互联网的书籍语料库(Books1和Books2)以及英文维基百科。

表2.2:用于训练GPT-3的数据集。"训练混合权重"指的是训练过程中从给定数据集中提取的样本的比例,我们故意不使其与数据集的大小成比例。因此,当我们训练3000亿个token时,一些数据集在训练期间被看到多达3.4次,而其他数据集被看到不到一次。

表2.2展示了我们训练中使用的最终数据集混合情况。CommonCrawl数据是从2016年至2019年的41个每月CommonCrawl碎片中下载的,过滤前压缩的纯文本文件为45TB,过滤后为570GB,大约相当于4000亿个字节对编码的令牌。请注意,在训练过程中,数据集并不是按照它们的大小进行抽样,而是我们认为质量较高的数据集会被更频繁地抽样,因此CommonCrawl和Books2数据集在训练过程中抽样不到一次,但其他数据集会被抽样2-3次。这实际上是为了获得更高质量的训练数据而接受了一定程度的过度拟合。

对于在广泛的互联网数据上预训练的语言模型,特别是具有记忆大量内容能力的大型模型,一个主要的方法论问题是下游任务可能因其在预训练期间无意中看到了测试或开发集而受到污染。为了减少这种污染,我们搜索并尝试删除与本文研究的所有基准的开发和测试集的任何重叠。不幸的是,过滤中的一个错误导致我们忽略了一些重叠,由于训练的成本,重新训练模型是不可行的。在第4节中,我们描述了剩余重叠的影响,在未来的工作中,我们将更积极地去除数据污染。

2.3 训练过程

如[KMH+20, MKAT18]所述,较大的模型通常可以使用更大的批量大小,但需要较小的学习率。我们在训练过程中测量梯度噪声尺度,并使用它来指导我们选择批量大小[ MKAT18 ]。表2.1显示了我们所使用的参数设置。为了在不过度消耗内存的情况下训练大型模型,我们在每个矩阵乘法内和网络层之间使用了模型并行性。所有模型都是在微软提供的高带宽集群的一部分上的V100 GPU上训练的。训练过程和超参数设置的详细信息在附录B中描述。

2.4 评估

对于少量样本学习,我们通过从该任务的训练集中随机抽取K个示例作为条件来评估评估集中的每个示例,根据任务的不同,条件之间用1个或2个新行分隔。对于LAMBADA和Storycloze,没有可用的监督训练集,因此我们从开发集中抽取条件示例,并在测试集上进行评估。对于Winograd(原始版本,非SuperGLUE版本),只有一个数据集,所以我们直接从中抽取条件示例。

K可以是0到模型上下文窗口允许的最大数量之间的任何值,对于所有模型来说,这个值是nctx = 2048,通常可以容纳10到100个示例。较大的K值通常但并非总是更好,因此当有单独的开发集和测试集时,我们在开发集上尝试几个K值,然后在测试集上运行最佳值。对于一些任务(见附录G),我们还额外使用了自然语言提示,除了(或对于K = 0,代替)演示。

在涉及从几个选项(多项选择)中选择一个正确完成的任务中,我们提供了K个上下文加正确完成的示例,然后是一个只有上下文的示例,并比较每个完成的LM可能性。对于大多数任务,我们比较每个标记的可能性(以标准化长度),然而在少数数据集(ARC, OpenBookQA, 和 RACE)上,我们在开发集上通过计算每个完成的无条件概率来进行标准化,从而获得了额外的收益,计算公式为 P(completion|context) / P(completion|answer context),其中answer context是字符串"Answer: "或"A: ",用于提示完成应该是答案,但除此之外是通用的。

在涉及二元分类的任务中,我们给选项赋予了更有语义意义的名称(例如"True"或"False"而不是0或1),然后像多项选择任务一样处理;我们有时也会根据[RSR+19]的做法来设定任务(详见附录G)。

在自由形式的完成任务中,我们使用了与[RSR+19]相同的参数进行束搜索:束宽为4,长度惩罚为α = 0.6。我们根据手头数据集的标准使用F1相似度分数、BLEU或精确匹配来评分模型。

最终结果在测试集公开可用时报告,针对每个模型大小和学习设置(零样本、单样本和少量样本)。当测试集是私有的时候,我们的模型通常太大而无法适应测试服务器,所以我们报告开发集上的结果。我们在少数数据集(SuperGLUE, TriviaQA, PiQa)上提交到测试服务器,我们只提交200B少量样本的结果,并报告其他所有内容的开发集结果。

相关推荐
唐 城40 分钟前
毕业设计——物联网设备管理系统后台原型设计
人工智能·深度学习·yolo·数据挖掘·imagen
会飞的Anthony1 小时前
基于Python的人工智能应用案例系列(14):Fashion MNIST图像分类CNN
人工智能
工业机器视觉设计和实现1 小时前
cnn突破六(四层bpnet网络公式)
人工智能·神经网络·cnn
985小水博一枚呀1 小时前
【深度学习基础模型】稀疏自编码器 (Sparse Autoencoders, SAE)详细理解并附实现代码。
人工智能·python·深度学习·学习·sae·autoencoder
好看资源平台1 小时前
深度学习在计算机视觉中的应用
人工智能·深度学习·计算机视觉
啥都生2 小时前
AI大模型,但是在卫星
人工智能
最近好楠啊2 小时前
使用bert模型进行命名实体识别任务
人工智能·深度学习·bert
璞华Purvar2 小时前
服贸会上的科技闪耀之星:璞华易研PLM系统引领产品研发潮流
大数据·人工智能·科技
凡人的AI工具箱2 小时前
15分钟学 Python 第38天 :Python 爬虫入门(四)
开发语言·人工智能·后端·爬虫·python
爱笑的源码基地2 小时前
C#医学影像分析源码,医院影像中心PACS系统源码
图像处理·人工智能·源码·pacs·医学影像系统·影像诊断