论文标题:Language Models are Few-Shot Learners
论文链接:https://arxiv.org/abs/2005.14165
论文来源:OpenAI
自然语言处理已经从学习特定任务的表示和设计特定任务的架构转变为使用任务无关的预训练和任务无关的架构。这种转变导致了许多具有挑战性的NLP任务的实质性进展,如阅读理解、问题回答、文本蕴涵等。虽然目前模型架构和初始表示是任务无关的,但最终仍然有一个特定于任务的步骤,也就是在一个较大的标注数据集上微调以使得预训练模型能够执行特定的任务。
GPT-2的研究表明这个最终的步骤或许不是必要的。GPT-2能够以zero-shot的设置来迁移执行标准的自然语言处理任务,并不需要在一个数据集上进行微调。虽然这项工作看似很有前景,但最好的情况下其性能只与单个数据集上的一些有监督baseline相当。在大多数任务中,GPT-2的性能甚至远未达到简单的监督baseline的水平。不过GPT-2也展示出一个潜在的前进方向。这项研究展示了在模型规模跨域一个数量级时模型在迁移任务和语言模型损失上表现出的相对一致的log线性趋势。《Scaling Laws for Neural Language Models》这篇文章则以更加严谨的研究确认了这一趋势。在本文的研究中,我们测试了更高的数量级上是否仍然符合这个趋势。我们训练了一个最高1750亿规模参数量的自回归语言模型,即GPT-3,并且度量了其迁移学习的能力。
在本文的研究中,我们也明确和系统化了GPT-2中的方法。虽然GPT-2将他们的工作描述为“zero-shot任务迁移”,但他们有时会在上下文中提供相关任务的示例。由于使用的是有效的训练示例,这些情况更好地描述为“one-shot”或“few-shot”转移。本文调研了语言模型在one-shot、few-shot和zero-shot的设置下的表现。研究结果如下图所示。可以观察到one-shot和few-shot的性能优于真正的zero-shot设置的性能,基于这一想象,作者认为语言模型可以被理解为是一个元学习器(meta-learner),它将慢速的外循环基于梯度下降的学习与快速的“上下文内”学习相结合。这里的“外循环梯度下降学习”指的是模型在训练过程中通过大量数据进行梯度下降优化的过程,也就是模型在训练时学习到的知识和概念。而“上下文内学习”是指模型在执行任务时,通过给定的上下文信息(例如,任务描述和示例)快速调整其预测的过程。在zero-shot学习中,模型在没有任何特定任务示例的情况下,需要直接根据给定的输入来解决问题。而在one-shot和few-shot学习中,模型会在输入中获得一个或几个任务示例,这使得模型可以更好地理解和适应任务要求,从而实现更高的性能。将语言模型视为元学习器有助于解释它们在one-shot和few-shot学习中的表现。这种观点强调了语言模型在利用给定的任务示例和上下文信息中的快速学习能力,这有望推动未来的研究和应用。
对比结果如上面第三个折线图所示,本文还训练了一系列更小的模型(从1.25亿到130亿),在one-shot、few-shot和zero-shot的设置下对比他们的性能。在这三种设置下,模型在大多数任务上的性能与模型的容量之间保持平滑的递增关系。另外one-shot、few-shot和zero-shot的性能「差距」都会随模型容量的增大而递增,这或许表明更大的模型是更好的元学习器。
GPT-3的模型、数据和训练过程都类似于GPT-2,不同的是模型的大小、数据的规模和多样性以及训练的长度。GPT-3在特定任务上的学习(in-context learning)也类似于GPT-2,只不过GPT-3更系统化地探索了不同的设置,包括:
「微调(Fine-Tuning, FT)」:通过在成百上千的特定任务的有监督数据上训练以更新预训练模型的参数。微调方法的主要优点是在多个benchmark上的强大性能,主要的缺点是需要特定于任务的额外大数据集、可能在分布之外(out-of-distribution)的数据上泛化能力较差、可能导致模型利用训练数据中的伪相关特征从而影响模型的实际性能。GPT-3主要关注语言模型任务无关的性能,没有进行微调实验。
「小样本(Few-Shot, FS)」:模型在推断阶段被给予一些相关任务的示例,但不会更新模型参数。一个典型的示例包括上下文和期望的补全(例如,一个英文句子和它的法文翻译)。少数示例学习通过提供K个上下文和补全的示例,然后给出一个最终的上下文示例,模型需要提供相应的补全。作者将设置在到的范围内,因为模型的上下文窗口()可以容纳这么多示例。小样本设置的优点是大大减少了对特定任务数据的需求,缺点是迄今为止,这种方法的结果要比最先进的微调模型差很多,另外仍然需要少量的任务特定数据。这里的小样本学习与其他机器学习领域的小样本学习是相关的,它们都涉及基于广泛任务分布的学习,然后快速适应新任务。
「单样本(One-Shot, 1S)」:与小样本类似但是。
「零样本(Zero-Shot, 0S)」:与小样本类似但是不提供任何示例而是提供任务的自然语言描述。
GPT-3主要探究语言模型在one-shot、few-shot和zero-shot的设置下的表现。
模型架构
GPT-3沿用了GPT-2的模型结构和架构,包括修改后的初始化、预归一化和可逆的分词方法。不同之处在于GPT-3在Transformer的层中采用了交替的密集(dense)和局部带状稀疏(locally banded sparse)注意力模式,这与Sparse Transformer类似。了研究机器学习性能与模型大小之间的依赖关系,作者训练了8种不同大小的模型,从1.25亿个参数到1750亿个参数。最大的模型被称为GPT-3。通过这个参数范围,作者可以测试《Scaling Laws for Neural Language Models》论文中引入的规模定律。
训练数据集
本文按照以下方式创建了GPT-3的训练数据集:
①下载和筛选:作者下载了一个CommonCrawl版本,并基于与一系列高质量参考语料库的相似性进行筛选。CommonCrawl是一个包含了大量网页抓取数据的数据集。
②模糊去重:为了避免冗余并保持验证集作为过拟合准确度量的完整性,作者在数据集内部和跨数据集之间对文档级别进行了模糊去重。
③添加高质量参考语料库:为了提高训练数据的质量和多样性,作者将已知的高质量参考语料库添加到了训练数据中。这些参考语料库包括:1). 扩展版的WebText数据集:通过在更长时间内抓取链接收集到的数据,该数据集首次出现在《Scaling Laws for Neural Language Models》论文中。2). 两个基于互联网的图书语料库(Books1和Books2)。3). 英语维基百科。
训练过程
研究表明更大的模型通常可以使用更大的batch size,但需要较小的学习率。作者在训练过程中测量梯度噪声尺度,并用它指导批量大小的选择。为了在不耗尽内存的情况下训练更大的模型,作者采用了混合的模型并行方式,包括在每个矩阵乘法中的模型并行和在网络层之间的模型并行。所有模型都在V100 GPU上进行训练,这些GPU是高带宽集群的一部分。
评估
对于few-shot设置,评估时,从任务训练集中随机抽取个示例作为条件,根据任务需要,使用或个换行符分隔。LAMBADA和Storycloze没有监督训练集,因此从开发集中抽取条件示例,并在测试集上进行评估。有时,除了(或者在时,代替)示例,作者还使用自然语言prompt。在自由形式补全任务上,作者使用与eam search,beam width为,长度惩罚因子α。当测试集公开时,作者报告每个模型大小和学习设置(one-shot、few-shot和zero-shot)在测试集上的结果。当测试集为私有时,由于模型通常太大而无法放在测试服务器上,作者报告在开发集上的结果。
语言建模、完形填空和补全任务
问答任务
翻译
SuperGLUE
本文讨论了GPT-3的五个主要局限性:
①文本生成的问题:GPT-3生成的文本样本有时在文档层面上语义重复,较长篇幅的文本可能会失去连贯性,自相矛盾,或偶尔包含无关紧要的句子或段落。
②实验范围局限:作者的实验没有涉及双向架构(bidirectional architectures)或其他训练目标,如去噪(denoising)。这种设计决策可能导致在那些从双向性中获益的任务上性能较差,例如填空任务、需要回顾并比较两部分内容的任务(ANLI,WIC)或需要重新阅读或仔细思考长篇幅后生成简短答案的任务(QuAC,RACE)。
③目标函数的局限性:GPT-3的目标函数将每个token视为同等重要,缺乏区分重要性的概念。有研究表明,针对感兴趣的实体定制预测可能有益。此外,对于自监督目标,任务规范依赖于将期望的任务强制转化为预测问题。然而,有用的语言系统(如虚拟助手)可能更适合执行目标导向的行为,而不仅仅是预测。最后,大型预训练语言模型没有在其他领域(如视频或真实世界的物理互动)中建立基础,因此缺乏大量关于世界的上下文信息。
④纯自监督预测的限制:由于上述原因,纯自监督预测的扩展可能会遇到瓶颈,需要采用不同的方法进行补充。有希望的未来方向可能包括从人类那里学习目标函数、通过强化学习进行微调,或将图像等其他模态添加到模型中,以便提供基础和更好的世界模型。
⑤模型的部署:GPT-3的尺寸使得部署变得具有挑战性。在这种规模下,任务特定的蒸馏(Task-specific distillation)值得探讨。