Bert之路(三)OpenAI GPT||Improving Language Understanding by Generative Pre-Training
原文链接:https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
参考博客(仔细解释了transformer):刘岩:详解Transformer (Attention Is All You Need)
简枫:[整理] 聊聊 Transformer
两篇一篇把transformer拆开讲,一篇有代码,都是翻译国外的文章,双管齐下应该足够理解transformer了。paper中的分析研究部分,我始终没有理解,就不翻译了。翻译可能有些粗糙,我最后会把专栏中的所有论文写成一篇总结的。
Improving Language Understanding by Generative Pre-Training
摘要:
自然语言理解包括多种多样的任务,如文本蕴涵、问答、语义相似性评估和文档分类。尽管大型的未标注文本语料库非常丰富,但是用于学习这些特定任务的标注数据却很少。我们证明,在这些任务上有巨大的受益可以实现。我们通过在不同的未标注文本语料库上生成语言模型的预训练,然后对每个特定任务进行有区别的微调来实现。与以前的方法不同,我们在微调期间利用task-aware输入转换来实现有效的传输,同时只需要对模型架构进行最小的更改。我们展示了我们的方法在一系列自然语言理解基准上的有效性。我们的task-agnostic模型比那些专门为了任务训练的模型效果更好,在研究的12项任务中,有9项任务的技术水平有了显著提高。例如,我们在常识推理(故事完形填空测试)上取得了8.9 %的绝对进步,在问答( RACE )上取得了5.7 %的进步,在文本蕴涵( MultiNLI )上取得了1.5 %的进步。
1、Introduction
从原始文本中有效学习的能力对于减轻自然语言处理( NLP )中对监督学习的依赖至关重要。大多数深度学习方法需要大量人工标注的数据,这限制了它们在许多标注资源匮乏的领域的适用性[ 61 ]。在这些情况下,可以利用来自未标记数据的语言信息的模型为收集更多注释提供了一个有价值的替代方案,这可能会非常耗时和昂贵。此外,即使在有大量监督的情况下,以无监督的方式学习好的表达也能显著提高性能。迄今为止,这方面最引人注目的证据是广泛使用了预先训练好的单词嵌入[ 10、39、42 ]来提高[ 8、11、26、45 ]一系列NLP任务的性能。
然而,由于两个主要原因,利用来自未标记文本的超过单词级的信息是具有挑战性的。首先,不清楚哪种类型的优化目标在学习对迁移有用的文本表示时最有效。最近的研究考察了各种目标,如语言建模、机器翻译、和语篇连贯,每种方法在不同的任务上都优于其他方法。第二,对于将这些学习到的表达转移到目标任务的最有效方式,没有达成共识。现有技术包括对模型架构进行特定于任务的改变,使用复杂的学习方案和增加辅助学习目标的组合。这些不确定性使得开发有效的语言处理半监督学习方法变得困难。
在这篇论文中,我们探索了一种半监督的语言理解方法,它结合了无监督的预训练和监督微调。我们的目标是学习一种通用的表达,这种表达只要轻微的改变就能迁移至其他任务。1我们假设可以访问大量未标记的文本和几个带有人工标注训练示例的数据集(目标任务)。我们的设置不要求这些目标任务与未标记的语料库位于同一领域。训练过程分两步。首先,我们在未标记的数据上使用语言建模目标来学习神经网路模型的初始参数。随后,我们使用相应的监督目标使这些参数适应目标任务。
对于我们的模型体系结构,我们使用Transformer [ 62 ],它已经被证明在各种任务上表现出色。这种模型选择为我们提供了一个更结构化的memory来处理文本中的长期依赖关系,而不是像循环网路这样的方案,从而在不同的任务之间产生强大的传输性能。在传输过程中,我们利用从遍历式方法[ 52 ]中获得的特定于任务的输入自适应,该方法将结构化文本输入处理为单个连续的标记序列。正如我们在实验中所展示的,这些调整使我们能够有效地微调,对预先训练的模型的架构进行最小的改变。
我们评估了四种类型的语言理解任务——自然语言推理、问答、语义相似性和文本分类。我们的task--agnostic模型优于采用为每个任务特别设计的体系结构有区别的训练模型,在研究的12项任务中,有9项任务的技术水平有了显著提高。我们还分析了预训练模型在四种不同设置环境下的zero-shot行为,并证明它为下游任务获得了有用的语言知识。
2 Related Work
Semi-supervised learning for NLP 我们的工作大体上属于自然语言的半监督学习范畴。这种模式引起了极大的兴趣,它被应用于序列标签[ 24,33,57 ]或文本分类[ 41,70 ]等任务。最早的方法使用未标记的数据来计算单词级或短语级统计数据,然后这些数据被用作监督模型中的特征。在过去的几年里,研究人员已经证明了使用单词嵌入的好处,这些单词嵌入是在未标注的语料库上训练的,可以提高各种任务的表现。然而,这些方法主要传递单词级信息,而我们的目标是获取更高级别的语义。
最近的方法研究了从未标记的数据中学习和利用超过单词级的语义。短语级或句子级嵌入,可以使用未标记的语料库来训练,已经被用于将文本编码成各种目标任务的合适矢量表示,[ 28、32、1、36、22、12、56、31 ]。
Unsupervised pre-training 无监督预训练是半监督学习的一种特殊情况,其目标是找到一个好的初始化点,而不是修改监督学习目标。早期的工作探索了该技术在[ 20,49,63 ]图像分类和[ 3 ]回归任务中的应用。随后的研究表明,预训练作为一种正则化方案,能够在深度神经网路中更好地泛化。在最近的工作中,该方法已经被用来帮助训练深度神经网路完成各种任务。
最接近我们的工作包括使用语言建模目标对神经网路进行预训练,然后在监督下根据目标任务对其进行微调。[13]遵循这种方法来改进文本分类。然而,尽管预训练阶段有助于捕捉一些语言信息,但是他们对LSTM模型的使用将他们的预测能力限制在一个很短的范围内。相比之下,我们对transformer网路的选择允许我们捕捉更远距离的语言结构,正如我们的实验中所展示的。此外,我们还展示了我们的模型在更广泛的任务中的有效性。
当训练目标任务上的监督模型时,预训练的语言或机器翻译模型作为辅助特征。这涉及到每个单独目标任务的大量新参数,而在转移过程中,我们只需要对模型架构进行最小的更改。Auxiliary training objectives添加辅助无监督训练目标是半监督学习的一种替代形式。Collobert和Weston使用了多种辅助NLP任务,如POS标注、组块、命名实体识别和语言建模,以改进语义角色标注。最近,Rei [ 50 ]在其目标任务目标中增加了一个辅助语言建模目标,并展示了序列标注任务的性能提升。我们的实验也使用辅助目标,但是正如我们显示的,无监督的预训练已经学习了与目标任务相关的几个语言方面。
3 Framework
我们训练过程包括两步。第一步是去在大语料库上学习一个高容量的语言模型。第二步是微调过程,我们将模型应用到一个标记任务上。
3.1 Unsupervised pre-training
给定一个无监督语料库词u={u1,...,un},我们使用一个标准的语言模型对象来最大化下式: