(GPT3)Language Models are Few-Shot Learners论文阅读

论文地址:https://arxiv.org/pdf/2005.14165v4.pdf

摘要


        最近的工作表明,通过对大量文本语料库进行预训练,然后对特定任务进行微调,许多 NLP 任务和基准测试取得了实质性进展。 虽然在体系结构中通常与任务无关,但此方法仍然需要特定于任务的微调数据集,其中包含数千或数万个示例。 相比之下,人类通常只能通过几个例子或简单的指令来执行一项新的语言任务——这是当前的 NLP 系统在很大程度上仍然难以做到的。 在这里,我们展示了扩大语言模型极大地提高了与任务无关的、多样本(few-shot)的性能,有时甚至可以与先前最先进的微调方法竞争。 具体来说,我们训练了 GPT-3,这是一种具有 1750 亿个参数的自回归语言模型(autoregressive language model),比之前的任何非稀疏语言模型多 10 倍,并在多样本(few-shot setting)设置中测试其性能。 对于所有任务,GPT-3 都在没有任何梯度更新或微调的情况下应用,任务和小样本示例(few-shot demonstrations)完全通过与模型的文本交互来指定GPT-3 在许多 NLP 数据集上实现了强大的性能,包括翻译、问答和完形填空任务,以及一些需要即时推理或领域适应的任务,例如解读单词,在 句子,或执行 3 位数算术。 同时,我们还确定了一些 GPT-3 的多样本学习仍然困难的数据集,以及一些 GPT-3 面临与大型网络语料库训练相关的方法论问题的数据集。 最后,我们发现 GPT-3 可以生成人类评估者难以区分与人类撰写的文章的新闻文章样本。 我们总体上讨论了这一发现和 GPT-3 的更广泛的社会影响。

1 简介

        近年来,在 NLP 系统中出现了一种趋势,即在 NLP 系统中预训练语言表征,以越来越灵活和与任务无关的方式应用于下游传输。 首先,使用词向量 学习单层表示并将其馈送到特定于任务的架构,然后使用具有多层表示和上下文状态的 RNN 来形成更强的表示(尽管仍然 适用于特定任务的架构),最近预训练的循环或转换器语言模型已经直接微调,完全消除了对特定任务架构的需要 。
        最后一个范式已经在许多具有挑战性的 NLP 任务上取得了实质性进展,例如阅读理解、问答、文本蕴含等等,并且在新的架构和算法的基础上继续取得进展。 然而,这种方法的一个主要限制是虽然架构与任务无关,但仍然需要特定于任务的数据集和特定于任务的微调:要在所需任务上实现强大的性能通常需要微调 特定于该任务的数千到数十万个示例的数据集。 出于几个原因,删除此限制是可取的
        首先,从实践的角度来看,每项新任务都需要大量标记示例数据集,这限制了语言模型的适用性。 存在非常广泛的可能有用的语言任务,包括从纠正语法到生成抽象概念的示例,再到评论短篇小说。 对于其中许多任务,很难收集大型监督训练数据集,尤其是当必须为每个新任务重复该过程时。
        其次,随着模型的表现力和训练分布的缩小,利用训练数据中的虚假相关性的潜力从根本上增加。 这可能会给预训练加微调范式带来问题,其中模型设计得很大以在预训练期间吸收信息,但随后会在非常窄的任务分布上进行微调。 例如 观察到更大的模型不一定能泛化出更好的分布外。 有证据表明,在这种范式下实现的泛化可能很差,因为该模型过于特定于训练分布,并且在它之外不能很好地泛化。 因此,经过微调的模型在特定基准上的性能,即使名义上处于人类水平,也可能会夸大底层任务的实际性能。

        第三,人类不需要大型监督数据集来学习大多数语言任务——自然语言的简短指令(例如“请告诉我这句话描述的是快乐还是悲伤”)或最多少量的示例(demonstrations(例如“这里 是表现勇敢的人的两个例子;请举出第三个勇敢的例子”)通常足以使一个人至少以合理的能力来执行一项新任务。 除了指出我们当前 NLP 技术的概念限制外,这种适应性还具有实际优势——它允许人类无缝地混合在一起或在许多任务和技能之间切换,例如在冗长的对话中执行加法。 为了广泛使用,我们希望有一天我们的 NLP 系统具有同样的流动性(fluidity)和通用性(generality)。

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


        解决这些问题的一个潜在途径是元学习(meta-learning)——在语言模型的背景下,这意味着模型在训练时发展出广泛的技能和模式识别能力,然后在推理时使用这些能力来快速适应或识别所需的任务(如图 1.1 所示)。 最近的工作试图通过我们所谓的“上下文学习”来做到这一点,使用预训练语言模型的文本输入作为任务规范的一种形式:该模型以自然语言指令和/或 一些任务的示例,然后只需预测接下来会发生什么,就可以完成任务的更多实例。
        虽然它已经显示出一些初步的希望,但这种方法仍然取得了远不如微调的结果——例如 在自然问题(Natural questions)上只取得了 4%,甚至它的 55 F1 CoQa 结果现在落后 35 分以上 最先进的。 元学习(Meta-learning)显然需要大量改进才能成为解决语言任务的实用方法。
        语言建模的另一个最新趋势可能会提供一条前进的道路。 近年来,Transformer 语言模型的容量大幅增加,从 1 亿个参数 [RNSS18]、3 亿个参数 [DCLT18]、15 亿个参数 [RWC+19]、80 亿个参数 [SPP+19]、11 十亿个参数 [RSR+19],最后是 170 亿个参数 [Tur20]。 每一次增加都带来了文本合成和/或下游 NLP 任务的改进,并且有证据表明,与许多下游任务密切相关的对数损失遵循随着规模 [KMH+20] 的平稳改进趋势。 由于上下文学习(in-context learning)涉及吸收模型参数内的许多技能和任务,因此上下文学习能力可能会随着规模的扩大而表现出类似的强劲增长。

        在本文中,我们通过训练一个 1750 亿参数的自回归语言模型(我们称之为 GPT-3)并测量其上下文学习能力来检验这一假设 具体来说,我们在超过20个 NLP 数据集以及旨在测试快速适应不太可能直接包含在训练集中的任务的几个新任务上评估 GPT-3。 对于每项任务,我们在 3 种条件下评估 GPT-3:(a) “few-shot learning”,或上下文学习,我们允许尽可能多的示例适合模型的上下文窗口(通常为 10 到 100),( b) “one-shot learning”,我们只允许一次示例,以及 (c) “zero-shot”学习,不允许示例,只给模型一个自然语言指令。 GPT-3 原则上也可以在传统的微调设置中进行评估,但我们将其留待未来的工作。

图 1.2: 模型越大,上下文信息的使用效率就越高。 我们展示了一项简单任务的上下文学习性能,该任务要求模型从单词中删除随机符号,无论是否使用自然语言任务描述(见第 3.9.2 节)。 大型模型的更陡峭的“上下文学习曲线”表明从上下文信息中学习任务的能力有所提高。 我们在广泛的任务中看到了性质相似的行为


        图 1.2 说明了我们研究的条件,并显示了一个简单任务的少样本学习,该任务要求模型从单词中删除无关的符号。 通过添加自然语言任务描述以及模型上下文中的示例数量 K,模型性能得到提高。小样本学习也随着模型大小的增加而显着提高。 尽管这种情况下的结果特别引人注目,但模型大小和上下文中示例数量的总体趋势适用于我们研究的大多数任务。 我们强调这些“学习”曲线不涉及梯度更新或微调,只是增加作为条件给出的演示数量。
        从广义上讲,在 NLP 任务上,GPT-3 在零样本和单样本设置中取得了令人鼓舞的结果,而在少样本设置中,有时甚至可以与最先进的技术相媲美,甚至偶尔会超过最先进的技术(尽管 state-of -最先进的是经过微调的模型)。 例如,GPT-3 在零样本设置中的 CoQA 上达到 81.5 F1,在单样本设置中的 CoQA 上达到 84.0 F1,在少样本设置中达到 85.0 F1。 类似地,GPT-3 在 TriviaQA 上的零样本设置准确率为 64.3%,单样本设置为 68.0%,少样本设置为 71.2%,最后一个是最先进的相对 微调在相同闭账设置下运行的模型。
        GPT-3 还在旨在测试快速适应或即时推理的任务中表现出one-shot和few-shot熟练度,其中包括解读单词、执行算术以及在看到新单词只定义一次后在句子中使用它们。 我们还表明,在少样本设置中,GPT-3 可以生成合成新闻文章,人类评估者很难将这些文章与人类生成的文章区分开来。
        同时,我们还发现了一些任务,即使在 GPT-3 的规模上,多示例的性能也很挣扎。 这包括自然语言推理任务,如 ANLI 数据集,以及一些阅读理解数据集,如 RACE 或 QuAC。 通过对 GPT-3 的优势和劣势(包括这些局限性)进行广泛描述,我们希望能够激发对语言模型中(多示例)few-shot学习的研究,并提请人们注意最需要取得进展的地方。

图 1.3:所有 42 个以准确度为基准的基准的综合性能虽然零示例性能随着模型大小的增加而稳步提高,但多示例性能增加得更快,这表明更大的模型更擅长上下文学习。 有关标准 NLP 基准套件 SuperGLUE 的更详细分析,请参见图 3.8。


        从图 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 的说明):

图 2.1:零示例、单示例和少示例,与传统的微调对比。 上面的面板显示了使用语言模型执行任务的四种方法——微调是传统方法,而我们在这项工作中研究的零、一次和少镜头需要模型执行任务 仅在测试时向前传球。 我们通常在少数镜头设置中向模型展示几十个示例。 所有任务描述、示例和提示的准确措辞可在附录 G 中找到。

  • 微调(FT) 是近年来最常用的方法,涉及通过在特定于所需任务的监督数据集上进行训练来更新预训练模型的权重。 通常使用数千到数十万个标记示例。 微调的主要优势是在许多基准测试中表现出色。 主要缺点是每个任务都需要一个新的大型数据集,泛化分布不佳的可能性[MPL19],以及利用训练数据[GSL+18,NK19]的虚假特征的可能性,可能导致 与人类表现进行不公平的比较。 在这项工作中,我们没有对 GPT-3 进行微调,因为我们的重点是与任务无关的性能,但原则上可以对 GPT-3 进行微调,这是未来工作的一个有前途的方向。
  • Few-Shot (FS) 是我们将在这项工作中使用的术语,指的是在推理时为模型提供一些任务演示作为条件 [RWC+19],但不允许更新权重的设置。 如图 2.1 所示,对于一个典型的数据集,一个示例具有上下文和所需的完成(例如英语句子和法语翻译),并且通过给出上下文和完成的 K 个示例,然后是一个最终示例 上下文,模型有望提供完成。 我们通常将 K 设置在 10 到 100 的范围内,因为这是模型的上下文窗口中可以容纳多少示例 (nctx = 2048)。 few-shot 的主要优点是大大减少了对特定任务数据的需求,并降低了从大型但狭窄的微调数据集中学习过于狭窄的分布的可能性。 主要缺点是,到目前为止,这种方法的结果比最先进的微调模型差得多。 此外,仍然需要少量特定于任务的数据。 顾名思义,此处针对语言模型描述的少样本学习与 ML [HYC01,VBL+16] 中其他上下文中使用的少样本学习相关——两者都涉及基于广泛任务分布的学习(在 这种情况隐含在预训练数据中)然后快速适应新任务。
  • One-Shot (1S) 与few-shot 相同,除了只允许一次演示,此外还有对任务的自然语言描述,如图1 所示。区分one-shot 和few-shot 的原因 零镜头(下图)是它最接近与人类交流某些任务的方式。 例如,当要求人类在人工服务(例如 Mechanical Turk)上生成数据集时,通常会演示该任务。 相比之下,如果没有给出示例,有时很难传达任务的内容或格式。
  • Zero-Shot (0S) 与one-shot 相同,只是不允许演示,并且只给模型一个描述任务的自然语言指令。 这种方法提供了最大的便利性、鲁棒性的潜力和避免虚假相关性(除非它们在预训练数据的大型语料库中非常广泛地出现),但也是最具挑战性的设置。 在某些情况下,人类甚至可能在没有先例的情况下难以理解任务的格式,因此这种设置在某些情况下是“不公平的”。 例如,如果有人被要求“为 200 米短跑制作一个世界纪录表”,这个请求可能是模棱两可的,因为可能不清楚该表应该有什么格式或应该包括什么(即使仔细 澄清,准确理解所需要的东西可能很困难)。 尽管如此,至少对于某些设置,零样本最接近人类执行任务的方式——例如,在图 2.1 中的翻译示例中,人类可能仅根据文本指令就知道该做什么。

        图 2.1 显示了四种方法,以将英语翻译成法语为例。 在本文中,我们关注零样本、单样本和少样本,目的不是将它们作为竞争选择进行比较,而是作为不同的问题设置进行比较,这些问题设置在特定基准的性能和样本效率之间提供不同的权衡。 我们特别强调 few-shot 的结果,因为其中许多仅略微落后于最先进的微调模型。 然而,最终,一次,甚至有时零次,似乎是与人类表现最公平的比较,并且是未来工作的重要目标。
        下面的 2.1-2.3 节分别详细介绍了我们的模型、训练数据和训练过程。 2.4 节讨论了我们如何进行少样本、单样本和零样本评估的细节。

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

 2.1 模型和架构

猜你喜欢

转载自blog.csdn.net/keeppractice/article/details/130656775