今天继续GPT系列论文, 这次是Language Models are Unsupervised Multitask Learners,即GPT-2,中文题目的意思是 语言模型是无监督多任务学习器。
自然语言任务,比如问答、机器翻译、阅读理解和摘要,是在任务相关数据集上利用监督学习的典型方法。作者展示了语言模型在训练名为WebText的新数据集时,即使是无监督,也能开始学习这些任务。基于一个文档和问题的情况下,语言模型生成的回答在CoQA数据集上达到了55 F1得分,超过了4个基准系统中的3个,是在没有利用剩下127000+个训练样本的情况下。
语言模型的容量对于零样本任务成功迁移至关重要,并且以对数线性的方式提高任务之间的性能。最大的GPT-2模型是一个1.5B参数的Transformer,在零样本设定下载8个测试语言模型数据集中的7个达到了SOTA结果。
如今,机器学习系统通过使用大量数据集、高容量模型和监督学习组合的方式,在其训练任务上表现出色。然而,这些系统对数据分布的细微变化和任务规范非常脆弱和敏感。当前的系统更适合被描述为精通单一任务的专家,而不是可以胜任各种任务的万事通。
作者怀疑在单一领域数据集上进行单一任务训练的流行是当前系统泛化能力不足的一个主要原因。在当前架构下,朝着健壮系统的进展可能需要在各种领域和任务上进行训练和性能测量。
多任务学习是提高整体性能的一个有潜力的框架。然而,在自然语言处理领域,多任务训练仍处于初级阶段。
目前在语言任务上表现最好的系统利用了预训练和监督下微调的组合。但这些方法仍然需要监督训练才能执行任务,当只有最少或没有监督数据可用时,另一条研究线路展示了语言模型在执行特定任务(如常识推理)和情感分析方面的潜力。
在本篇工作中,作者连接了这两条研究线路,并扩展了更通用的转移方法的趋势。展示了语言模型可以在零样本设定中执行下游任务,无需任何参数或架构修改。通过突出语言模型在零样本设定中执行各种任务的能力来展示这种方法的潜力。
作者方法的核心就是语言建模。语言建模通常被看成是从一组样本 ( x 1 , x 2 , ⋯ , x n ) (x_1,x_2,\cdots,x_n) (x1,x2,⋯,xn)中无监督地估计概率分布,其中每个样本由变长符号序列 ( s 1 , s 2 , ⋯ , s n ) (s_1,s_2,\cdots,s_n) (s1,s2,⋯,sn)组成。由于语言具有天然的顺序性,常常将符号的联合概率分解为条件概率的乘积:
p ( x ) = ∏ i = 1 n p ( s n ∣ s 1 , ⋯ , s n − 1 ) (1) p(x) = \prod_{i=1}^n p(s_n|s_1,\cdots,s_{n-1}) \tag 1 p(x)=i=1∏np(sn∣s1,⋯,sn−1)(1)
这种方法允许从形如 p ( s n − k , ⋯ , s n ∣ s 1 , ⋯ , s n − k − 1 ) p(s_{n-k},\cdots,s_n|s_1,\cdots,s_{n-k-1}) p(sn−k,⋯,sn∣s1,⋯,sn−k−1)的条件中进行采样和估计。由于Transformer的提出,对计算这些条件概率模型的表达能力有了显著提高。
学习执行单个任务可以在概率框架中表示为估计条件分布 p ( output ∣ input ) p(\text{output}|\text{input}) p(output∣input)。由于一个通用系统应该能执行许多不同的任务,即使对于相同的输入,系统不仅依赖于输入,还要依赖要执行的任务。即系统应该建模 p ( output ∣ input,task ) p(\text{output}|\text{input,task}) p(output∣input,task)。这在多任务和元学习的设定中已经被不同程度地形式化。
正如前人指出,语言模型提供了一种灵活的方式来指定任务、输入和输出。它们都可以表示为符号序列,例如,一个翻译训练样本可以写成序列(translate to french, english text, french text)。同理,阅读理解训练样本可以写成(answer the question, document, question, answer)。通过这种格式可以训练单个模型来推理和执行许多不同的任务。
互联网中包含大量的信息,可以无需交互式通信被动地获取。作者的推测是,具有足够容量的语言模型将开始学习推断和执行自然语言序列中展示的任务,以更好地预测它们,而不管它们的获取方式如何。如果语言模型能够做到这一点,实际上就是在执行无监督的多任务学习。作者通过分析语言模型在各种任务的零样本设置下的性能来测试这一点。
大多数先前的工作都是在单一文本领域中训练语言模型。作者的方法鼓励构建尽可能大和多样化的数据集。
一个可以获取多样和近乎无限文本数据的方法是爬虫,例如CommonCrawl,虽然这些数据比之前的语言建模数据集大很多个数量级,但它们存在严重的数据质量问题。
因此,作者创建了一个强调文本质量的爬虫,为了做到这一点,作者只爬取经过人工筛选/过滤的网页。从Reddit这个社交平台上爬取了所有至少获得3个karma的外部链接,karma这一指标可以被视为其他用户是否认为该链接有趣、存在教育意义、或仅有趣。
这样得到的数据集WebText包含了4500万个链接的文本子集,通过爬取这些链接并进行数据清理,获得了大于800万个文档,共约40G的文本。同时删除了作为其他数据集常见数据源的维基百科文档。
一个通用的语言模型应该能够计算(并生成)任何字符串的概率。字节对编码(BPE, Byte Pair Encoding)是字符和词级语言建模之间一种折中的方法,它有效地在常见符号序列的词级输入和不常见符号序列的字符级输入之间进行插值。虽然它的名称中包含字节,但实现上通常操作的是Unicode代码点,而不是字节序列,这些实现需要包括完整的Unicode符号空间,基础词汇量将超过13万,这是一个过大的词汇量。而字节级的BPE(byte-level BPE)只需要大小为256的基础词汇。然而,直接将BPE应用于字节序列会导致子优化的合并,因为BPE使用基于频率的贪心启发式方法来构建标记词汇,BPE包含许多常见单词的多个版本,比如dog.
、dog!
、dog?
。为了避免这种情况,作者阻止BPE在任何字节序列上跨字符类别进行合并。对空格添加了一个例外,这显著提高了压缩效率,同时只对多个词汇标记之间的单词进行了最小的分割。
这种输入表示方法使我们能将词级LM的经验优势与字节级方法的通用性结合起来。由于该方法可以为任何Unicode字符串分配概率,使得我们可以在任何数据集上评估我们的LM,不受预处理、分词或词汇大小的限制。
作者使用了基于Transformer的架构构建语言模型,该模型很大程度上遵循了GPT-1的细节,但做了一些修改。层归一化被移动到每个子块(sub-block)的输入处(Pre-LN),并在最后一个自注意力块之后添加了一个额外的层归一化。并且使用了一种修改后的初始化方法,考虑了模型深度上残差路径的累积。在初始化时,将残差层的权重缩放因子设置为 1 / N 1/\sqrt{N} 1/N,其中 N N N是残差层的数量。词汇表扩充到50274个词汇。将上下文大小从512扩大到1024,使用了更大的批量大小512。
训练和基准测试了四个不同大小的语言模型,如上表所示。最小的模型等同于原始的GPT模型,第二小的等同于BERT的最大模型,最大的模型称为GPT-2,比GPT模型的参数量多了一个数量级。
作为零样本任务迁移的初始步骤,作者对WebText 语言模型在其训练的主要任务——语言建模上的零样本领域迁移进行了评估。
WebText语言模型在不同领域和数据集之前的零样本迁移效果良好。在8个数据集的7个中改进了SOTA结果。在100万到200万个训练标记的小数据集(如Penn Treebanh和WikiText-2)上观察到了显著的改进。在用于测试长期依赖性的数据集(如LAMBADA和Children’s Book Test)上也观察到了显著的提升。
然而,在One Billion Word Benchmark数据集上仍然明显不如先前的工作。这可能是因为它既是最大的数据集,又具有一些最具破坏性的预处理方法——1BW的句子级乱序移除了所有的长距离结构。
儿童读物测试(Children’s Book Test,CBT) 旨在检查语言模型在不同类别的单词上的表现:命名实体、名词、动词和介词。CBT不像其他评估指标一样报告困惑度,而是报告在自动构建的填空测试上的准确性,测试的任务是预测10个可能的选择中省略的单词的正确答案。
如图2所示,随着模型规模的增加,性能稳步提高,并且在这个测试中缩小了与人类表现之间的差距。GPT-2在普通名词上取得了93.3%的最新最佳结果,并在命名实体上取得了89.1%的最佳结果。
LAMBADA数据集测试系统在文本中建模长距离依赖关系的能力。任务是预测句子的最后一个单词,这需要至少50个上下文标记才能让人类成功预测。GPT-2将最新研究的困惑度从99.8降低到8.6,并将语言模型在这个测试中的准确性从19%提高到52.66%。
Winograd模式挑战旨在通过衡量系统解决文本中歧义的能力来衡量系统进行常识推理的能力。最近,有研究者使用语言模型在这个挑战上取得了显著进展,通过预测具有更高概率的歧义解决方案来解决问题。作者遵循他们的问题表述,并在图3中使用完整和部分评分技术来展示模型的性能。GPT-2将最新研究的准确性提高了7%,达到70.70%。
CoQA测试阅读理解能力,以及模型回答依赖于对话历史的问题(如为什么)的能力。
当GPT-2在给定文档、相关对话历史和最后一个标记 A A A的条件下使用贪心解码时,在开发集上达到了55 F1的性能。这与4个基准系统中的3个的性能相匹配或超过,而这些基准系统是在127000多个手动收集的问答对上进行训练的。
目前监督学习的最佳方法是基于BERT的系统,其F1性能接近于人类的89。虽然GPT-2的性能对于没有任何监督训练的系统来说令人兴奋,但对其答案和错误的一些检查表明,GPT-2经常使用简单的基于检索的启发式方法。
在CNN和Daily Mail数据集上测试了GPT-2进行摘要生成的能力。为了引导摘要生成行为,作者在文章后面添加了文本TL;DR:
,并使用Top-k随机采样生成了100个标记,其中k = 2,以减少重复,并鼓励比贪心解码更抽象的摘要。
使用这100个标记中的前3个生成的句子作为摘要。在ROUGE 1,2,L指标上,生成的摘要只是开始接近经典神经网络基线的性能,并且刚好优于从文章中选择3个随机句子。当移除任务提示时,GPT-2的性能在综合指标上下降了6.4个点,这表明它可以通过自然语言来调用特定任务的行为能力。在摘要生成方面表现一般。
测试了GPT-2是否已经开始学习如何将一种语言翻译成另一种语言。为了帮助它推断出这是所期望的任务,做将语言模型的条件设置为一个样本对的上下文,格式为english sentence = french sentence
,然后在最后一个提示的english sentence =
,使用贪心解码从模型中进行抽样,并将第一个生成的句子作为翻译结果。
在WMT-14英法测试集上,GPT-2获得了5个BLEU分数,略低于以前在无监督词汇翻译研究中推断出的逐词替换双语词典的方法。在WMT-14法英测试集上,GPT-2能够利用其非常强大的英语语言模型表现得更好,达到了11.5个BLEU分数。这超过了几个无监督机器翻译基线,但仍远远不及当前最好的无监督机器翻译方法的33.5个BLEU分数。
测试语言模型中包含的信息的一种潜在方法是评估它在事实型问题中生成正确答案的概率。类似于翻译,语言模型的上下文样本以问答对的形式进行初始化,这有助于模型推断出数据集的短答案风格。当使用类似于SQUAD的阅读理解数据集上常用的完全匹配度量来评估时,GPT-2在问题回答上的准确率为4.1%。
GPT-2对其生成的答案赋予的概率是很好校准的,在它最有信心的1%的问题上准确率为63.1%。GPT-2在开发集问题上生成的30个最有信心的答案显示在表5中。与将信息检索与抽取式文档问题回答相混合的开放域问答系统的30%至50%的准确率范围相比,GPT-2的性能仍然要差得多。
许多工作致力于学习理解和对有监督和无监督预训练方法的表示进行批判性评估。研究结果表明,无监督任务学习是一个值得探索的有前途的研究领域。这些发现可能有助于解释预训练技术在下游自然语言处理任务中的广泛成功,因为作者展示了在极限情况下,其中一种预训练技术开始直接学习执行任务,而无需进行有监督的调整或修改。
在阅读理解任务中,GPT-2的性能在零样本设置下与有监督基线相媲美。然而,在其他任务(摘要)上,根据定量指标,其性能仍然很基础。尽管作为研究结果具有指导意义,但从实际应用的角度来看,GPT-2的零样本性能仍远未达到可用的水平。
作者研究了WebText语言模型在许多经典自然语言处理任务上的零样本性能,但还有许多其他任务可以进行评估。毫无疑问,仍有许多实际任务,GPT-2的性能仍然不如随机结果。即使在评估的常见任务中,如问答和翻译,只有当语言模型具有足够的容量时,它们才开始超过简单的基线。
虽然零样本性能为GPT-2在许多任务上的潜在性能建立了一个基准,但目前还不清楚微调的上限在哪里。在某些任务上,GPT-2的完全抽象输出与基于抽取式指针网络的输出有显著区别,后者目前在许多问答和阅读理解数据集上是最先进的。
当一个大型语言模型在足够大且多样化的数据集上进行训练时,它能够在许多领域和数据集上表现出色。GPT-2在8个测试的语言建模数据集中,有7个达到了最先进的性能。模型在零样本设置下能够执行的任务的多样性表明,训练容量高的模型在最大化足够多样化文本语料库的似然性时,开始学习如何执行许多令人惊讶的任务,而无需监督。
⭐ 作者提出了GPT-2,针对GPT-1进行了一些修改,基于无监督训练。使用Pre-LN的层归一化方法;在最后一个自注意力块后添加了一个额外的层归一化;修改了残差层权重缩放因子;扩充了词汇表;将上下文大小从512扩充到了1024;使用了更大的批次512。
作者开始注意到零样本设定下的表现,观察到语言模型的容量对性能至关重要。给最终性能超群的175B参数GPT-3一个启发。