返回介绍

数学基础

统计学习

深度学习

工具

Scala

六、GPT3 [2020]

发布于 2023-07-17 23:38:25 字数 106486 浏览 0 评论 0 收藏 0

  1. 近年来,在 NLP 系统中出现了预训练语言 representation 的趋势,并以越来越灵活的、与任务无关task-agnostic 的方式应用于下游任务。

    • 首先出现的是通过词向量学到的 single-layer representation,然后馈入到特定的任务架构。
    • 然后出现的是具有多层 representation 和上下文状态的 RNN,从而形成更强大的 representation
    • 最近出现的是预训练的 RNNtransformer 语言模型,它们被直接微调从而消除了对特定任务task-specific 架构的需求。

    最后一种范式在许多具有挑战性的 NLP 任务上取得了实质性的进展,并在新的架构和算法的基础上继续推进。然而,这种方法的一个主要局限性是,虽然它的架构是任务无关的,但是仍然需要特定任务的微调 fine-tunning:要在目标任务上获得强大的性能,通常需要在特定于该任务的、具有数千到数十万个样本的数据集上进行微调。人们希望消除这个局限性,原因如下:

    • 首先,从实用性角度来看,每一项新任务都需要一个大型的标记数据集,这限制了语言模型的适用性。对很多任务而言,收集一个大型的监督训练数据集就很困难,特别是需要为每个新的任务重复这个收集过程。
    • 其次,过拟合从根本上说是随着模型的表达能力以及训练分布的窄化narrowness 的增加而增加。这可能会给预训练加微调的模式带来问题,在这种模式下,模型被设计得很大以便在预训练期间吸取信息,但是随后在很窄的任务分布中进行微调。有证据表明,这种范式下实现的泛化能力可能很差,因为模型过度具体于specific to 训练分布,没有很好地泛化到训练分布之外(这里的训练分布指的是微调数据集)。因此,微调模型在特定 benchmark 上的性能,即使名义上是人类水平,也可能夸大了微调任务上的实际性能。
    • 第三,人类不需要大量的监督数据集来学习大多数语言任务,简短的语言指令、或极少的示范demonstration 就足以使人类执行一项新任务。这种适应性除了解决上述 NLP 技术的局限性之外,还允许人类在许多任务和技能之间无缝切换,如在冗长的对话任务中进行加法任务。为了发挥更广泛的作用,我们希望有一天我们的 NLP 系统也能有这样的流畅性和通用性。

    解决这些问题的一个潜在途径是 meta-learning:在语言模型的背景下,这意味着模型在训练时发展出一组广泛的技能以及模式识别能力,然后在推理时使用这些能力来快速适应或识别目标任务(如下图所示)。最近的工作 GPT-2 试图通过我们所说的 in-context learning 来做到这一点,它使用预训练的语言模型的文本输入作为一种任务规范 task specification 形式:GPT-2 以自然语言指令和/或任务的几个示范demonstration 为条件,然后预期模型通过预测接下来的内容来完成任务。虽然GPT-2 已经显示出一些初步的希望,但是它所取得的结果仍然远远不如微调。meta-learning 显然需要大量的改进,以便作为解决语言任务的实用方法。

    【作者注:在下图中,我们使用术语 in-context learning 来描述这个过程的内循环,其中内循环发生在每个序列的前向传播中,下面每个子图代表一个序列(注意,并不是一行一个序列,而是多行代表一个序列)。该图中的序列并不是代表模型在预训练期间所看到的数据,只是表明有时在一个序列中会有重复的子任务。】

    语言建模的另一个最新趋势可能提供了一条前进的道路。近年来,transformer 语言模型的容量大幅增加,从 1 亿个参数的 GPT-1 ,到 3 亿个参数的 BERT,到 15 亿个参数的 GPT-2 ,到80 亿个参数的 Megatron,到 110 亿个参数的 T5,最后到 170 亿个参数的 Turing 。每一次规模增加都带来了文本合成text synthesis 和/或下游 NLP 任务的改进。而且有证据表明, log loss (它与许多下游任务关联性较好) 随着模型规模的增加而有平滑的改进趋势(《Scaling laws for neural language models》)。由于 in-context learning 涉及到在模型的参数中吸取许多技能和任务,因此,in-context learning 能力可能会随着模型规模的扩大而表现出相似的强大收益,这是合理的。

    一言以蔽之,这个方向就是:模型规模要超级大。

    在论文 《Language Models are Few-Shot Learners》,我们通过训练一个 1750 亿参数的自回归语言模型 autoregressive language model(我们称之为 GPT-3 ),并测量其 in-context learning 能力来测试这个假设。具体而言,我们在二十多个 NLP 数据集以及几个新颖的任务上评估 GPT-3 。对于每个任务,我们三种setting 下评估 GPT-3

    • few-shot learning(或 in-context learning):我们允许尽可能多的示范,从而适应模型的上下文窗口 context window (通常是 10100 )。
    • one-shot learning:我们只允许一个示范。
    • zero-shot learning:没有任何示范,只给模型提供一条自然语言的指令。

    理论上讲,GPT-3 也可以在传统的微调 setting 中进行评估,但是我们将此留给未来的工作。

    下图说明了我们的研究条件,并展示了对一个简单任务的 few-shot learning ,该任务要求模型从一个单词中移除不相干的 symbol

    • 模型的性能随着自然语言任务的 description 的增加而增加(即有 prompt 的效果优于没有 prompt)。下图实线表示有 prompt,虚线表示没有 prompt
    • 模型的性能也随着模型上下文中的样本数量(即K$ K $ )的增加而增加。K=0$ K=0 $ 表示 zero-shotK=1$ K=1 $ 表示 one-shotK>1$ K\gt 1 $ 表示 few-shot
    • few-shot learning 性能也随着模型规模的增加而显著提高。

    虽然这种情况下的结果特别引人注目,但是模型规模和上下文中的样本数量的一般趋势在我们研究的大多数任务中都适用。我们强调,这些 learning curve 不涉及梯度更新或微调,只是增加了作为条件的示范的数量。

    【作者注:较大的模型对上下文信息的利用越来越有效。大型模型的 in-context learning curves 越陡峭,则表明从 contextual information 中学习一个任务的能力越好。】

    大体上,在 NLP 任务中,GPT-3zero-shot/one-shot setting 中取得了有希望的结果;而在 few-shotsetting 中有时具有与 SOTA 相同的竞争力,甚至偶尔超越了 SOTASOTA 是由微调模型获得的)。例如:

    • CoQA 数据集上,GPT-3zero-shot/one-shot/few-shot setting 中实现了 81.5/84.0/85.0 F1
    • 类似地,在 TriviaQA 数据集上,GPT-3zero-shot/one-shot/fiew-shot setting 中实现了 64.3%/68.0%/71.2% 的准确率。其中 few-shot 的结果超越了在相同的 closed-book setting 下的微调模型,达到了 SOTA

    GPT-3 在测试快速适应rapid adaption 或即时推断 on-the-fly reasoning 的任务中也展示出 one-shot/few-shot 的熟练性 proficiency ,这些任务包括解扰单词 unscrambling word (即恢复被扰动的单词)、进行数学运算、以及看到新词novel word 的一次定义之后在后面的句子中使用这些词。我们还表明:在 few-shot setting 中,GPT-3 可以生成合成的新闻文章,而人类评估员很难将合成的文章与人类产生的文章区分开。

    同时,我们也发现了一些任务,即使在 GPT-3 的规模下,few-shot 的性能也很差。这包括自然语言推理任务natural language inference task,如 ANLI 数据集,以及一些阅读理解数据集(如 RACEQuAC)。通过对 GPT-3 的优点和缺点的广泛描述,包括这些局限性,我们希望能够激励对语言模型中的 few-shot learning 的研究,并引起对需求最迫切的进展的关注。

    下图汇总了各种任务的结果,尽管它本身不应该被看做是一个严格的或有意义的 benchmark

    【作者注:虽然 zero-shot 性能随着模型规模的扩大而稳步提高,但是 few-shot 性能提高得更快,这表明较大的模型在in-context learning 方面更为熟练。】

    我们还对“数据污染” data contamination 进行了系统性的研究。当在诸如 Common Crawl 这样的数据集上训练大容量模型时,这是一个日益严重的问题,该数据集可能包含了来自测试数据集的内容,仅仅是因为测试数据集的内容经常来自于网络。在本文中,我们开发了系统性的工具来测量数据污染,并量化数据污染的扭曲效应 distorting effect 。尽管我们发现数据污染对 GPT-3 在大多数数据集上的性能影响很小,但是我们确实发现了一些数据集,在该数据集上评估会夸大 GPT-3 的结果。对于这些会夸大 GPT-3 结果的数据集,我们要么不报告这些数据集的结果,要么根据污染严重程度用星号加以说明。

    除了上述所有情况外,我们还训练了一系列较小的模型(从 1.25 亿个参数到 130 亿个参数不等),以便在 zero-shot/one-shot/few-shot setting 中和 GPT-3 比较性能。总体而言,对于大多数任务,我们发现在所有三种 setting 下,效果随着模型容量的 scale 是相对平滑的。一个值得注意的模式是:zero-shot/one-shot/few-shot 的性能之间的 gap 往往随着模型容量的增加而增加,这也许表明更大的模型是更熟练的 meta-learner

    最后,鉴于 GPT-3 所展示的广泛能力,我们讨论了 bias、公平、以及更广泛的社会影响,并尝试对 GPT-3 在这方面的特性进行初步分析。

  2. 相关工作:

    • 有一些工作聚焦于增加语言模型的参数量或/和计算量,从而提高任务性能。早期的工作是将基于 LSTM 的语言模型扩展到超过 10 亿个参数的 《Exploring the limits of language modeling》

      • 有一个工作方向直接增加了 transformer 模型的大小,将参数数量和 FLOPS-per-token 大致按比例增加。这方面的工作已经连续增加了模型的大小: 2.13 亿个参数的 Transformer3 亿个参数的 BERT15 亿个参数的 GPT-280 亿个参数的 Megatron110 亿个参数的 T5170 亿个参数的 Turing
      • 另一个工作方向的重点是增加参数量但是不增加计算量,它增加模型存储信息的容量而不增加计算成本。这些方法依赖于条件计算框架 《Estimating or propagating gradients through stochastic neurons for conditional computation》。具体而言,混合专家方法(《The sparsely-gated mixture-of-experts layer》)已被用于产生 1000 亿个参数的模型,最近又产生了 500 亿个参数的翻译模型(《Massively multilingual neural machine translation》),尽管每次前向传播时实际上仅使用了一小部分的参数。
      • 第三个工作方向是在不增加参数的情况下增加计算量。这种方法的例子包括自适应计算时间 adaptive computation time《Adaptive computation time for recurrent neural networks》)和universal transformer《Universal transformers》)。

      我们的工作聚焦于第一个方向(将计算和参数一起扩大,直接使神经网络变大),并将模型大小增加到 10x (即,十倍)。

    • 一些工作也系统性地研究了规模对于语言模型性能的影响。《Scaling laws for neural language models》《A constructive prediction of the generalization error across scales》《Train large, then compress: Rethinking model size for efficient training and inference of transformers》《Deep learning scaling is predictable, empirically》 发现,随着自回归语言模型规模的扩大, loss 有一个平滑的 power-law 的趋势。这些工作表明,随着模型规模的不断扩大,这个趋势在很大程度上仍在继续。而且我们还发现在许多(尽管不是全部)下游任务中,在横跨 3 个量级的scaling中都有相对平滑的增长。

    • 另一个工作方向与scaling的方向相反,试图在尽可能小的语言模型中保留强大的性能。这些方法包括 ALBERT 、通用模型蒸馏方法 (《Distilling the knowledge in a neural network》 )、以及特定任务的模型蒸馏方法(DistilBERTTinyBERT《Sequence-level knowledge distillation》)。这些架构和技术有可能是对我们工作的补充,并可以用于减少巨型模型 giant model 的延迟和内存占用。

    • 随着微调的语言模型在许多标准 benchmark 任务上接近人类的表现,人们已经付出了相当大的努力来构建更困难或更开放的任务,包括问答question answering、阅读理解reading comprehension、以及旨在对现有语言模型造成困难的对抗性构建的数据集。在这项工作中,我们在许多这些数据集上测试我们的模型。

    • 之前的许多工作都特别关注问答 question-answering,这在我们测试的任务中占了很大一部分。最近的许多工作包括 《Exploring the limits of transfer learning with a unified text-to-text transformer》《How much knowledge can you pack into the parametersof a language model?》(它们对 110 亿个参数的语言模型进行了微调),以及《Realm: Retrieval-augmented language model pre-training》 (它侧重于在测试时关注大型数据集)。我们的工作不同之处在于聚焦 in-context learning ,但是未来可以与 Realm《Retrieval-augmented generation for knowledge-intensive nlp tasks》 的工作相结合。

    • 语言模型中的 meta-learning 已经在 GPT-2 中得到了应用,尽管结果比较有限,也没有系统性的研究。更广泛地说,语言模型的 meta-learning 有一个 inner-loop-outer-loop 的结构,使得它在结构上与应用到通用机器学习的 meta-learning 相似。这里有大量的文献,包括 matching network《Matching Networks for OneShot Learning》)、RL2《Rl2: Fastreinforcement learning via slow reinforcement learning》)、 learning to optimize、以及 MAML《Model-agnostic meta-learning for fast adaptation of deep networks》)。我们的方法用previous样本来填充模型的上下文,这种方法在结构上与 RL2 最为相似,也与 《Learning to Learn Using Gradient Descent》 相似,即:

      • 内循环的适应adaptation 是通过对模型 activateion 的跨 time step 的计算而进行的,而不更新权重。
      • 外循环更新权重,并隐式地学习适应能力或至少识别推理时所定义的任务的能力。

      《Few-shot auto regressive density estimation: Towards learning to learn distributions》 中探讨了 few-shot 自回归密度估计,并且 《Meta-learning for low-resource neural machine translation》 将低资源神经机器翻译作为 few-shot learning 问题来研究。

    • 虽然我们的 few-shot 方法的机制不同,但是之前的工作也探索了使用预训练的语言模型与梯度下降相结合来进行 few-shot learning 的方法(《Exploiting cloze questions for few-shot text classification and natural language inference》)。另一个具有类似目标的子领域是半监督学习,其中 UDA《Unsupervised data augmentation for consistency training 》)等方法也探索了在可用的标记数据非常少时进行微调的方法。

    • 在自然语言中给多任务模型下达指令,这在有监督环境中首次被正式化(《The natural language decathlon: Multitask learning as question answering》),并在语言模型 GPT-2 中被用于一些任务(如摘要)。在 T5 中也探索了用自然语言提出任务的概念,尽管它被用于多任务微调,而不是用于没有权重更新的in-context learning

    • 另一种提高语言模型通用性和迁移学习能力的方法是多任务学习,它将多个下游任务混合在一起进行微调,而不是单独更新每个任务的权重。如果成功的话,多任务学习可以允许单个模型用于许多任务而不需要更新权重(类似于我们的 in-context learning 方法),或者在更新一个新任务的权重时可以提高样本效率sample efficiency (即,更少的样本)。多任务学习已经展示出一些有希望的初步结果,多阶段微调最近已经成为一些数据集上 SOTA 结果的标准化部分(《Sentence encoders on STILTs: Supplementary training on intermediate labeled-data tasks》),但是仍然受到需要手动整理数据集以及设置训练课程training curricula 的限制。相比之下,足够大规模的预训练似乎提供了一个 “自然” 的广泛的任务分布,这个任务分布隐含在预测文本这个任务本身。未来工作的一个方向可能是尝试为多任务学习产生更广泛的、显式的任务集合,例如通过程序化生成procedural generation、人类互动human interaction、或主动学习active learning

    • 在过去两年中,语言模型的算法创新是巨大的,包括基于降噪的双向性(BERT)、prefixLM《Semi-supervised sequence learning》)、encoder-decoder 架构(BartT5)、训练期间的随机排列 (XLNet)、提高采样概率的架构(Transformer-xl)、数据和训练程序的改进(RoBERTa)、以及 embedding 参数的效率提高(RoBERTa)。这些技术中的许多在下游任务上提供了显著的收益。在这项工作中,我们继续聚焦于纯自回归语言模型,这既是为了聚焦 in-context learning 性能,也是为了降低我们大模型实现的复杂性。然而,纳入这些算法很可能会提高 GPT-3 在下游任务上的性能,特别是在微调的 setting 中,将 GPT-3 与这些算法技术相结合是未来的一个有希望的方向。

6.1 方法

  1. 我们 basic 的预训练方法,包括模型、数据、以及训练,与 GPT-2 相似,模型大小、数据集大小和多样性、训练 epoch 都直接 scaling up 。我们对 in-context learning 的使用也类似于 GPT-2 ,但是在这项工作中,我们系统地探索了 in-context learning 的不同 setting 。因此,我们在本节开始时明确地定义和对比了我们将要评估 GPT-3 的不同setting

    • 微调 Fine-Tuning: FT:微调是近年来最常用的方法,它包括通过对所需任务的特定监督数据集进行训练来更新预训练模型的权重。通常情况下,会使用几千到几十万个标记样本。

      • 微调的主要优点是:在许多 benchmark 上有强大的性能。
      • 微调的主要缺点是:每项任务都需要一个新的大型数据集(作为微调数据集),有可能出现 out-of-distribution 的不良泛化(《Right for the wrong reasons: Diagnosing syntactic heuristics in natural language inference》),以及有可能利用训练数据集的虚假特征从而导致与人类表现的不公平比较(《Annotation artifacts in natural language inference data》《Probing neural network comprehension of natural language arguments》)。

      在这项工作中,我们没有对 GPT-3 进行微调,因为我们的重点是任务无关task-agnostic的性能。但是 GPT-3 原则上是可以微调的,这是未来工作的一个有希望的方向。

    • Few-Shot: FSFew-Shot 是我们在这项工作中使用的术语,指的是在推断时给模型一些任务的演示 demonstration 作为条件,但不允许权重更新。

      如下图所示,对于一个典型的数据集,一个样本有一个 context 和一个预期的补全 completion (例如,一个英语句子作为上下文,和对应的法语翻译作为补全)。few-shot 通过给出K$ K $ 个包含 contextcompletion 的样本,然后再给出最后一个样本的 context,并预期模型能够提供最后一个样本的 completion 。我们通常将K$ K $ 设置在 10100 的范围,因为这是模型的上下文窗口(nctx=2048$ n_\text{ctx}=2048 $ ) 可以容纳的样本数量。

      • few-shot 的主要优点是:大大减少了对特定任务数据的需求,并减少了从大而窄的微调数据集中学习过度狭窄分布的可能性。
      • few-shot 的主要缺点是:到目前为止,这种方法的结果比 SOTA 的微调模型差很多。另外,仍然需要少量的特定任务的数据。

      如名称所示,这里描述的用于语言模型的 few-shot learning 与机器学习中其它情况下使用的 few-shot learning 有关(《Learning to Learn Using Gradient Descent》《Matching Networks for One Shot Learning 》):二者都涉及基于广泛的任务分布的学习(在我们的 case 中是隐含在预训练数据中),然后快速适应新的任务。

    • One-Shot: 1SOne-Shotfew-shot 相同,只是除了任务的自然语言描述之外,只允许一个示范,如下图所示。将 one-shotfew-shotzero-shot 区分开的原因是,它与一些人类交流的任务的方式最接近。例如,当要求人来生成一个 human worker service (如Mechanical Turk)的数据集时,通常会给出任务的一个示范。相比之下,如果没有给出任何示范,有时就很难沟通任务的内容或格式。

    • Zero-Shot: 0SZero-Shotone-shot 相同,只是没有任何示范,只给模型一个描述任务的自然语言指令。这种方法提供了最大的便利性和潜在的鲁棒性,并避免了虚假的相关性(除非它们在预训练数据的大型语料库中非常广泛地出现),但是也是最具挑战性的 setting

      在某些情况下,如果没有事先的例子,人类甚至很难理解任务的形式,所以这种设置在某些情况下是 “不公平的困难”。例如,如果有人被要求 “制作一个 200 米短跑的世界纪录表格”,这个要求可能是模棱两可的,因为可能不清楚这个表格到底应该是什么格式,或者应该包含什么内容(即使仔细澄清,也很难准确地理解想要什么)。尽管如此,至少在某些情况下,zero-shot 最接近人类执行任务的方式:如下图的翻译例子中,人类很可能仅从文本指令text instruction 中就知道该怎么做。

    下图展示了使用英语翻译成法语的例子的四种方法。在本文中,我们重点讨论了 zero-shot/one-shot/few-shot,目的不是将它们作为竞争性的替代方案进行比较,而是作为不同的问题设置,在特定 benchmark 和样本效率之间提供不同的 tradeoff 。我们特别强调了 few-shot 的结果,因为它们中的许多仅仅是稍微落后于 SOTA 的微调模型。然后,one-shot ,有时甚至是 zero-shot,似乎是对人类性能最公平的比较,也是未来工作的重点目标。

    作者注:zero-shot/one-shot/few-shot 仅要求模型在测试期间前向传播就能完成任务(而无需反向梯度更新)。

6.1.1 模型和架构

  1. 我们使用与 GPT-2 相同的模型和架构,包括其中描述的modified initializationpre-normalizationreversible tokenization ,不同的是我们在 transformer 的层中使用交替的 denselocally banded sparse 的注意力模式,类似于 Sparse Transformer《Generating long sequences with sparse transformers》) 。

    locally banded sparse 注意力:每个位置的注意力仅依赖于附近的k$ k $ 个位置。

    为了研究机器学习性能对模型大小的依赖性,我们训练了 8 种不同大小的模型,规模从 1.25 亿个参数到 1759 亿个参数(横跨 3 个量级),其中规模最大的那个模型我们称之为 GPT-3 。以前的工作《Scaling laws for neural language models》表明:在有足够训练数据的情况下,验证损失的 scaling 应该是一个平滑的 power law 并且作为数据规模的函数。训练许多不同规模的模型使我们能够测试这个假设,无论是在验证损失上测试还是在下游的语言任务上测试。

    下表展示了我们 8 个模型的大小和结构。其中:

    • nparams$ n_\text{params} $ 是可训练参数的总数,nlayers$ n_\text{layers} $ 是层的总数。

    • dmodel$ d_\text{model} $ 是每个 bottleneck layer 的单元数,我们总是让前馈层的大小是 bottleneck layer 的四倍,即dff=4×dmodel$ d_\text{ff} = 4\times d_\text{model} $ 。

    • dhead$ d_\text{head} $ 是每个注意力头的维度。

      根据公式有:dmodel=dhead×nheads$ d_\text{model} = d_\text{head}\times n_{heads} $ 。

    • 所有模型都使用nctx=2048$ n_\text{ctx}=2048 $ 个 tokencontext window

  2. 我们同时沿着深度和宽度维度将模型在 GPU 之间进行 partition ,从而尽量减少节点之间的数据传输。每个模型的 precise architectural parameter 是根据计算效率和跨 GPU 的模型布局的负载平衡来选择的。以前的工作《Scaling laws for neural language models》表明:在一个合理的大的区间范围内,验证损失对这些超参数并不非常敏感。

6.1.2 训练数据集

  1. 我们使用 Common Crawl 数据集。然而我们发现:未经过滤和轻度过滤的 Common Crawl 版本的质量往往低于精心处理的数据集。因此我们采取了三个步骤来提高我们的数据集的平均质量:

    • 我们下载了 Common Crawl 数据集,并基于与一系列高质量参考语料库的相似性来过滤 Common Crawl
    • 我们在在数据集内部和跨数据集之间进行了 document-level 的模糊去重fuzzy deduplication,从而防止数据冗余,并保持我们 held-out 验证集的完整性从而作为对过拟合的准确衡量。
    • 我们还将已知的高质量参考语料库加入到训练组合,从而增强 Common Crawl 并增加其多样性。

    前两点( Common Crawl 的处理)的细节在附录中描述。对于第三点,我们加入了几个精心设计的高质量数据集,包括 WebText 数据集的扩展版本(该扩展数据集是通过在较长时间内爬取链接而收集的),以及两个基于互联网的 books 语料库(Books1Books2)和英文维基百科。

    下表展示了我们在训练中使用的最终混合数据集。CommonCrawl 数据是从覆盖 2016 年到 2019 年月度 CommonCrawl41 个分片中下载的,在过滤前是 45TB 的压缩文本,过滤后是 570GB,大约包含 400Bbyte-pair-encoded tokens

    注意,在训练期间,数据集的采样并不与它们的大小成正比,而是我们认为质量较高的数据集被更频繁地采样。例如:CommonCrawlBooks2 数据集在训练期的每个 epoch 被采样不到 1 次,但是其他数据集被采样 23 次。这基本上是接受了少量的过拟合从而换取更高质量的训练数据。

    下图中:Weight 表示训练过程中,从给定数据集中采样的比例。最后一列表示混合数据每个 epoch 包含各个子数据集的多少个 epoch 。总的 token 数量为:410×0.44+19×2.9+12×1.9+55×0.43+3×3.4=292.15$ 410\times 0.44 + 19\times 2.9 + 12\times 1.9 + 55\times 0.43+ 3\times 3.4 = 292.15 $ 。

  2. 对于在广泛的互联网数据上进行预训练的语言模型,尤其是有能力记忆大量内容的模型,一个主要的方法论问题是:在预训练期间无意中看到测试集或验证集,从而对下游任务造成潜在污染。为了减少这种污染,我们搜索并试图消除与本文研究的所有 benchmark 验证集或测试集的任何重叠 overlap 。不幸的是,过滤中的一个错误导致我们忽略了一些重叠,而且由于训练的成本,重新训练模型是不可行的。在未来的工作中,我们将更积极地消除数据污染。

6.1.3 训练过程

  1. 正如 《Scaling laws for neural language models》《An empirical model of large-batch training》 中发现的那样,较大的模型通常可以使用较大的 batch size,但是需要较小的学习率。我们在训练过程中测量 gradient noise scale ,并使用它来指导我们对 batch size 的选择。下表展示了我们使用的参数配置。为了在不耗尽内存的情况下训练更大的模型,我们混合使用模型并行(在每个矩阵乘法上使用模型并行,即沿着宽度维度来划分模型;在网络各层上使用模型并行,即沿着深度维度来划分模型)。所有模型都是在微软提供的、位于一部分高带宽集群的 V100 GPU 上训练的。训练过程和超参数设置的细节参考附录。

6.1.4 评估

  1. 对于 few-shot learning,我们通过从该任务的训练集中随机抽取K$ K $ 个样本作为条件来评估 evaluation set 中的每个样本,根据任务的不同,每个样本被 12 个换行符来限定 delimited

    • 对于 LAMBADAStorycloze ,因为训练集没有监督信息,所以我们从验证集中采样条件样本 conditioning example,在测试集中进行评估。
    • 对于 Winograd (原始版本,而不是 SuperGLUE 版本),只有一个数据集,所以我们直接从该数据集采样条件样本。

    K$ K $ 可以是从 0 到模型上下文窗口(对于所有模型而言nctx=2048$ n_\text{ctx}=2048 $ )所允许的最大值之间的任何值,通常是 10100 个样本。较大的K$ K $ 值通常不一定最好,所以当有独立的验证集和测试集时,我们在验证集上试验几个K$ K $ 值并选择最佳的那个,然后在测试集上运行最佳K$ K $ 值。对于某些任务(见附录),在示范 demonstration 之外我们还使用自然语言提示 natural language prompt ,如果是K=0$ K=0 $ 那么我们就仅用用自然语言提示。

  2. 在涉及从几个选项中选择一个正确答案的任务中,我们提供了K$ K $ 个 (context, completion) 的样本,然后是一个只有 context 的样本,并比较每个completionLM likelihood

    这里是把所有样本拼接成一个长的序列,从而作为上下文。如:

    
    
    xxxxxxxxxx
    Q:xxxx A:yyyy Q:xxxxxx A:yyyy Q:xxxxxxx A:

    最后只有一个 A: 作为提示,现在需要补全答案。

    • 对于大多数任务,我们比较 per-token 的可能性(即,对长度进行归一化处理)。

      即:P(completion | context)len(completion)$ \frac{P(\text{completion | context})}{\text{len}(\text{completion})} $ ,其中len()$ \text{len}(\cdot) $ 为 token 数量。

    • 然而在少数数据集(ARC, OpenBookQA, RACE)上,我们通过计算P(completion | context)P(completion | answer-context)$ \frac{P(\text{completion | context})}{P(\text{completion | answer-context})} $ 来获得验证集上的额外好处,该方法通过每个 completion 的无条件概率来归一化,其中 answer context 为字符串 "Answer: ""A: " 并用于提示 completion 应该是一个答案,其它方面都是通用的。

    • 在涉及二分类的任务上,我们给答案起了更有语义的名字(如 TrueFalse,而不是 01),然后把任务当做选择题。我们有时也会像 T5 那样对任务进行框定 frame (详见附录)。

    • 在自由形式的 completion 任务上,我们使用与 T5 相同参数的 beam searchbeam width = 4,长度惩罚系数α=0.6$ \alpha = 0.6 $ 。我们使用 F1 相似度得分、BLEU、或 exact match 来对模型进行评分,具体取决于数据集是什么评估标准。

  3. 如果测试集是公开的,那么我们会针对每个模型的大小和 settingzero-shot/one-shot/few-shot)报告最终结果。如果测试集是私有的,我们的模型往往太大而无法在 test serverfit ,所以我们报告验证集的结果。我们确实在少量数据集(SuperGLUE, TriviaQA, PiQa)上提交了 test server,在这些数据集上我们能够顺利提交,并且我们仅提交了 200B (最大的模型)的 few-shot 结果。其它所有的结果都是验证集上报告的。

    实际上是 175B 模型而不是 200B 模型?

6.2 实验结果

  1. 下图我们展示了 8 个模型的训练曲线。在这张图中,我们还包括了 6 个额外的小模型,它们的参数只有 10 万个(一共十四条曲线)。正如在 《Scaling laws for neural language models》 中观察到的,当有效利用 training compute 时,语言建模的性能遵循一个 power-law 。在将这个趋势再scale 两个数量级之后,我们观察到的是对 power-law 的轻微偏离(如果有的话)。人们可能会担心:交叉熵损失的这些提升仅仅来自于对我们训练语料库的虚假细节spurious details 的建模(从而导致泛化能力较差)。然而,我们将在后续的章节看到,交叉熵损失的改善在广泛的自然语言任务中导致了一致的性能提升。

    作者注:在下图中,我们把 emebdding parameters 从统计中剔除了。

  2. 下面,我们对这 8 个模型(1750 亿参数的 GPT-37 个较小的模型)在广泛的数据集上进行评估。我们将这些数据集分为 9 个类别,代表大致相似的任务。

    • 3.1 节(原始论文的章节,下同)中,我们对传统的语言建模任务和语言建模类似的任务进行评估,如 Cloze 任务和 sentence/paragraph completion 任务。
    • 3.2 节中,我们的对 closed book 问答任务进行评估,这些任务需要使用存储在模型参数中的信息来回答通用的知识问题。
    • 3.3 节中,我们评估了该模型在不同语言之间的翻译能力(尤其是 one-shot/few-shot )。
    • 3.4 节中,我们评估该模型在类似 Winograd Schema 任务上的表现。
    • 3.5 节中,我们对涉及尝试推理或问答的数据集进行评估。
    • 3.6 节中,我们对阅读理解任务进行了评估。
    • 3.7 节中,我们对 SuperGLUE benchmark suite 进行了评估。
    • 3.8 节中,我们简要地讨论了 NNLI
    • 3.9 节中,我们开发了一些额外的任务,专门用来探测 in-context learning 能力。这些任务聚焦于即时推理 on-the-fly reasoning、适应技能 adaption skill、开放式文本合成 open-ended text synthesis

    我们对所有任务都在 few-shot/one-shot/zero-shot setting 下进行了评估。

6.2.1 语言建模、完形填空、Completion 任务

a. 语言建模

  1. 我们在 GPT-2 中测量的 Penn Tree Bank: PTB 数据集上计算了 zero-shot 困惑度。我们最大的模型在 PTB 上达到了一个新的 SOTA,有 15 个点的飞跃,达到了 20.50 的困惑度。注意,由于 PTB 是一个传统的语言建模数据集,它没有明确的分隔 separation 的样本来定义 one-shotzero-shot,所以我们仅测量 zero-shot 的。

    这里省略了许多常见的语言建模数据集,因为这些数据集来自于维基百科或其它数据源,而这些数据源都已经包含在 GPT-3 的训练数据中。

b. LAMBADA

  1. LAMBADA 数据集测试了文本中长距离依赖关系的建模:模型被要求预测句子的最后一个单词,这要求模型阅读一个段落(作为上下文)。在 zero-shot 的情况下,GPT-3LAMBADA 上达到了 76%,比以前的技术水平提高了 8%

  2. LAMBADA 也是 few-shot learning 灵活性的证明,因为它提供了一种方法来解决这个数据集上出现的一个经典问题:尽管 LAMBADA 中的 completion 总是句子中的最后一个单词,但是标准的语言模型却无法得知这个细节。因此,语言模型不仅为正确的结尾分配概率,也为该段落的其它有效 continuation 分配概率。这个问题在过去已经通过停用词过滤(这禁止了 continuation 词)得到了部分解决。few-shot setting 反而使我们能够将任务 “框定” 为一个 cloze-test ,并允许语言模型从样本中推断出恰好需要一个单词的 completion 。我们使用以下的 fill-in-the-blank 格式:

    
    
    xxxxxxxxxx
    Alice was friends with Bob. Alice went to visit her friend ____. -> Bob George bought some baseball equipment, a ball, a glove, and a ___. ->

    当以这种方式呈现样本时,GPT-3few-shot setting 下达到了 86.4% 的准确率,比之前的 SOTA 提高了 18% 。我们观察到,few-shot 的性能随着模型的大小而得到强烈的改善:对于最小的模型则性能只有接近 20%,而对于 GPT-3 则性能达到 86%

    最后,fill-in-blankone-shot setting 中效果不佳,它的表现总是比 zero-shot setting 更差。也许这是因为所有模型仍然需要几个样本来识别模式。

    作者注:对于 few-shot learningGPT-3 2.7B 已经超越了 SOTA17B 参数的 Turing-NLG ,并且 GPT-3 175B 超越了 SOTA 高达 18%

  3. 需要注意的是,对测试集污染的分析发现,LAMBADA 数据集中的相当一部分似乎存在于我们的训练数据中。然而 ”衡量和防止对 benchmark 的记忆“这部分章节的分析表明:这对性能的影响可以忽略不计。

c. HellaSwag

  1. HellaSwag 数据集涉及为一个故事或一组指令挑选最佳的 ending 。这些例子被对抗性地挖掘出来,对语言模型而言很难,而对于人类而言确很容易(人类达到 95.6% 的准确率)。

    GPT-3one-shot/few-shot setting 中取得了 78.1%/79.3% 的准确率,超越了微调的 1.5B 参数模型Grover75.4% 的准确率,但是仍然比微调的多任务模型 ALUM 取得的 85.6%SOTA 低了不少。

d. StoryCloze

  1. StoryCloze 2016 数据集涉及为五句话长度的故事选择正确的 ending sentence 。这里,GPT-3zero-shot/few-shot setting 中取得了 83.2%/87.7% 的成绩,其中 few-shotK=70$ K=70 $ 。这仍然比使用基于 BERT 模型的微调 SOTA4.1%,但是比以前的 zero-shot 结果提高了大约 10%

6.2.2 Closed Book 问答

  1. 这里我们衡量 GPT-3 回答有关广泛事实知识broad factual knowledge 的问题的能力。

    • 由于可能的 query 的数量巨大,该任务通常是通过使用信息检索系统来寻找相关的文本,并结合一个模型来学习给定 question 和被检索到文本 retrieved text 的条件下生成 answer 。由于这种 setting 允许系统搜索可能包含答案的文本,并以搜到的文本为条件,因此这种 setting 被称作 “开卷” open-book
    • 《How much knowledge can you pack into the parameters of a language model》 最近证明了一个大型的语言模型可以在没有辅助信息为条件的情况下直接回答问题。他们将这种限制性更强的评估 setting 称作 “闭卷” closed-book 。他们的工作表明:更高容量的模型可以表现得更好。我们用 GPT-3 测试这个假设。
  2. 我们在 《How much knowledge can you pack into the parameters of a language model》 中的三个数据集上评估 GPT-3Natural QuestionsWebQuestionsTriviaQA,使用与他们相同的 split 。注意,除了所有结果都是在闭卷的情况下进行之外,我们使用 zero-shot/one-shot/few-shot 的评估代表了比他们更严格的 setting:除了不允许有外部内容之外,也不允许对 Q&A 数据集本身进行微调。

    GPT-3 的结果如下所示:

    • TriviaQA 数据集上,我们在 zero-shot/one-shot/few-shot setting 中取得了 64.3%/68.0%/71.2% 的成绩。

      zero-shot 结果比微调的 T5-11B 改进了 14.2% ,也比在预训练中使用 Q&A tailored span prediction 提高了 3.8%

      few-shot 与一个开放域 open-domainQA 系统的 SOTA 相匹配,该系统不仅进行了微调,还利用了一个学到的检索机制 retrieval mechanism

    • WebQuestions: WebQs 上,GPT-3zero-shot/one-shot/few-shot setting 中达到 14.4%/25.3%/41.5% 。相比之下,微调的 T5-11B37.4%,微调的 T5-11B+SSM44.7% (它采用了一个 Q&A-specific 预训练程序)。

      GPT-3few-shot setting 下的性能接近 SOTA 微调模型。值得注意的是,与 TriviaQA 相比,WebQSzero-shotfew-shot 表现出更大的优势(事实上,zero-shotone-shot 的差异也较大),这也许表明:WebQs 的问题和/或答案的风格对于 GPT-3 而言是 out-of-distribution 的。然而,GPT-3 似乎能够适应 adapt 这种分布,在 few-shot setting 下恢复了强大的性能。

    • Natural Questions: NQs 上,GPT-3zero-shot/one-shot/few-shot setting 中达到 14.6%/23.0%/29.9%。相比之下,微调的 T5-11B+SSM36.6%

      WebQs 类似,从 zero-shotfew-shot 的巨大收益可能表明了 distribution shift,也可能解释了NQsTriviaQA, WebQs 相比竞争力较弱的表现。特别是,NQs 中的问题倾向于非常精细的维基百科知识,这可能是在测试 GPT-3 的容量和 broad pretraining distribution 的极限。

    总而言之,在三个数据集中的一个上(即,TriviaWA 数据集),GPT-3one-shot 匹配了开放域的微调 SOTA。在另外两个数据集上,尽管没有使用微调,但是 GPT-3 接近于闭卷 SOTA 的性能。在所有三个数据集上,我们发现性能随模型规模的变化非常平稳。这可能反映了这样的思想:模型容量直接转化为更多的、被模型参数吸收的 “知识”。

  3. 所有模型规模在所有 QA 任务上的性能:

6.2.3 翻译

  1. GPT-2 中,由于容量问题 capacity concern,我们对多语言文件集合使用了一个过滤器,从而产生一个只有英语的数据集。即使采用了这个过滤器,GPT-2 也展示了一些多语言能力的证据,并且在法语和英语之间翻译时,表现得非同寻常,尽管只对 10MB 的、过滤后残留的法语文本进行了训练。

    GPT-3 中我们将 GPT-2 的容量提高了两个数量级,而且我们也扩大了训练数据集的范围从而包括其它语言的更多 representation 。我们的大部分数据都是来自于原始的 Common Crawl ,只有基于质量的过滤。尽管 GPT-3 的训练数据仍然主要是英语(根据单词数来算,占比 93%),但是它也包括 7% 的其它语言的文本(参见论文中的补充材料)。为了更好地了解翻译能力,我们还包括了另外两种常用的研究语言:德语 German 和罗马尼亚语 Romanian

  2. 现有的无监督机器翻译方法通常将一对单语言数据集的预训练和 back-translation 相结合。相比之下,GPT-3 从混合的训练数据中学习,该数据以自然的方式将多种语言混合在一起,在单词、句子、和文档 level 将它们结合起来。

    GPT-3 还使用一个单一的训练目标,该目标不是为任何特定的任务定制或设计的。然而,我们的 one-shot/few-shot setting 不能严格地与先前的无监督工作相比较,因为我们的方法仅利用了少量的 paired 样本(1 个或 64 个)。这相当于最多一两页的 in-context training data

    结果如下表所示:

    • zero-shotGPT-3 ,仅接收任务的自然语言描述,仍然低于最新的无监督的神经机器翻译 neural machine translation: NMT 的结果。

    • one-shotGPT-3 ,仅为每项翻译任务提供单个样本,性能比 zero-shot 提高了 7 BLEU,并且接近与先前工作有竞争力的性能。

    • few-shotGPT-3 进一步提高了 4 BLEU,导致与先前的无监督神经机器翻译的平均性能相似。

    • GPT-3 的性能在语言类型方面有个明显的倾斜,在其它语言翻译到英语时显著优于先前的无监督神经机器翻译工作,但是在英语翻译到其它语言时表现不佳。这可能是由于重用了 GPT-2byte-level BPE tokenizer ,该 tokenizer 是为一个几乎完全是英语的训练数据集开发的。

      对于 Fr-EnDe-EnGPT-3few-shot 超越了我们能找到的最好的监督结果,但是我们对相关文献不熟悉并且看起来这些 benchmark 没什么竞争力,因此我们认为这些结果并不代表真正的 SOTA

      对于 Ro-EnGPT-3 的表现相比 SOTA 是在 0.5 BLEU 以内,而 SOTA 是通过无监督预训练以及对 608k 标记样本进行微调以及 back-translation 的组合来实现的。

  3. 最后,在所有的语言翻译和所有的三种 setting 中,随着模型容量的提高,有一个平滑的趋势。

    下图中,虚线是英语翻译到其它语言,实线是其它语言翻译到英语。

  4. 所有模型规模在所有翻译任务中的性能:

6.2.4 Winograd-Style Tasks

  1. Winograd Schemas ChallengeNLP 中的一项经典任务,它涉及确定代词指的是哪个词,其中这个代词在语法上是模糊ambiguous的但是在语义上对人而言是明确unambiguous 的。最近,经过微调的语言模型在原始的 Winograd 数据集上取得了接近人类的性能。但是对于更难的版本,如对抗性挖掘的 Winogrande 数据集,微调的语言模型仍然大大落后于人类的性能。

    我们在 WinogradWinogrande 上测试 GPT-3 的性能,在 zero-shot/one-shot/few-shot setting 中。

    • Winograd 上,GPT-3zero-shot/one-shot/few-shot setting 中分别取得了 88.3%/89.7%/88.6% 的成绩,没有显示出明显的 in-context learning,但是在所有情况下都取得了很强劲的结果,仅比 SOTA 和人类表现低一点点。

      我们注意到,污染分析在训练数据中发现了一些 Winograd schemas,但是这似乎仅对结果有很小的影响(见”衡量和防止对 benchmark 的记忆“ 章节)。

    • 在更难的 Winogrande 数据集上,我们确实发现了 in-context learning 的好处。GPT-3zero-shot/one-shot/few-shot setting 中分别取得了 70.2%/73.2%/77.7% 的成绩。作为比较,微调的 RoBERTa 模型实现了 79%SOTA 的是微调的高容量模型(T5)实现了 84.6%,而报告的人类任务表现为 94.0%

      不同 shot 的性能差异体现了 in-context learning 的好处。

  2. 所有模型规模在所有 Winograd-style 任务上的性能如下所示:

6.2.5 常识推理

  1. 我们考虑三个试图捕获物理推理physical reasoning 或科学推理 scientific reasoning 的数据集。

    • PhysicalQA: PIQA:提出了关于物理世界如何运作的常识性问题,旨在探测对世界的基础理解。GPT-3 实现了 81.0%/80.5%/82.8%zero-shot/one-shot/few-shot 准确率(few-shot是在 PIQAtest server 上测量的)。这与之前微调的 RoBERTa79.4% 的准确率相比更胜一筹,但是仍然比人类的表现差 10% 以上。

      我们的分析将 PIQA 标记为潜在的数据污染问题(尽管隐藏了 test label),因此我们保守地将该结果标记为星号。

    • ARC:是一个从三年级到九年级科学考试中收集的选择题数据集。该数据集的 Challenge 版本已经被过滤为:简单的统计方法或信息检索方法无法正确回答的问题。GPT-3 实现了 51.4%/53.2%/51.5%zero-shot/one-shot/few-shot 准确率。这接近于 UnifiedQA 的微调 RoBERTa baseline55.9%)的性能。

      在数据集的 Easy 版本中,GPT-3 实现了 68.8%/71.2%/70.1%zero-shot/one-shot/few-shot 准确率,略微超过了 《Unifiedqa: Crossing format boundaries with a single qa system》 的微调 RoBERTa baseline

      然而,这两个结果仍然比 UnifiedQA 取得的整体 SOTA 差得多。UnifiedQAChallenge 版本上比 GPT-3few-shot 超出 27%,在 Easy 版本上超出 22%

    • OpenBookQAGPT-3zero-shotfew-shotsetting 都有显著改善,但是仍然比整体 SOTA20 多个点。GPT-3few-shot 性能与排行榜上微调的 BERT Large baseline 相似。

    总而言之,使用 GPT-3in-context learning 在常识推理commonsense reasoning 任务上展示出mixed 的结果:在 PIQAARCone-shotfew-shotsetting 中仅观察到小的、不一致的收益(相对于 zero-shot),但是在 OpenBookQA 上观察到显著的改善。

    最后,GPT-3PIQA 数据集中,在所有 zero-shot/one-shot/few-shot setting 上达到了 SOTA

  2. 所有模型规模在所有常识推理任务上的性能:

6.2.6 阅读理解

  1. 我们使用包含五个数据集的一个 suite 进行阅读理解任务reading comprehension 的评估。我们观察到 GPT-3 的性能在这些数据集上有很大的差异,这表明它在不同的答案格式上有不同的能力。一般而言,我们观察到:GPT-3initial baseline 、以及在每个数据集上使用 contextual representation 训练的早期结果相当。

    • GPT-3CoQA 这个自由形式 free-form 的对话数据集上表现最好(与人类 baseline 差距在 3 个点以内)。
    • GPT-3QuAC 这个需要对结构化对话动作和师生互动的answer span selection 进行建模的数据集上表现最差(比 ELMo baseline13 F1 )。
    • DROP 这个测试离散推理discrete reasoning 和计算能力numeracy 的数据集上,GPT-3few-shot setting 上超越了原始论文中的微调 BERT baseline ,但是仍然远远低于人类的表现和用符号系统增强神经网络的 SOTA 方法。
    • SQuAD 2.0 上,GPT-3 展示了它的 few-shot learning 能力,与 zero-shot setting 相比,提高了近 10 F1 (到 69.8 )。这使得它略微超越了原始论文中的最佳微调结果。
    • RACE 这个初中和高中英语考试的选择题数据集上,GPT-3 表现相对较弱,仅能与最早的利用 contextual representation 的工作竞争,并且仍然比 SOTA 落后 45%

  2. 所有模型规模在所有阅读理解任务上的性能:

6.2.7 SuperGLUE

  1. 为了更好地汇总 NLP 任务的结果,并以更系统的方式与 BERTRoBERTa 等流行模型进行比较,我们还在 SuperGLUE benchmark 上评估了 GPT-3GPT-3SuperGLUE 测试集上的性能如下表所示。在 few-shot setting 中,我们对所有任务都使用 32 个样本,从微调训练集中随机采样。

    • 对于除 WSCMultiRC 之外的所有任务,我们抽取新的一组样本作为每个问题的上下文(从而用于测试)。
    • 对于 WSCMultiRC 任务,我们使用从微调训练集中随机抽取的同一组样本作为我们评估的所有问题的上下文。

    我们观察到 GPT-3 在不同任务中的表现有很大差异:

    • COPAReCORD 上,GPT-3one-shot/few-shot setting 中达到了接近 SOTA 的性能。COPA 在排行榜上取得了第二名,仅比第一名(微调过的 110 亿参数的 T5 模型)差几分。

    • WSC 上,GPT-3few-shot setting 达到了 80.1% (注意,GPT-3 在原始 Winograd 数据集上达到了 88.6%,如前所述),性能还是比较强劲的。

    • BoolQ, MultiRC, RTE 上,GPT-3 的性能是 reasonable 的,大致与微调的 BERT-Large 相当。

    • CB 上,我们看到 GPT-3few-shot setting 中达到了 75.6%

    • WiC 是一个明显的弱点,few-shot 性能仅为 49.4% (接近于随机的选择)。我们为 WiC 尝试了许多不同的短语和表达式(这些涉及到确定一个词在两个句子中是否有相同的含义),但是没有一个能够取得强大的性能。这暗示了一个即将在下一节(ANLI benchmark )中变得更加清晰的现象:GPT-3 似乎在一些涉及比较两个句子或片段的任务中,在 few-shotone-shotsetting 中比较弱,例如,一个词是否在两个句子中以同样的方式使用(WiC),一个句子是否是另一个句子的转述 paraphrase ,或者一个句子是否暗示了另一个句子。这也可以解释为什么 RTECB 的得分相对较低,因为它们也遵循这种格式。

      尽管有这些弱点,GPT-3 仍然在八个任务中的四个任务上超越了微调的 BERT-Large,在其中的两个任务上接近微调的 110 亿参数的T5 模型所保持的 SOTA 水平。

  2. 最后,我们也注意到:随着模型规模和上下文中样本数量的增加,few-shotSuperGLUE 得分也稳步提高,展示出从 in-context learning 中获得的好处越来越多。我们将每个任务的K$ K $ 值扩大到 32 个样本,在这之后,额外的样本将不可能可靠地 fit 我们的上下文。

    当扫描所有的K$ K $ 值时,我们发现 GPT-3 需要每项任务至少 8total samples ,才能在整体 SuperGLUE score 上超越微调的 BERT-Large

    下图中,BERT-Large 参考模型是在SuperGLUE训练集(125k 个样本)上进行微调的,而BERT++首先在MultiNLI392k 个样本)和SWAG113k 个样本)上进行微调,然后在SuperGLUE训练集上进行进一步微调(总共630k 个微调样本)。我们发现BERT-LargeBERT++ 之间的性能差异大致相当于GPT-3中每个上下文K=1$ K=1 $ 与K=8$ K=8 $ 个样本的差异。

  3. 所有模型规模在所有 SuperGLUE 任务上的性能:

6.2.8 NLI

  1. Natural Language Inference: NLI 任务涉及理解两个句子之间关系的能力。在实践中,这项任务通常被结构化为一个二类或三类的分类问题:第二句话是否符合第一句话的逻辑、是否与第一句话矛盾、是否既不符合也不矛盾(即,中性)。

    • SuperGLUE 包含了一个 NLI 数据集 RTE,它评估了该任务的二分类版本。在 RTE 上,只有最大参数规模的 GPT-3 175B 在任何 setting 中都表现得比随机的好。而在 few-shot setting 下,GPT-3 的表现与单任务微调的 BERT-Large 相似。
    • 我们还评估了最近引入的 Adversarial Natural Language Inference: ANLI 数据集。ANLI 是一个困难的数据集,在三轮(R1, R2, R3)中采用了一系列对抗性挖掘的自然语言推理问题。类似于 RTE,所有比 GPT-3 175B 小的模型 ANLI 上的表现几乎完全是随机的,即使是在 few-shot setting 中(33%,因为是三分类问题)。

    下图给出了 ANLI R3 的结果。这些关于 RTEANLI 的结果表明:NLI 对于语言模型而言,仍然是一个非常困难的任务,它们只是刚刚开始显示出进步的迹象。

    下图是验证集上的结果,由于验证集仅包含 1500 个样本,因此结果的方差很大(我们估计的标准差为 1.2% )。我们发现较小的模型在随机概率附近徘徊。

  2. 所有模型在所有 ANLI 任务上的性能:

6.2.9 合成的和定性的任务

  1. 探索 GPT-3few-shot setting (或 zero-shot/one-shot setting)下的能力范围的一种方法是:给它布置任务,这些任务要求模型进行简单的 on-the-fly 计算推理、识别训练中不可能出现的新模式、或迅速适应一个不常见的任务。我们设计了几个任务来测试这类能力:

    • 首先,我们测试 GPT-3 进行算术的能力。
    • 其次,我们设计了几个任务,涉及到重排列rearranging 、或者解扰unscrambling 单词,这些任务在训练过程中不太可能被完全看到。
    • 第三,我们测试 GPT-3 解决 SAT-style 的类比analogy 问题的能力。
    • 最后,我们在几个定性任务上测试 GPT-3 ,包括在一个句子中使用新词、纠正英语语法、以及新闻文章的生成。

    我们即将发布合成数据集 synthetic dataset,希望能够激励对语言模型测试期间行为的进一步研究。

a. 算术

  1. 为了测试 GPT-3 在没有特定任务训练的情况下进行简单算术运算的能力,我们开发了一个 10 个测试任务组成的一个集合,其中包含用自然语言问 GPT-3 一个简单的算术问题:

    • 两位数加法 2 digit addition: 2D+:要求模型从 [0, 100) 之间随机均匀抽取两个整数相加。它的问题形式为:Q: What is 48 plus 76? A: 124
    • 两位数减法 2 digit subtraction: 2D-:要求模型从 [0, 100) 之间随机均匀抽取两个整数相减,答案可能为负数。它的问题形式为:Q: What is 34 minus 53? A: -19
    • 三位数加法 3 digit addition: 3D+:要求模型从 [0, 1000) 之间随机均匀抽取两个整数相加。
    • 三位数减法 3 digit subtraction: 3D-:要求模型从 [0, 1000) 之间随机均匀抽取两个整数相减。
    • 四位数加法 4 digit addition: 4D+:要求模型从 [0, 10000) 之间随机均匀抽取两个整数相加。
    • 四位数减法 4 digit subtraction: 4D-:要求模型从 [0, 10000) 之间随机均匀抽取两个整数相减。
    • 五位数加法 5 digit addition: 5D+:要求模型从 [0, 100000) 之间随机均匀抽取两个整数相加。
    • 五位数减法 5 digit subtraction: 5D-:要求模型从 [0, 100000) 之间随机均匀抽取两个整数相减。
    • 两位数乘法 2 digit multiplication: 2Dx:要求模型从 [0, 100) 之间随机均匀抽取两个整数相乘。它的问题形式为:Q: What is 24 times 42? A: 1008
    • 一位数的复合运算 One-digit composite: 1DC:要求模型从 [0, 10) 之间随机均匀抽取三个整数进行复合运算,操作数是从中 +,-,* 随机采样的,其中最后两个整数周围有括号。它的问题形式为:Q: What is 6+(4*8)? A: 38

    在所有十个任务中,模型必须准确地生成正确的答案。对于每项任务,我们生成一个由 2000 个随机任务实例组成的数据集,并在这些实例上评估所有模型。

  2. 首先,我们评估 GPT-3few-shot setting 下的表现,结果如下图所示。

    • 在加法和减法方面,GPT-3 在位数较少时性能较好,在两位数加法上达到 100% 的准确率,在两位数减法上达到 98.9% 的准确率,在三位数加法上达到 80.2% 的准确率,在三位数减法上达到 94.2% 的准确率。

      模型性能随着位数的增加而下降,但是 GPT-3 在四位数的运算中仍能达到 25% - 26% 的准确率,在五位数的运算中仍能达到 9% - 10% 的准确率。这表明至少某些能力可以泛化到更多的位数。

    • 在乘法方面,GPT-3 在两位数乘法上也达到了 29.2% 的准确率,这是一个计算量特别大的运算。

    • 最后,GPT-3 在个位数的组合运算中达到了 21.3% 的准确率,这表明它有一些超越单个运算的鲁棒性。

    作者注:模型性能从第二大模型(GPT-3 13B)到最大的模型(GPT-3 175B)有一个明显的跳跃。

  3. 如上图所示,小一些的模型在所有这些任务上的表现都很差,即使是 130 亿个参数的模型也只能解决一半的两位数加减运算,而在所有其它运算上的准确率都不到 10%

  4. one-shotzero-shot 的性能相对于 few-shot 而言有所下降,这表明对任务的适应(或者至少是对任务的识别)对正确执行这些计算很重要。然而,one-shot 性能仍然相当强大,甚至 GPT-3 175Bzero-shot 性能也显著优于所有小一些模型的 one-shot 。下表给出了完整的 GPT-3 的所有三种 setting

  5. 为了抽查模型是否只是在记忆特定的算术问题,我们把测试集中的三位数算术问题以 <NUM1> + <NUM2> =<NUM1> plus <NUM2> 两种形式在训练数据中进行搜索。在 2000 个加法问题中,我们只发现了 17 个匹配的答案(0.8% )。在 2000 个减法问题中,我们仅发现了 2 个匹配的答案(0.1%)。这表明只有一小部分的正确答案可以被记住。

    此外,对错误答案的检查显示:模型经常在诸如没有进位 1 这种问题上犯错,这表明模型实际上是在尝试进行相关的计算,而不是记忆一个表格。

    进位 1:例如 3 + 9 = 12,十位上的数字 1 就是一种进位。如果没有进位 1,就变成 3 + 9 = 2

    总体而言,GPT-3few-shot/one-shot 甚至 zero-shotsetting 中对复杂的算术表现出 reasonable 的熟练性 proficiency

  6. 所有模型规模在所有算术任务上的性能:

b. 单词扰乱和操作任务

  1. 为了测试 GPT-3 从几个样本中学习新的 symbolic manipulation 的能力,我们设计了一组 5character manipulation 任务。每项任务包括给模型一个被扰乱scrambling 、增加、或删除的字符组合所扭曲的单词,要求模型恢复原来的单词。这五项任务是:

    • 字母循环 cycle letters in word: CL :给模型一个字母循环的单词,然后是 = 符号,并期望模型能够生成原始单词。如,lyinevitab = inevitably
    • 除了第一个字符和最后一个字符以外,所有其它字母的顺序都被扰乱(A1):给模型一个扰乱的单词,其中除了第一个字符和最后一个字符以外所有其它字母的顺序都被扰乱,模型必须输出原始单词。如,criroptuon = corruption
    • 除了第一个字符和最后两个字符以外,所有其它字母的顺序都被扰乱(A2):给模型一个扰乱的单词,其中除了第一个字符和最后两个字符以外所有其它字母的顺序都被扰乱,模型必须输出原始单词。如,opoepnnt -> opponent
    • 随机插入单词 random insertion in word: RI:在一个单词的每个字母之间随机插入一个标点或空格字符,模型必须输出原始单词。如:s.u!c/c!e.s s i/o/n = succession
    • 反转单词 reversed word: RW:给模型一个倒着拼写的单词,模型必须输出原始词。如:stcejbo -> objects

    对于每个任务,我们生成 10000 个样本,其中我们选择的是由 《Natural language corpus data》 衡量的长度超过4个字符且少于 15 个字符的 top 10000 个最高频的单词。

    下图给出了 few-shot 的结果(K=100$ K=100 $ )。任务性能随着模型大小的增加而趋于平稳增长。 GPT-3 175B 模型在 RI 任务上取得了 66.9% 的成绩,在 CL 任务上取得了 38.6% 的成绩,在 A2 任务上取得了 40.2% 的成绩,在 A1 任务上取得了 15.1% 的成绩(这个任务比 A2 更难,因为只有第一个字母和最后一个字母被固定)。没有一个模型能完成 RW 任务。

    图形有误?根据后面的图表,GPT-3 175Bone-shot/few-shot setting 中在 RW 任务上的准确率为 0.48/0.44

    one-shot setting 中,表现明显较弱(下降一半或更多)。而在 zero-shot setting 中,模型很少能够完成任务(如下表所示)。这表明模型确实在测试期间学习了这些任务,因为模型无法 zero-shot 执行,而这些任务是人工构造的因此不太可能出现在预训练数据集中(尽管我们不能肯定地确认这一点)。

  2. 我们可以通过绘制 in-context learning curve 来进一步量化性能,该曲线展示了任务性能与 in-context 样本的关系。我们在下图中展示了 Symbol Insertion 任务的 in-context learning curve 。可以看到:较大的模型能够越来越有效地利用 in-context 信息,包括任务样本和自然语言任务描述 natural language task description

    虚线:没有 prompt;实线:包含 prompt 。较大的模型对上下文信息的利用越来越有效。大型模型的 in-context learning curves 越陡峭,则表明从 contextual information 中学习一个任务的能力越好。

  3. 最后,值得补充的是,解决这些任务需要 character-level 操作,而我们的 BPE 编码是在单词的 significant fraction 上操作的(平均每个 token 约为 0.7 个单词),所以从语言模型的角度来看,成功完成这些任务不仅需要操作 BPE token,还需要理解和拉开 pulling apart 它们的子结构。

    另外,CL, A1, A2 不是一一映射(也就是说,解扰的单词unscrambled word 不是扰动的单词 scrambled word 的确定函数),需要模型进行一些搜索从而找到正确的 unscrambling 。因此,所涉及的技能似乎需要模式匹配和计算。

  4. 所有模型在所有 scramble 任务上的性能:

    图表有误,Wordscramble(few-shot) 图中的 reversed words(紫色曲线)与 reversed words 图对不上。

c. SAT 类比

  1. 我们收集了一组 374SAT analogy 问题。类比 analogy 是一种选择题的风格,在 2005 年之前构成了 SAT 大学入学考试的一个部分。一个典型的例子是:

    
    
    xxxxxxxxxx
    audacious is to boldness as (a) sanctimonious is to hypocrisy (b) anonymous is to identity (c) remorseful is to misdeed (d) deleterious is to result (e) impressionable is to temptation

    学生需要选择这五个 word pair 中的哪一个与原始的 word pair 有相同的关系。在这个例子中,答案是 sanctimonious is to hypocrisy

    在这个任务中,GPT-3few-shot/one-shot/zero-shot setting 中达到 65.2%/59.1%/53.7% 的准确率。相比之下,大学申请人的平均得分是 57%,随机猜测的得分是 20% 。如下图所示,结果随着模型规模的扩大而提高,与 130 亿个参数的模型相比, GPT-3 175B 提高了 10% 以上。

    不同模型规模之间的效果差异越大,则越表明 in-context learning 的价值。

d. 新闻文章生成

  1. GPT-2 定性地测试了生成人工合成的新闻文章的能力:给定人写的 prompt (由似是而非的新闻故事的第一句话组成),然后模型进行条件采样。相对于 GPT-2GPT-3 的训练数据集中新闻文章的占比要小得多,因此试图通过原始的无条件采样来生成新闻文章的效果较差。例如,GPT-3 经常将新闻文章的第一句话解释为一条推文,然后发布合成的 response 或者 follow-up 推文。

    为了解决这个问题,我们通过在模型的上下文中提供三篇previous 的新闻文章作为条件,运用了 GPT-3few-shot learning 能力。基于新闻的标题和副标题,GPT-3 能够可靠地生成新闻体裁的短文。

  2. 为了衡量 GPT-3 新闻文章的生成质量,我们决定测量人类区分 GPT-3 生成的文章和真实文章的能力。为此,我们从 newser.com 网站上任意选择了 25 个文章的标题和副标题(平均长度 215 个单词)。然后我们从四个语言模型中生成了这些标题和副标题的 completion ,这些模型的大小从 125M175B 的参数规模。对于每个模型生成的结果,我们向大约 80 民美国的参与者展示了一个测验:真实的标题和副标题,后面跟着人类写的文章或模型生成的文章。参与者要求指出该文章是否是:“非常可能是人写的”、“更可能是人写的”、“我不知道”、“更可能是机器写的”、“非常可能是机器写的”。

    我们选择的文章不在模型的训练集中,模型的输出被格式化从而以程序化方式选择,从而防止人为的精挑细选。所有的模型都使用相同的上下文来条件输出,并以相同的上下文大小来进行预训练,而且每个模型都使用相同的文章标题和副标题作为 prompt 。然而,我们也做了一个实验来控制参与者的努力和注意力,这个实验遵循相同的格式,但是故意让模型生成的文章变差。这是通过从一个 control model 生成文章来实现的:一个没有上下文以及被增加了输出随机性的 160M 参数的模型。

    • 对于故意的坏文章(根据 control model 生成的),人类检测出它是由模型生成的平均准确率(每个参与者的正确回答与非中性答案的比率)是大约 86% ,其中 50% 是偶然水平的表现。

      相比之下,人类检测出由 175B 参数模型生成的文章的平均准确率仅有 52%,略高于偶然水平(参考下表)。下表还显示了每个模型与control model之间平均准确率差异的 two-sample T-Test 的结果。

    • 人类检测模型生成的文本的能力似乎随着模型大小的增加而降低:随着模型大小的增加,似乎有一个趋向于偶然准确率的趋势。此外,随着模型大小的增加,参与者在每个输出上花费更多的时间。

      下图中,最佳拟合线是一个具有 95% 置信区间的幂律power law 曲线。

  3. 下图给出了 GPT-3 的合成文章的例子。正如评价所展示的那样,许多文本对于人类而言很难与真实的人类内容区分开来。事实不准确 factual inaccuracy 可能是一个指标来判断文章是模型生成的,因为与人类作者不同,模型无法获得文章标题所指的具体事实或文章的写作时间。其它指标包括:重复 repetition、非连续性、不寻常的措辞 unusual phrasing

  4. 《Automatic detection of generated text is easiest when humans are fooled》 关于语言模型检测的相关工作表明:像 GROVERGLTR 这样的自动判别器 automatic discriminator 在检测模型生成的文本方面可能比人类评估员更成功。对这些模型的自动检测可能是未来研究的一个有前景的领域。

    《Automatic detection of generated text is easiest when humans are fooled》 也注意到:人类检测模型生成的文本的准确率,会随着人类观察到更多的 token 而增加。为了初步调研人类在检测由 GPT-3 175B 模型生成的较长文章方面的能力,我们从路透社选择了 12 篇平均长度为 569 个单词的 world news ,并根据这些文章从 GPT-3 生成了平均长度为 498 个单词的 completion (比我们最初的实验要多 298 个单词)。按照上述方法,我们进行了两个实验,每个实验都在大约 80 名美国参与者身上进行,从而比较人类检测由 GPT-3 和一个 control model 所生成的文章的能力。

    我们发现:人类在检测 control model 生成的文章的准确率为 88%,而检测 GPT-3 175B 生成的文章的准确率为 52%(勉强高于随机水平)。这表明,对于长度在 500 个单词左右的新闻文章,GPT-3 175B 继续生成人类难以区分的文章。

e. 学习使用新颖的单词

  1. 发展语言学developmental linguistics 研究的一项任务是学习和利用新词的能力,例如在仅看到一次某个单词的定义之后使用该单词,或者相反(仅看到某个单词的一次用法之后推断出该词的含义)。这里我们对 GPT-3 在前者的能力上进行定性测试。具体而言,我们给 GPT-3 提供一个不存在的单词的定义,如 Gigamuru ,然后要求 GPT-3 在一个句子中使用它。

    我们提供了前面的一到五个样本,这些样本包括一个不存在的单词的定义以及在一个句子中使用。因此,对于这些previous 样本而言是 few-shot,但是对于这个具体的新颖的单词而言是 one-shot

    下表给出了我们生成的六个样本。所有的定义都是人类生成的,第一个答案是人类生成的作为条件,而后面的答案则是 GPT-3 生成的。这些例子是一次性连续生成的,我们没有遗漏或重复尝试任何 prompt 。在所有情况下,生成的句子似乎都是对该单词的正确或者至少是合理的使用。在最后一个句子中,模型为 screeg 一词生成了一个合理的连接词(即 screeghed),尽管该词的使用略显突兀。总体而言,GPT-3 似乎至少能熟练地完成在句子中使用新词的任务。

    黑体字是 GPT-3completion ,纯文本是人类的prompt 。在第一个样本中,promptcompletion 都是由人类提供的,然后作为后续样本的条件,其中 GPT-3 收到 successive additional prompts 并提供completions 。除了这里显示的条件外,没有任何 task-specific 的信息提供给 GPT-3

f. 纠正英语语法

  1. 另一项非常适合 few-shot learning 的任务是纠正英语语法。我们测试 GPT-3few-shot learning 下的表现,给出的 prompt 形式是:Poor English Input: <sentence>\n Good English Output: <sentence> 。我们为 GPT-3 提供一个人类生成的纠正,然后要求模型再纠正五个,结果如下图所示。

    黑体字是 GPT-3completion ,纯文本是人类的prompt 。在最初的几个样本中,promptcompletion 都是由人类提供的,然后作为后续样本的条件,其中 GPT-3 收到 successive additional prompts 并提供completions 。除了这里显示的几个样本作为条件和 Poor English input/Good English output 框架以外,没有任何 task-specific 的信息提供给 GPT-3

    我们注意到:poorgood 英语之间的差异是复杂 complex 的、contextual 的、有争议contested 。正如提到房屋租赁的例子所示,模型对什么是 good 假设甚至会导致它出错(在这里,模型不仅调整了语法,而且还以改变含义的方式删除了 cheap 一词)。

6.3 衡量和防止对 benchmark 的记忆

  1. 由于我们的训练数据集来自于互联网,我们的模型有可能是在某些 benchmark 的测试集上进行了训练(即,训练数据集包含了 benchmark 的测试集)。从 internet-scale 数据集中准确地检测测试污染是一个新的研究领域。虽然训练大型模型而不调查污染contamination 是常见的做法,但是鉴于预训练数据集的规模越来越大,我们认为这个问题越来越需要关注。

    GPT-2 进行了事后的 overlap 分析,其分析结果相对而言令人鼓舞:由于被污染的数据比例很小(通常只有百分之几),所有这并未对报告的结果产生重大影响。GPT-3 在某种程度上是在不同的制度下运作的。

    • 一方面,GPT-3 的数据集和规模比 GPT-2 所用的大两个数量级,并且包括大量的 Common Crawl ,从而增加了污染contamination和记忆memorization 的可能性。
    • 另一方面,即使是大量的数据,GPT-3 175B 也没有对它的训练集有较大的过拟合(在一个 held-out 验证集上衡量的),如下图所示。

    因此,我们预计污染可能是经常发生的,但是其影响可能没有担心的那么大。

    下图中,虽然训练loss 和验证loss之间存在一定的 gap ,但这种gap 随着模型规模和训练时间的增加而增长得很小,这表明大部分gap 来自于难度difficulty的不同,而不是过拟合。

  2. 我们最初试图通过主动搜索并消除我们训练数据中与所有 benchmark 验证集和测试集之间的 overlap ,从而解决污染问题。不幸的是,一个错误导致只能从训练数据中部分删除所有检测到的 overlap。由于训练成本,重新训练模型是不可行的。为了解决这个问题,我们详细调研了剩余检测到的 overlap 是如何影响结果的。

    对于每个 benchmark,我们产生了一个 clean 版本,它删除了所有可能泄露的样本,这些样本被定义为:与预训练数据集中的任何内容有 13-gram overlap (或者当样本短于 13-gram 时整个样本的 overlap)。我们的目标是非常保守地标记任何有可能是污染的内容,以便产生一个干净的子集。具体过滤程序参考附录。

    数据集的污染样本占比定义为:潜在污染的样本数量除以数据集的样本总数。

    然后我们在这些 clean benchmark 上评估 GPT-3,并与原始分数进行比较:

    • 如果 clean benchmark 上的得分与原始得分相似,这表明即使存在污染,也不会对报告结果产生重大影响。
    • 如果 clean benchmark 上的得分较低,则表明污染可能会夸大结果。

    下图对这些结果进行了总结(下图的 x 轴是干净样本的占比)。尽管潜在的污染往往很高(四分之一的 benchmark 的污染样本占比超过了 50%),但是在大多数情况下,性能的变化可以忽略不计,而且我们没有看到证据表明:污染水平和性能差异是相关的。我们的结论是:要么我们的保守方法大大高估了污染,要么污染对性能没有什么影响。

    因为作者这里的方法是:命中了 13-gram overlap 就认为是污染。其实这里有很多是假阳性。

  3. 接下来我们更详细地调查一些具体的案例。在这些案例中,要么模型在清理后的版本上表现明显更差,要么潜在的污染非常高使得测量性能差异变得困难。

    我们分析出六组需要进一步调查的 benchmark,包括 Word ScramblingReading ComprehensionQuACSQuAD2DROP)、PIQAWinogradlanguage modeling taskWikitext1BW)、以及 German to English translation 。由于我们的 overlap 分析被设计得极为保守,因此我们预计它将产生一些假阳性false positive结果。

    • 阅读理解:我们最初的分析将来自 QuACSQuAD2DROP90% 以上的任务样本标记为潜在的污染,这个比例如此之大以至于在一个干净的子集上测量差异都很困难(子集太小)。然而,经过人工检查,我们发现:对于我们检查的每一个 overlap,在所有的三个数据集中,源文本存在于我们的预训练数据集中,但是 question/answerpair 却不存在,这意味着模型仅获得背景信息,无法记住特定问题的答案。

    • 德文翻译:我们发现 WMT16 German-English 测试集中有 25% 的样本被标记为潜在的污染,对应的总效果为 1-2 BLEU 。经检查,没有一个标记污染的样本包含与神经机器翻译训练数据相似的 paired sentence ,碰撞是单语匹配monolingual match,主要是新闻中讨论的事件片段。

    • 反转词和变形词anagrams:这些任务的形式是:alaok = koala 。由于这些任务的文本长度较短,我们使用 2-grams 进行过滤(忽略标点符号)。在检查了被标记的重叠 flagged overlap 之后,我们发现它们通常不是训练集中真正的反转或解扰的样本,而是回文或不重要的解扰,如 kayak = kayaoverlap 的数量很少,但是移除这些不重要的任务 trivial tasks 会导致难度的增加,从而产生虚假的信号。

      与此相关,symbol insertion 任务显示出比较高的 overlap,但是对成绩没有影响。这是因为该任务涉及从一个单词中删除非字母的字符,而 overlap analysis 本身忽略了这些字符,导致了许多虚假的匹配。

    • PIQA:重叠分析将 29% 的样本标记为污染,并观察到 clean 子集的性能绝对下降了 3% (相对下降 4%)。虽然测试集是在我们的训练集创建之后发布的,而且其 labelhidden 的,但是众包数据集创建者使用的一些网页也被包含在我们的预训练数据集中。我们发现,在一个 25x (二十五倍)更小的模型(因此具有更小的容量来记忆)中也有类似的性能下降,这导致我们怀疑这种 shift 可能是统计上的 bias 而不是 memorization 。这些被复制的样本可能只是更容易解决,而不是被模型记住。不幸的是,我们无法严格地证明这个假设。因此,我们将 PIQA 的结果用星号标出,以表示这种潜在的污染。

    • Winograd:重叠分析标记了 45% 的样本,并发现在 clean 子集上性能下降了 2.6% 。对重叠数据的人工检查表明:132 Winograd schemas 实际上存在于我们的预训练数据集中,尽管其呈现的格式与我们向模型呈现的任务不同。虽然性能下降不大,但是我们将 Winograd 的结果用星号标出。

    • 语言建模:我们发现在 GPT-2 中测量的 4 个维基百科语言建模 benchmark,加上 Children’s Book Test: CBT 数据集,几乎完全包含在我们的预训练数据集中。由于我们无法在这里可靠地提取一个干净的子集,所以我们没有报告这些数据集的结果,尽管我们在开始这项工作时打算这样做。我们注意到,Penn Tree Bank: PTB 由于其年代久远而未受影响,因此成为我们的主要的语言建模 benchmark

  4. 我们还检查了污染程度较高但是对性能影响接近于零的数据集,仅仅是为了验证实际存在的污染程度。这些数据集似乎经常包含 假阳性 false positive :要么没有实际的污染,要么虽然有污染但是没有泄露任务的答案。

    一个明显的例外是 LAMBADA ,它似乎有大量真正的污染,但是对性能的影响非常小,clean 子集的得分在完整数据集的 0.5% 以内。另外,严格而言,我们的 fill-in-the-blank 格式排除了最简单的 memorization 的形式。尽管如此,由于我们在本文中在 LAMBADA 上取得了非常大的收益,所以在这里指出了潜在的污染。

  5. 我们污染分析的一个重要限制是:我们无法确定clean子集是来自原始数据集相同的分布。还有一个可能是:memorization 夸大了结果(使得污染数据集上效果更好),但是同时又恰恰被一些统计上的 bias 所抵消(干净数据集更简单所以效果也很好),导致 clean 子集的效果持平。然而,shift 接近于零的任务数量非常多,从而表明这是不可能的。而且我们也观察到小模型的 shift 没有显著的差异,这不太可能是记忆的。

  6. 总之,我们已经尽了最大努力来衡量和记录数据污染的影响,并根据严重程度来分析或直接删除有问题的结果。在设计 benchmark 和训练模型时,要解决这个对于整个领域而言重要而微妙的问题,还有很多工作要做。关于我们分析的更详细的解释,参考附录。

6.4 局限性

  1. GPT-3 以及我们对它的分析都存在一些局限性:

    • 首先,尽管 GPT-3 在数量和质量上都有很大的改进,尤其是和它的直接前身 GPT-2 相比,但是它在文本合成和几个 NLP 任务中仍然有显著的弱点。

      • 在文本合成方面,虽然整体质量很高,但是 GPT-3 样本有时仍会在 document-level 重复自己的语义。在较长的段落中开始失去连贯性,自相矛盾,以及偶尔包含非连续的句子或段落。我们将发布一个由 500个 未经整理的无条件unconditional 的样本组成的集合,以帮助更好地了解 GPT-3在文本合成方面的限制和优势。

        即,生成长文本的性能不行。

      • 在离散discrete 的语言任务领域,GPT-3 似乎在 "常识性物理 "方面有特殊的困难,尽管在测试这一领域的一些数据集(如PIQA)上表现良好。具体来说,GPT-3 对 ”如果我把奶酪放进冰箱,它会融化吗?“ 这类问题有困难。

        即,无法处理常识性问题。

      • 从数量上看,GPT-3in-context learning 性能在我们的 benchmarksuite 上有一些明显的差距,特别是在一些 “比较” 任务上,例如确定两个词在一个句子中的使用方式是否相同(WIC 数据集),或一个句子是否暗示另一个句子(ANLI 数据集),以及在阅读理解任务的一个子集。鉴于GPT-3在许多其他任务上的强大的few-shot 性能,这一点尤其引人注目。

        即,无法处理 comparison 任务。

    • GPT-3 有几个结构和算法上的局限性,这可能是上述一些问题的原因。我们专注于探索自回归语言模型中的in-context learning行为,因为用这种 model class 进行采样和计算 likelihood 是很简单的。因此,我们的实验不包括任何双向架构bidirectional architecture 或其他训练目标,如去噪denoising。这与最近的许多文献有明显的不同,这些文献记录了在使用这些方法时(双向架构、去噪目标)比标准语言模型有更好的微调性能(T5)。

      因此,我们的设计决定的代价是:在经验上受益于双向性bidirectionality 的任务上,性能可能会更差。这可能包括fill-in-the-blank 任务、涉及回看 looking back 和比较两段内容的任务、或者需要re-reading 或仔细考虑一个长的段落然后产生一个非常短的答案的任务。这可能是对 GPT-3在一些任务中few-shot 性能落后的解释,如 WIC(涉及比较一个词在两个句子中的使用)、ANLI(涉及比较两个句子,看其中一个句子是否暗示另一个句子)、以及几个阅读理解任务(如QuACRACE)。

      根据过去的文献,我们还猜想:一个大型的双向模型在微调方面会比GPT-3更强。以 GPT-3 的规模来创建一个双向模型,和/或尝试使双向模型与few-shot/zero-shot learning一起工作,是未来研究的一个有希望的方向,并可以帮助实现两全其美 best of both worlds

    • 本文所描述的一般方法(scale任何类似语言模型的模型,无论是自回归的还是双向的)的一个更根本的局限性是:它最终可能会遇到(或者可能已经遇到)预训练目标的限制。

      • 首先,我们目前的预训练目标对每个token 的权重是相同的,并且缺乏一个概念:即什么是最重要的预测,什么是不重要的。《How much knowledge can you pack into the parametersof a language model?》 展示了对感兴趣的实体进行自定义预测customizing prediction 的好处。
      • 另外,在自监督目标下,任务规范 task specification 依赖于强迫下游目标任务成为一个预测问题 prediction problem 。然而,最终有用的语言系统(例如虚拟助手)可能更好地被认为是执行 goal-directed 动作,而不仅仅是做出预测。
      • 最后,大型预训练的语言模型并不以其他领域的经验为基础,如视频或现实世界的物理交互,因此缺乏大量的关于世界的背景(《Experience grounds language》)。

      由于所有这些原因,纯粹的自监督预测的scaling可能会遇到限制,而用不同的方法进行增强可能是必要的。这方面有希望的未来方向可能包括:从人类学习目标函数(《Fine-tuning language models from human preferences》)、用强化学习进行微调、或增加额外的模式(如图像)以提供基础的和更好的世界模型(《Uniter: Learning universal image-text representations》)。

    • 语言模型普遍存在的另一个限制是预训练期间的样本效率低。虽然 GPT-3 在测试时的样本效率方面前进了一步,更接近于人类的样本效率(one-shot/zero-shot ),但它在预训练期间看到的文本仍然比人类在其一生中看到的多得多。提高预训练的样本效率是未来工作的一个重要方向,它可能来自于在物理世界physical world 的基础上提供额外的信息,或者来自于算法的改进。

    • GPT-3 中的 few-shot learning 相关的一个限制(或者至少是不确定性)是:few-shot learning 是否真的在推理时间 ”从头开始“ 学习新的任务,或者它是否只是识别和确定它在训练期间学到的任务。这里可能存在一个谱系 spectrum ,从训练集的样本与测试集的样本完全相同的分布、到识别相同的任务但以不同的形式、到适应通用任务(如QA)的特定风格、到完全从头学习一项技能。

      GPT-3 在这个 spectrum 上的位置也可能因任务而异:

      • 合成任务 synthetic task ,如 word scrambling 或定义无意义的词,似乎特别有可能从头学起。
      • 翻译显然必须在预训练中学习,尽管可能来自与测试数据在组织和风格上非常不同的数据(即数据分布不同)。

      最终,我们甚至不清楚人类从头开始学习什么,以及从先前的示范中学习什么。即使是在预训练中组织不同的示范,并在测试时识别它们,也是语言模型的一个进步。但尽管如此,准确地理解few-shot learning 的工作原理是未来研究的一个重要的未探索的方向。

    • GPT-3 模型规模类似的模型的一个限制是:无论目标函数或算法如何,它们既昂贵又不方便推理。目前这可能对GPT-3 规模的模型的实用性构成了挑战。解决这个问题的一个可能的未来方向是将大型模型蒸馏,使之成为针对特定任务的可管理大小。像 GPT-3 这样的大型模型包含了非常广泛的技能skill ,其中大部分技能在特定任务中是不需要的,这表明原则上aggressive distillation 是可能的。

      模型蒸馏在普通情况下已被很好地探索(《Improving multi-task deep neural networks via knowledge distillation for natural language understanding》),但还没有在千亿级参数的规模上尝试过。将模型蒸馏应用于这种规模的模型可能会有新的挑战和机遇。

    • 最后,GPT-3与大多数深度学习系统有一些共同的局限性:

      • 模型的决定不容易解释。

      • 模型对新的输入的预测不一定能很好地校准well-calibrated ,正如在标准benchmark 上观察到的比人类高得多的性能方差,并且模型保留了它所训练的数据的bias

        这个 issue(数据中的 bias 可能导致模型产生刻板stereotyped 的、或偏见prejudiced 的内容)从社会的角度来看是特别值得关注的,并将在下一节中讨论。

6.5 广泛的影响

  1. 语言模型对社会有广泛的有益的 application,但它们也有潜在的有害的 application 。这里,我们着重讨论语言模型的潜在危害,并不是因为我们认为危害一定更大,而是为了研究和减轻危害。像GPT-3 这样的语言模型所带来的更广泛的影响是很多的,这里我们主要关注两个主要问题:

    • 潜在地故意滥用GPT-3等语言模型。
    • GPT-3 等模型中的 biasfairnessrepresentationissue

    我们还简要地讨论了能源效率energy efficiency 问题。

6.5.1 滥用语言模型

  1. 语言模型的恶意使用在某种程度上很难预测,因为它们往往涉及在一个非常不同的环境中重新利用语言模型,或者用于与研究人员意图不同的目的。为了帮助解决这个问题,我们可以从传统的安全风险评估框架security risk assessment framework 来考虑,该框架概述了一些关键步骤,如识别威胁和潜在影响、评估可能性,以及确定将风险作为可能性和影响的组合。我们讨论三个因素:潜在滥用的application 、威胁行主体 threat actor 、外部激励结构external incentive structure

  2. 潜在滥用的application :社会上,任何依赖于生成文本的有害活动都可以被强大的语言模型所增强。这方面的例子包括错误信息misinformation、垃圾邮件、网络钓鱼、滥用法律和政府程序、欺诈性的学术论文写作、以及社交工程的假托social engineering pretexting(假托是一种社交工程的形式,其中个体通过欺诈来获取特权数据)。许多这些application 的瓶颈在于写出足够高质量的文本。能产生高质量文本的语言模型可以降低开展这些活动的现有障碍,并提高其效果。

    语言模型滥用的潜力随着文本合成质量的提高而增加。在前面章节中,GPT-3 有能力生成几段人们难以区分的合成内容,这代表了这方面的一个令人担忧的里程碑。

  3. 威胁主体分析:威胁主体actor 可以按照技能和资源水平来组织,从低级或中级技能和资源的主体(他们可能能够建立一个恶意产品)、到 ”高级持续性威胁“ advanced persistent threats: APTs(他们具有长期规划的高技能和资源丰富的团体,如国家支持的)。

    • 为了了解中低技能的主体是如何思考语言模型的,我们一直在监测那些经常讨论 misinformation战术、恶意软件发布、以及计算机欺诈的论坛和聊天组。虽然我们确实发现在 2019 年春季首次发布 GPT-2 之后有大量关于滥用的讨论,但我们发现自那时以来,实验的实例较少,也没有成功的部署。此外,这些滥用的讨论与媒体对语言模型技术的报道相关联。由此,我们评估,来自这些主体的滥用威胁并不紧迫,但可靠性的重大改进可能会改变这种情况。
    • 由于 APT 通常不在公开场合讨论,我们已经向专业的威胁分析人员咨询了涉及使用语言模型的可能APT活动。自GPT-2发布以来,在可能通过语言模型获得潜在收益的操作方面,我们没有看到明显的区别。评估结果是:语言模型可能不值得投入大量资源,因为没有令人信服的证据表明目前的语言模型明显优于目前生成文本的方法,而且 targetingcontrolling 语言模型内容仍处于非常早期的阶段(即,语言模型的生成内容不受控)。
  4. 外部激励结构:每个威胁主体团队也有一套战术tactics、技术techniques 和程序proceduresTTPs),他们依靠这些来完成他们的规划agendaTTPs受到经济因素的影响,如可扩展性和部署的便利性。网络钓鱼在所有团体中都非常流行,因为它提供了一种低成本、低努力、高收益的方法来部署恶意软件和窃取登录凭证login credentials 。使用语言模型来增强现有的 TTP,可能会导致更低的部署成本。

    易用性是另一个重要的激励因素。拥有稳定的基础设施对 TTP 的采纳 adoption 有很大影响。然而,语言模型的输出是随机的,尽管开发者可以约束语言模型的输出(例如使用 top-k截断),但在没有人类反馈的情况下,模型无法稳定地执行。如果一个社交媒体的虚假信息机器人disinformation bot99% 的时间里产生可靠的输出,而在1%的时间里产生不连贯的输出,这仍然可以减少操作这个 bot 所需的人力成本。但是,仍然需要人工过滤输出,这限制了操作的scalable

    根据我们对这个模型的分析以及对威胁主体和环境的分析,我们怀疑人工智能研究人员最终会开发出足够一致的和可引导steerable的语言模型,从而使恶意主体对它们更感兴趣。我们预计这将为更广泛的研究界带来挑战,并希望通过缓解研究、原型设计、以及与其他技术开发人员协调等等的组合来解决这个问题。

6.5.2 Fairness, Bias, and Representation

  1. 训练数据中存在的bias 可能导致模型产生刻板stereotyped 的或偏见prejudiced 的内容。这是令人担忧的,因为model bias 可能会以不同的方式伤害相关群体的人。我们对模型中的bias 进行了分析,以便更好地理解GPT-3fairness, bias, and representation 方面的局限性。这里我们专注于与性别、种族和宗教有关的bias

    大体上,我们的分析表明:

    • 互联网训练的模型具有internet-scale bias
    • 模型倾向于反映其训练数据中存在的刻板印象 stereotype
  2. 性别:在我们对性别bias 的调查中,我们重点关注性别gender 和职业occupation 之间的关联。我们发现,一般而言,当给定 The {occupation} was a (中性变体 Neutral Variant)这样的上下文时,职业后面跟随男性标识符identifier 的概率要高于女性(换句话说,它们是偏向男性的)。

    在我们测试的 388 种职业中,83% 的职业更有可能被GPT-3 用男性标识符来跟随。例如,我们通过向模型提供诸如 The detective was a 的上下文,然后观察模型后续使用男性标识词(如:男人、男性等)或女性标识词(如:女人、女性等)的概率来衡量。具体而言,显示出较高教育水平的职业,如立法者legislator 、银行家或名誉教授,以及需要艰苦体力劳动的职业,如泥瓦匠、磨坊主和警长,都严重倾向于男性。更有可能被女性标识符跟随的职业包括助产士、护士、接待员、管家等。

    我们还测试了当我们把数据集(这里仅修改测试集,不修改预训练数据集)中每个职业的上下文转变为 The competent {occupation} was a(有胜任能力的变体 Competent Variant ),以及把上下文转变为 The incompetent {occupation} was a(无胜任能力的变体 Incompetent Variant )时,这些概率如何变化。我们发现:

    • 当以 The competent {occupation} was a 来提示时,大多数职业后面的男性标识符的概率甚至高于 Neutral Variant 的情况。
    • 当以 The incompetent {occupation} was a 来提示时,大多数职业仍然倾向于男性,其概率与我们最初的Neutral Variant 相似。

    平均的 occupation bias 衡量为:

    1njobsjobslogP(female | Context)P(male | Context)

    那么平均的 occupation bias 对于 Neutral Variant-1.11、对于 Competent Variant-2.14、对于 Incompetent Variant-1.15

    我们还使用两种方法对 Winogender 数据集进行了代词解析pronoun resolution ,这进一步证实了GPT-3 模型将大多数职业与男性联系起来的趋势。

    • 一种方法是测量模型正确分配代词为职业或参与者participant 的能力。例如,我们给模型提供了一个上下文,如 The advisor met with the advisee because she wanted to get advice about job applications. 'She' refers to the ,并在两个可能的选项(Occupation Option: advisor; Participant Option: advisee)中找到了概率最低的选项。

      职业和参与者的词汇往往有与之相关的 societal bias,比如假设大多数职业者默认为男性。我们发现,语言模型学习了其中的一些bias ,如倾向于将女性代词而不是男性代词与参与者联系起来。GPT-3 175B 在这项任务中拥有所有模型中最高的准确性(64.17%)。在 Occupant sentences (正确答案是 Occupation 选项的句子)中,GPT-3 175B 也是唯一一个对女性的准确率(81.7%)高于对男性的准确率的模型(76.7%)。这提供了一些初步证据,表明在bias issue 上,大模型比小模型更鲁棒。

    • 我们还进行了共现 co-occurrence 测试,即分析哪些词可能出现在其他预选词pre-selected word 的附近。 我们创建了一个模型输出样本集,对数据集中的每个prompt 生成 800个长度为50 的输出,温度为1top-p = 0.9 。对于性别,我们有诸如 He was veryShe was veryHe would be described asShe would be described asprompt

      我们使用一个现成的POS tagger 查看了top 100 最受欢迎的词语中的形容词和副词。我们发现,女性更经常使用 beautifulgorgeous 等以外表为导向的词语来描述,而男性则更经常使用范围更广的形容词来描述。

      下表显示了模型中 top 10 最受欢迎的描述性词语,以及每个词语与代词指示器 pronoun indicator 共现的原始次数。“最受欢迎” 表示那些最偏向于某一类别的词,与其他类别相比,它们的共现较高。为了正确看待这些数字,我们还包括了每个性别的所有 qualifying word的平均共现次数。

  3. 种族:为了研究 GPT-3 中的种族偏见racial bias ,我们在模型中加入了一些prompt ,如:The {race} man was veryThe {race} woman was veryPeople would describe the {race} person as ,并为上述每个prompt 生成了 800个样本,其中 {race} 被一个表示种族类别(如白人White 或亚洲人Asian )的术语取代。然后,我们测量生成的样本中的单词共现word co-occurrence。鉴于先前的研究表明,当改变职业等特征时,语言模型会产生不同情感的文本,我们探索了种族对情感的影响。我们使用Senti WordNet 测量了与每个种族共现的词语的情感。每个单词的情感从100-100 不等:正的分数表示positive word (如wonderfulness: 100amicable: 87.5),负的分数表示negative word(如wretched: -87.5horrid: -87.5),0分表示中性词(如slopingchalet)。

    应该注意的是,我们明确提示prompting模型谈论种族,这反过来又产生了聚焦种族特征的文本。这些结果不是来自于模型在自然环境下谈论种族,而是在一个实验环境中谈论种族。

    此外,由于我们是通过简单地查看单词的共现来测量情感的,所产生的情感可以反映社会历史因素。例如,与奴隶制的讨论有关的文本经常会有负面的情感,这可能导致在这种测试方法下的统计结果与负面的情感有关。

    在我们分析的模型中,Asian 的情感分一直很高,它在7个模型中的3个中排在第一位。另一方面,Black 的情感分一直很低,在7个模型中的5个中排名最低。这些差异在较大的模型规模中略有缩小。这一分析让我们了解到不同模型的bias ,并强调需要对情感、实体和输入数据之间的关系进行更复杂的分析。

  4. 宗教:我们研究了哪些单词与无神论Atheism、佛教Buddhism、基督教Christianity、印度教Hinduism、伊斯兰教Islam和犹太教Judaism相关的宗教术语共现。我们对每个 prompt 产生 800 个长度为50的模型输出,其中温度为1top p = 0.9。针对上述六个宗教类别中的每一个,我们的prompt{Religion practitioners} are ,例如 Christians are 。然后,我们让模型自然地进行补全completion ,并创建了一个这种 completion 的语料库,以研究单词的共现。下面是该模型输出的一个例子:

    与种族类似,我们发现模型对宗教术语进行关联从而表明有一些倾向性。例如,对于伊斯兰教,我们发现诸如斋月ramada、先知prophet、清真寺mosque等单词的共现比其他宗教高。我们还发现,诸如暴力violen、恐怖主义terrorism、恐怖分子terrorist等单词在伊斯兰教中的共现高于其他宗教,并且在GPT-3中,这些单词是伊斯兰教最受欢迎的top 40 个单词。

  5. 进一步的 biasfairness 挑战:我们提出这个初步分析,是为了分享我们发现的一些bias ,以激励进一步的研究,并强调在大规模生成模型中刻画bias 的内在困难。我们期望这将是我们持续研究的一个领域,并很高兴与社区讨论不同的方法论。 我们认为本节的工作是主观的路标:我们选择了性别、种族和宗教作为出发点,但我们承认这种选择有其固有的主观性。我们的工作受到了关于描述模型属性以开发informative 标签的文献的启发,例如来自《Model cards for model reporting》的模型报告的Model Card

    最终,重要的不仅仅是刻画语言系统中的bias,而且要进行干预。这方面的文献也很丰富,所以我们只对大型语言模型特有的未来方向提供一些简单的评论。为了给通用模型的effective bias prevention铺平道路,有必要建立一个 common vocabulary ,将这些模型的normativetechnicalempirical 的关于缓解 bias 的挑战联系起来。缓解工作不应该纯粹以指标驱动的目标来 ”消除“ bias ,因为这已被证明有盲点,而是以整体的方式来处理。

6.5.3 能源使用

  1. 实际的大规模预训练需要大量的计算,而这是能源密集型的:训练GPT-3 175B 在预训练期间消耗了几千 petaflop/s-day的计算,而 1.5B 参数的 GPT-2 模型只需要几十 petaflop/s-day,如下图所示。这意味着我们应该认识到这种模型的成本和效率。

    下图中,尽管 GPT-3 3BRoBERTa-Large355M参数)几乎大10倍,但两个模型在预训练期间都花费了大约 50 petaflop/s-day 的计算。

  2. 大规模预训练的使用也提供了另一个视角来看待大型模型的效率:我们不仅要考虑训练模型的资源,还要考虑这些资源是如何在模型的生命周期内摊销的,这些资源随后将被用于各种目的,并针对具体任务进行微调。尽管像 GPT-3 这样的模型在训练过程中会消耗大量的资源,但一旦训练完成,它们的效率就会出奇的高:即使使用完整的 GPT-3 175B,从一个训练好的模型中生成 100 页的内容也只需要 0.4千瓦-小时的成本,或者只需要几分钱的能源成本。

    此外,像模型蒸馏这样的技术可以进一步降低这类模型的成本,使得我们采用这样的一种范式 paradigm:训练单一的大规模模型,然后创造更有效的版本从而用于适当的环境。

    随着时间的推移,算法的进步也会自然而然地进一步提高此类模型的效率,这与图像识别和神经机器翻译中观察到的趋势相似。

6.6 附录

6.6.1 Common Crawl 过滤的细节

  1. 我们采用了两种技术来提高 Common Crawl 数据集的质量:过滤Common Crawl 、模糊去重 fuzzy deduplication

    • 过滤Common Crawl :为了提高 Common Crawl 的质量,我们开发了一种自动过滤的方法来去除低质量的文档。我们认为原始的WebText 是高质量文档,然后训练了一个分类器来区分WebText 和原始的Common Crawl。然后,我们使用这个分类器对原始的Common Crawl 进行重新分类,优先处理那些被分类器预测为质量较高的文档。

      该分类器是使用逻辑回归分类器训练的,其特征来自 Spark 的标准的 tokenizerHashingTF

      • 对于正样本,我们使用了精心处理的数据集,如WebTextWikiedia 和我们的网络书籍语料库。
      • 对于负样本,我们使用未经过滤的Common Crawl

      我们使用这个分类器对 Common Crawl文档进行评分。如果满足以下条件,则对 Common Crawl 中的文档进行保留:

      np.random.parato(α)>1document-score

      其中我们选择了α=9$ \alpha = 9 $ ,以便保留大部分被分类器打高分的文档,但是仍然包含一些 out of distribution 的文档。α$ \alpha $ 的选择是为了与我们的分类器在 WebText 上的分数分布相匹配。我们发现这种重新加权re-weighting提高了数据质量(数据质量是由一系列 out-of-distribution的、生成式文本样本的损失所衡量)。

    • 为了进一步提高模型质量,防止过拟合(随着模型容量的增加,过拟合变得越来越严重),在每个数据集中,我们使用SparkMinHashLSH 实现了10hash ,使用与上述分类相同的特征,模糊去重文档(即移除与其他文档高度重叠的文档)。我们还模糊地fuzzilyCommon Crawl 中删除了WebText。总体而言,这使数据集的大小平均减少了 10%

    在对重复性和质量进行过滤后,我们还部分删除了benchmark 数据集中出现的文本。

6.6.2 模型训练的细节

  1. 所有版本的 GPT-3 的训练配置:

    • 使用β1=0.9,β2=0.95,ϵ=108$ \beta_1 = 0.9, \beta_2 = 0.95, \epsilon = 10^{-8} $ 的 Adam 优化器。
    • 将梯度的 global norm 裁剪为不超过1.0
    • 使用余弦学习率,其中在 260Btoken 之后学习率降低到最大值的 10% ,并以这个学习率继续训练。
    • 在刚开始的 3.75 亿个 token,有一个线性的学习率 warmup
    • 在刚开始的 4B ~ 12Btoken 中,我们逐渐将 batch size 从一个较小的值(32k token)线性地增加到 full value (这个 full value 取决于模型的大小)。
    • 在训练过程中,我们对数据进行无放回采样(直到到达一个 epoch 的边界),从而尽量减少过拟合。
    • 所有模型都使用 0.1weight decay 来提供少量的正则化。
  2. 在训练过程中,我们总是在完整的nctx=2048$ n_\text{ctx}= 2048 $ 个 token context window 的序列上进行训练。当文档短于 2048 token 时,我们将多个文档打包成一个序列,以提高计算效率。有多个文档的序列不以任何特殊的方式进行mask ,而是用一个特殊的文本结束符来划分序列中的文档,从而为语言模型提供必要的信息,从而推断出由这个特殊的文本结束符分开的context 是无关的。

6.6.3 测试集污染研究的细节

  1. 初始的训练集过滤:我们试图通过搜索所有测试集/验证集和我们的训练数据之间的13-gram 重叠,从而在训练数据中删除出现在benchmark 中的文本。我们删除了命中的 13-gram 以及它周围的200个字符的窗口,将原始文件分割成碎片。出于过滤的目的,我们将 gram 定义为一个小写的、以空格为界的、没有标点符号的单词。

    • 长度小于200个字符的碎片被丢弃。
    • 被分割成10个以上碎片的文件被认为是被污染的,并被完全删除。
    • 最初,只要命中了一次 13-gram 我们就删除了整个文件,但这过度地惩罚了长文件,如书籍的 false positive (可能测试集文章仅引用了一本书中的一句话而已)。
    • 我们忽略了与10 篇以上训练文档命中的13-gram ,因为检查显示这些 13-gram 大多包含常见的短语、法律模板或类似的内容。我们希望模型能够学习这些,而不是移除这些重叠。
  2. 重叠方法论:对于我们在前文中的 benchmark overlap analysis ,我们使用可变单词数量 N 来检查每个数据集的重叠情况,其中N 是以单词为单位的5% 分位的样本长度(即,5% 的样本低于该长度),忽略了所有的标点符号、空白和大小写。

    • 由于在较低的 N 值下会出现虚假碰撞spurious collision,我们在非合成任务中使用 N = 8 的最小值。
    • 出于性能方面的考虑,我们为所有任务设定了N = 13的最大值。

    下表显示了N值和标记为 dirty 的数据量。我们将 dirty 样本定义为与任何训练文档有任何N-gram重叠的样本,而 clean 样本是没有碰撞的样本。

    GPT-2使用 bloom filter 计算测试集污染的概率边界不同,我们使用 Apache Spark 计算所有训练集和测试集的精确碰撞。我们计算了测试集和我们完整的训练语料库之间的重叠,尽管我们只在 ”训练数据集“ 这一节中对40% 的过滤后的 Common Crawl 文档进行了训练。

    每个 epoch 采样了 44% 的过滤后 Common Crawl 文档。

    由于这个分析所揭示的一个错误,上述的过滤在长文档(如书籍)上失败了。由于成本的考虑,在训练数据集的修正版上重新训练模型是不可行的。因此,几个语言建模 benchmarkChildren’s Book Test: CBT 几乎完全重叠,因此没有包括在本文中。

    下表为从最 dirty 到最 clean 排序的所有数据集的重叠统计。如果一个数据集的样本与我们预训练语料库中的任何文档有一个N-gram碰撞,我们就认为该样本是脏的。其中:

    • Relative Difference Clean vs All 表示在 benchmark 中只包含 clean 样本与包含所有有本之间的性能变化百分比。
    • Count 表示样本数量,Clean percentage 表示 clean 样本占所有样本的百分比。
    • Acc/F1/BLEU 表示对应的评估指标。

    这些分数来自于不同的随机数种子,因此与本文中其他地方的分数略有不同。

  3. 重叠结果:为了了解看过一些数据后对模型在下游任务中的表现有多大帮助,我们通过dirtiness过滤每个验证集和测试集。然后,我们对clean-only 样本进行评估,并报告clean score 和原始得分之间的相对百分比变化。

    • 如果clean score 比原始得分差1%2% 以上,这表明模型可能对它所看到的样本过拟合。
    • 如果clean score 明显更好,我们的过滤方案可能需要尽可能过滤掉 dirty 样本。

    对于那些包含来自网络的背景信息background information (但不是answer 信息)的数据集(比如SQuAD,它来自维基百科)或长度小于8个单词的样本(我们在过滤过程中忽略了这些样本,除了 words crambling 任务会考虑过滤这些样本),这种重叠度量往往显示出很高的误报率。

    一个例子是DROP 数据集,这是一个阅读理解任务,其中94% 的样本是 dirty 的。回答问题所需的信息在一段话中(这段话被馈入模型),所以在训练集中看到了这段话而没有看到问题和答案并不意味着构成作弊。我们确认,每个匹配的训练文件都只包含源段落,而没有数据集中的问题和答案。 对性能下降的更可能的解释是:过滤后剩下的 6% 的样本具有和dirty 样本略有不同的分布。

    即,DROP 任务中,过滤后剩下的样本更难。

    下图显示,随着数据集的污染程度增加(从 x 轴的 100%0% ),clean/all fraction的方差也在增加,但没有明显的偏向于改善或降低性能。这表明,GPT-3 对污染相对不敏感。

6.6.4 训练语言模型的计算量

  1. 下图给出了语言模型训练的近似计算量。作为一个简化的假设,我们忽略了注意力操作,因为对于这些模型而言,注意力操作通常占用不到总计算量的10%

    计算量结果可以下表中看到,并在表的标题中进行了解释。

    • 最右列,先看每个训练 token 的参数量。由于T5 使用的是encoder-decoder 模型,在前向传播或反向传播过程中,每个token 只有一半的参数是活跃的。
    • 然后我们注意到:在前向传播中,每个token 都参与了每个活跃参数的一次加法和一次乘法(忽略了注意力)。然后我们再加上一个3 倍的乘数,以考虑到反向传播(因为计算paramsloss$ \frac{\partial \text{params}}{\partial\text{loss}} $ 和actsloss$ \frac{\partial \text{acts}}{\partial\text{loss}} $ 使用的计算量与前向传递相似)。
    • 结合前面两个数字,我们得到每个参数每个token 的总运算量。我们用这个值乘以总的训练token 数量和总的参数量,得出训练期间使用的总flops 数。我们同时报告了flopspetaflop/s-day

6.6.5 合成新闻文章的人工质量评估

  1. 这里包含了测量人类区分GPT-3生成的合成新闻文章和真实新闻文章能力的实验细节。我们首先描述了对200 个单词的新闻文章的实验,然后描述了500 个单词的新闻文章的初步调查。

  2. 参与者:我们招募了718 名参与者来参加6个实验。97名参与者因未能通过 internet check question 而被排除,剩下的共有621名参与者:343名男性,271名女性,以及7名其他。

    • 参与者的平均年龄为38岁。
    • 所有参与者都是通过Positly招募的,Positly拥有一份来自Mechanical Turk的高绩效工作者白名单。
    • 所有参与者都是美国人,但没有其他方面的限制。
    • 参与者的报酬是12美元,根据试运行确定的60分钟的任务时间估算。
    • 为了确保每次实验测验的参与者样本都是独一无二的,参与者不允许参加一次以上的实验。
  3. 程序和设计:我们任意选择了2020年初出现在 newser.com25篇新闻文章。我们使用文章的标题和副标题来产生125M350M760M1.3B2.7B6.7B13.0B200BGPT-3)个参数的语言模型的输出。每个模型对每个问题产生五个输出,并自动选择字数最接近人类写的文章的输出。这是为了尽量减少文本长度对参与者判断的影响。每个模型的输出程序都是一样的,只是去掉了 intentionally bad control model ,如正文中所述。

    在每个实验中,一半的参与者被随机分配到 quiz A,一半被随机分配到 quiz B。每个quize25 篇文章组成:一半(12-13)是人写的,一半(12-13)是模型生成的。

    • quiz A 中人写的文章在 quiz B 被模型自动生成。
    • quiz B 中人写的文章在 quiz A 被模型自动生成。

    测验问题的顺序对每个参与者都是随机的。参与者可以留下评论,并被要求说明他们以前是否看过这些文章。参与者被要求在测验期间不要查找文章或其内容,在测验结束时被问及他们在测验期间是否查找过任何东西。

  4. 统计学测试:为了比较不同运行中的平均值,我们对每个模型与control model进行了独立组的 two-sample t-test 。这是在Python中使用scipy.stats.ttest_ind 函数实现的。在绘制参与者平均准确度与模型大小的regression line 时,我们拟合了一个axb$ ax^{-b} $ 形式的幂律。95% 的置信区间是从样本平均值的 t 分布中估计出来的。

  5. 时间统计:在正文中,我们讨论了这样的发现:随着我们的模型变大,人类参与者区分模型产生的和人类产生的新闻文章的能力也会下降。

    我们还发现,随着模型大小的增加,一组特定问题的平均时间也在增加,如下图所示。尽管参与者投入的时间增加,但准确率较低,这支持了更大的模型产生更难区分的新闻文章这一发现。下图中,虚线表示 controlmodel 。最佳拟合曲线是一个具 有95% 置信区间的对数尺度的线性模型。

  6. ~ 500 个单词的文章的初步调查: 我们通过Positly招募了160名美国参与者参加2 个实验(详情见下表)。我们随机选择了2019年底的12 篇路透社世界新闻文章,然后选择另一篇新闻(不在这 12 篇文章中)作为 GPT-3 175B 的上下文。然后,我们使用文章的标题和路透社的location ,从 GPT-3 175B160M control model 中生成 completion 。这些用于创建两个quiz,每个 quiz 由一半人写的和一半模型生成的文章组成。

6.6.6 来自 GPT-3 的额外样本

  1. GPT-3能很好地适应许多任务。作为一个例子,在下图中,我们展示了四个未经处理的样本,这些样本来自一个prompt ,建议模型以给定的标题(即,Shadow on the Way)并按照Wallace Stevens 的风格写一首诗。

    我们首先试验了几个prompt ,然后产生了四个没有额外编辑或选择的样本(在温度1下使用P=0.9$ P=0.9 $ 的nucleus sampling )。当模型开始写一个新的标题和 author heading 时,或进入散文评论时,completion 被截断。

6.6.7 任务措辞和规格的细节

  1. 这里给出了本文中所有任务的格式formatting 和措辞phrasing

6.6.8 所有模型规模在所有任务上的结果

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文