写在前面:
随着2018年ELMo、BERT等模型的发布,NLP领域进入了“大力出奇迹”的时代。采用大规模语料上进行无监督预训练的深层模型,在下游任务数据上微调一下,即可达到很好的效果。曾经需要反复调参、精心设计结构的任务,现在只需简单地使用更大的预训练数据、更深层的模型便可解决。因此NLP比赛的入手门槛也随之变低。新手只要选择好预训练模型,在自己数据上微调,很多情况下就可以达到很好的效果。最近终于从头疼的论文工作中抽离出来,左右无事便想着打个比赛,因此先看看最近预训练模型的进展。
参考文献:
【1】https://arxiv.org/abs/2003.08271
【2】https://mp.weixin.qq.com/s/kwKZfNSYTzc-PGKxTxm8-w
近年来,预训练模型(PTMs)的出现将自然语言处理(NLP)带入了一个新的时代。在这项综述中,我们提供了一个全面的PTMs调研。首先简要介绍了语言表示学习及其研究进展。然后,我们根据四种观点对现有的PTMs进行了系统的分类。接下来,我们将描述如何将PTMs的知识应用于下游任务。最后,我们概述了未来PTMs研究的一些潜在方向。本调查旨在为理解、使用和开发各种NLP任务的PTMs提供实际指导。
随着深度学习的发展,各种神经网络被广泛用于解决自然语言处理(NLP)任务,如卷积神经网络(convolutional neural networks, CNNs)[75,80,45]、递归神经网络(neural networks, RNNs)[160, 100]、基于图的神经网络(graphbased neural network, GNNs)[146, 161, 111]和注意力机制[6,171]等。这些神经模型的优点之一是能够缓解特征工程问题。非神经NLP方法通常严重依赖于离散的手工特征,而神经方法通常使用低维和稠密的向量(又称分布式表示)隐式地表示语言的语法或语义特征。这些表示是在特定的NLP任务中学习的。因此,神经方法使人们可以很容易地开发各种NLP系统。
尽管神经模型在NLP任务中取得了成功,但与计算机视觉(CV)领域相比,性能改进可能不那么显著。主要原因是,当前用于大多数监督的NLP任务的数据集相当小(机器翻译除外)。深度神经网络通常具有大量的参数,使其对这些小的训练数据过度拟合,在实际应用中泛化效果不佳。因此,许多NLP任务的早期神经模型相对较浅,通常只包含1 ~ 3个神经层。
最近大量的工作表明,在大型语料库上的预训练模型(PTMs)可以学习通用语言表示,这对后续的NLP任务是有益的,可以避免从零开始训练新模型。随着计算能力的发展,深层模型(即随着训练技能的不断提高,PTMs的体系结构由浅向深推进。第一代PTM的目标是学习好的词嵌入。由于下游任务不再需要这些模型本身,它们在计算效率方面通常非常肤浅,如Skip-Gram[116]和GloVe[120]。虽然这些预训练的嵌入可以捕获单词的语义含义,但它们是上下文无关的,不能捕获文本的高级概念,如语法结构、语义角色、回指等。第二代PTMs主要学习上下文词嵌入,如CoVe[113]、ELMo[122]、OpenAI GPT[130]、BERT[32]等。这些学习过的编码器仍然需要在上下文中通过下游任务来表示单词。此外,还提出了各种预训练的任务,以学习PTMs的不同目的。
这篇综述的贡献可以总结如下:
1. 全面调研。我们为NLP提供了PTMs的全面回顾,包括背景知识、模型架构、预训练任务、各种扩展、适应方法和应用。给出了典型模型的详细描述,进行了必要的比较,总结了相应的算法。
2. 新分类法。我们提出了一种基于自然语言处理的PTMs分类方法,该方法从四个不同的角度对现有的PTMs进行了分类:1)单词表示的类型;2) PTMs架构;3)培训前的任务类型;4)特定类型场景或输入的扩展。
3.资源丰富。我们在PTMs上收集了丰富的资源,包括开源系统、论文列表等。
4. 未来的发展方向。我们讨论并分析了现有PTMs的局限性。并提出未来可能的研究方向。
综述的其余部分组织如下。第2节概述了PTMs的背景概念和常用符号。第3节简要概述了PTMs,并澄清了PTMs的分类。第4节提供了PTMs的扩展。第5节讨论如何将PTMs的知识迁移到下游任务。第6节给出了PTMs的相关资源,包括开源系统、论文列表等。第7节介绍了跨各种NLP任务的应用程序集合。第8节讨论了当前的挑战并提出了未来的方向。第9节对本文进行了总结。
分布式表示的核心思想是用低维实值向量来描述文本的意义。而向量的每一个维度都没有对应的意义,而整体则代表一个具体的概念。图1说明了NLP的通用神经体系结构。词嵌入有两种:非上下文嵌入和上下文嵌入。它们之间的区别是,一个词的嵌入是否根据它出现的上下文动态变化。
非上下文嵌入 第一步是将离散的语言符号映射到分布式嵌入空间中。形式上,对于词汇表V中的所有单词,我们将其映射为一个V*E的矩阵,V就是词汇表大小,E就是每个单词的维度。这些嵌入和其他模型参数一起在任务数据上训练。这种嵌入有两个主要限制。第一个问题是嵌入是静态的,单词的嵌入与上下文无关,始终是相同的,因此,这些非上下文嵌入无法建模多义词。 第二个问题是OOV问题。为了解决这个问题,字符级单词表示或子单词表示被广泛用于许多NLP任务中,例如CharCNN,FastText和Byte-Pair Encoding(BPE)。
上下文嵌入 为了解决多义性和单词的上下文相关性质的问题,我们需要区分不同上下文中单词的语义。 给定文本x1,x2,...,xT,其中每个标记xt∈V是一个单词或子单词,则xt的上下文表示取决于整个文本。
大部分的神经上下文编码器可以分为三类:卷积模型、序列模型和基于图的模型。图2说明了这些模型的体系结构。
(1) 卷积模型。卷积模型采用单词在输入句中的嵌入,通过卷积运算将相邻词的局部信息聚合起来,从而获取单词的意义[80]。卷积模型通常易于训练,能够捕获局部上下文信息。
(2 )序列模型。序列模型通常采用rns(如LSTM[60]和GRU[21])来捕获单词的上下文表示。在实践中,双向RNNs被用来收集单词两边的信息,但其性能往往受到长期依赖问题的影响。
(3) 基于图模型。与上述模型不同的是,基于图的模型以单词为节点,学习单词之间具有预定义语言结构的上下文表示,如句法结构[146,161]或语义关系[111]。
随着深度学习的发展,模型参数的数量迅速增加。需要更大的数据集来充分训练模型参数并防止过度拟合。然而,对于大多数NLP任务来说,构建大规模的标记数据集是一个巨大的挑战,因为注释成本非常昂贵,特别是对于语法和语义相关的任务。
相比之下,大规模的未标记语料库相对容易构建。为了利用巨大的未标记文本数据,我们可以首先从它们那里学习良好的表示,然后将这些表示用于其他任务。最近的研究表明,借助从大型无注释语料库的PTMs中提取的表示,许多NLP任务的性能都有显著提高。
预训练的好处可以总结如下:
在大型文本语料库上的预训练可以学习通用语言表示并帮助完成后续任务。
预训练提供了更好的模型初始化,这通常会带来更好的泛化性能,并加速对目标任务的收敛。
预训练可以看作是一种正则化,以避免小数据[39]的过拟合。
略。
Language Modeling(LM)。给定一个序列输入,按顺序输出预测。
Masked Language Modeling(MLM)。松散地说,MLM首先从输入语句中屏蔽掉一些标记,然后训练模型以预测其余标记所掩盖的标记。
Sequence-to-Sequence MLM (Seq2Seq MLM)。 MLM通常作为分类问题解决。我们将屏蔽后的序列馈送到神经编码器,该编码器的输出向量会进一步馈送到softmax分类器中,以预测屏蔽后的令牌。或者,我们可以使用MLM的编码器-解码器(也称为序列到序列)体系结构,在这种体系结构中,编码器被提供了屏蔽序列,而解码器以自回归的方式顺序生成了屏蔽令牌。
Permuted Language Modeling (PLM)。尽管在预训练中广泛使用MLM任务,Yang等人声称,当模型应用于下游任务时,缺少用于MLM的预训练的某些特殊标记(如[MASK]),这导致了预训练和微调之间的差距。为了克服这个问题,置换语言建模(PLM)选择取代MLM的预训练目标。简而言之,PLM是一种对输入序列进行随机替换的语言建模任务。给定一个序列,从所有可能的排列中随机抽取排列。
Denoising Autoencoder (DAE) 。 去噪自动编码器(DAE)采用部分损坏的输入作为干扰项,旨在恢复原始的未失真输入。有几种方法可以破坏文本:
(1)令牌屏蔽:从输入中随机采样令牌,并将其替换为[MASK]元素。
(2)令牌删除:从输入中随机删除令牌。与令牌屏蔽不同,模型需要确定缺失输入的位置。
(3)文本填充:与SpanBERT一样,许多文本跨度也被采样并替换为单个[MASK]标记。每个跨度长度均来自泊松分布(λ= 3)。该模型需要预测跨度中缺少多少个令牌。
(4)句子置换:根据句号将文档分为多个句子,并以随机顺序对这些句子进行改组。
(5)文档轮换:随机均匀地选择一个令牌,然后旋转文档,使其以该令牌开头。该模型需要标识文档的实际开始位置。
Contrastive Learning(CL)。对比学习假设一些观察到的文本对在语义上比随机采样的文本更相似。CTL背后的想法是“通过比较学习”。与LM相比,CTL通常具有较少的计算复杂性,因此是PTM的理想替代训练标准。像我们熟悉的Replaced Token Detection (RTD) 、Next Sentence Prediction (NSP) 、Sentence Order Prediction (SOP) 都是CL的一种。
(题外话:这个图真的好详细啊,给大佬点赞)
为了明确现有PTMs与NLP之间的关系,我们构建了PTMs的分类法,该分类法从不同的角度对现有PTMs进行了分类: (1) PTMs使用的单词表示类型,(2) PTMs使用的主干网络,(3) PTMs使用的预训练任务类型,(4) 为特定类型的场景或输入设计的PTMs。图6显示了分类以及一些相应的代表性PTMs。
此外,表1详细区分了一些有代表性的PTMs。
由于PTM的巨大成功,重要的是要了解PTM捕获了哪些知识,以及如何从PTM中获取知识。大量文献分析了存储在预训练的非上下文和上下文嵌入中的语言知识和世界知识。直接说结论:1、上下文无关嵌入只能学习到语言知识,擅长预测生物分类特性(例如,狗是动物),但无法学习归因特性(例如,天鹅是白色的)。2、上下文相关嵌入可以同时学习到语言知识和世界知识。如BERT被证明:1)语言特征似乎在单独的语义和句法子空间中表示; 2)注意力矩阵包含语法表示; 3)BERT很好地区分了词义。
PTMs通常从通用的大型文本语料库中学习通用语言表示,但缺乏领域特定的知识。将来自外部知识库的领域知识整合到PTM中已被证明是有效的。外部知识范围从语言学[87,78,123,178],语义[92],常识[48],事实[199,123,101,188,182],到具体领域的知识[54]。
一方面,可以在预训练期间注入外部知识。但是,这些方法中的大多数在注入知识时都会更新PTM的参数,而在注入多种知识时可能会遭受灾难性的遗忘。为了解决这个问题,K-Adapter [178]通过为不同的预训练任务独立地训练不同的适配器来注入多种知识,从而可以不断地注入知识。
另一方面,人们可以将外部知识整合到预训练的模型中,而无需从头开始对其进行再训练。例如,K-BERT [101]允许在对下游任务进行微调时注入事实知识。 此外,Logan IV等[106]和Hayashi等[53]分别将语言模型扩展为知识图语言模型(KGLM)和潜在关系语言模型(LRLM),两者都允许以知识图为条件的预测。 这些新颖的以知识图谱为条件的语言模型显示了进行预训练的潜力。
由于PTMs在许多NLP任务上的成功,一些研究集中在获得PTMs的跨模态版本上。这些模型中的绝大多数是为一般的视觉和语言特征编码而设计的。这些模型是在一些巨大的跨模态数据语料库上进行预训练的,例如带有口语单词的视频或带有字幕的图像,结合扩展的预训练任务来充分利用多模态特征。VideoBERT[152]和CBT[151]是视频和文本的联合模型。为了获得用于预训练的视觉和语言标记序列,视频分别由基于cnn的编码器和现成的语音识别技术进行预处理。在处理后的数据上训练一个变压器编码器,以学习下游任务(如视频字幕)的视觉语言表示。此外,UniViLM[109]提出引入生成任务来进一步预训练下游任务中使用的解码器。
四种方式
模型剪枝:
模型剪枝是指删除神经网络的一部分(例如权重,神经元,层,通道,注意头等),从而达到减小模型大小并加快推理时间的效果。
量化:
量化是指将较高精度的参数压缩为较低精度。注意,量化通常需要兼容的硬件。
参数共享:
减少参数数量的另一种众所周知的方法是参数共享,它广泛用于CNN,RNN和Transformer [30]。 ALBERT [86]使用跨层参数共享和因式分解参数化来减少PTM的参数。
知识蒸馏:
知识蒸馏(KD)[57]是一种压缩技术,其中训练了一个称为学生模型的小模型以重现一个称为教师模型的大模型的行为。 在这里,教师模型可以是许多模型的集合,并且通常经过良好的训练。 与模型压缩不同,蒸馏技术通过一些优化目标从固定的教师模型中学习小型学生模型,而压缩技术旨在搜索稀疏的体系结构。通常,蒸馏机制可分为三种类型:从软目标概率进行蒸馏,从其他知识进行蒸馏以及对其他结构进行蒸馏。
尽管PTM从大型语料库中获取通用语言知识,但是如何有效地将其知识适应下游任务仍然是关键问题。
迁移学习[119]旨在使知识从源任务(或领域)适应目标任务(或领域)。 图4给出了迁移学习的示意图。
NLP中的迁移学习有很多类型,例如领域适应,跨语言学习,多任务学习等。 使PTM适应下游任务是顺序迁移学习任务,其中任务是顺序学习的,目标任务含有标记数据。
思考三个问题:
Choosing appropriate pre-training task, model architecture and corpus
Choosing appropriate layers
To tune or not to tune?
当前,有两种常见的模型迁移方式:特征提取(冻结了预训练参数)和微调(未冻结和微调了预训练参数)。 在特征提取方式中,将预训练的模型视为现成的特征提取器。 此外,重要的是要公开内部层,因为它们通常会编码最易传递的表示形式[124]。 尽管这两种方式都可以极大地使大多数NLP任务受益,但是特征提取方式却需要更复杂的特定于任务的体系结构。 因此,对于许多不同的下游任务,微调方法通常比特征提取方法更为通用和方便。 表4给出了适应性PTM的一些常见组合。
除了标准的微调之外,还有一些有用的微调策略。
两阶段微调
另一种解决方案是两阶段转移,它在预训练和微调之间引入了一个中间阶段。在第一阶段,将PTM转换为通过中间任务或语料库进行微调的模型。在第二阶段,将转移的模型微调到目标任务。 Sun等 [154]表明,对相关领域语料库的“进一步预训练”可以进一步提高BERT的能力,并在八个经过广泛研究的文本分类数据集上实现了最先进的性能。
多任务微调
Liu等[103]在多任务学习框架下对BERT进行了微调,这表明多任务学习和预训练是互补的技术。
使用额外的适配模块进行微调
微调的主要缺点是其参数效率低下:每个下游任务都有自己的微调参数。因此,更好的解决方案是在固定原始参数的同时将一些可微调的适配模块注入PTM。 Stickland和Murray [149]在单一共享BERT模型上配备了其他小的特定任务自适应模块,预计注意力层(PAL)。与PAL共享的BERT与GLUE基准测试上分别微调的模型匹配,参数减少了大约7倍。
其他
逐步解冻[62]而不是同时对所有层进行微调,也是一种从顶层开始逐渐解冻PTM层的有效方法。 Chronopoulou等 [19]提出了一种更简单的解冻方法,即顺序解冻,该方法首先仅微调随机初始化的任务特定层,然后解冻PTM的隐藏层,最后解冻嵌入层。受到广泛使用的集成模型成功的推动,Xu等人 [191]用两种有效的机制改进了BERT的微调:自集成和自蒸馏。通常,以上工作表明,可以通过更好的微调策略进一步激发PTM的效用。
应用基准、机器翻译、问答、情感分析、摘要、命名实体识别(由于博主今后研究方向主要是情感分析方面,所以这里仅翻译情感分析一项)。
BERT只需在SST-2上进行微调就可以胜过以前的最新模型,SST-2是广泛用于情感分析(SA)的数据集[32]。 Bataa和Wu [8]将BERT与迁移学习技术结合使用,并在日本SA中实现了最新技术。尽管他们在简单的情感分类中取得了成功,但直接将BERT应用于基于方面的情感分析(ABSA)(这是一项细粒度的SA任务),其改进并不明显[153]。为了更好地利用BERT的强大功能,Sun等人[153]通过将ABSA从单个句子分类任务转换为句子对分类任务来构造辅助句子。徐等[189]提出了后训练以使BERT从其源域和任务适应ABSA域和任务。此外,Rietzler等[137]通过分析具有ABSA性能的跨域事后训练的行为扩展了[189]的工作。 Karimi等[76]表明,经过对抗训练,可以进一步提高训练后的BERT的性能。宋等[148]添加了一个额外的池化模块,可以实现为LSTM或关注机制,以利用BERT中间层来实现ABSA。此外,李等[97]共同学习了面向端到端ABSA的方面检测和情感分类。对于情感迁移,吴等[186]提出了基于BERT的“Mask and Fill”。在屏蔽步骤中,模型通过屏蔽情感标记来使情感与内容分离。在填充步骤中,它使用BERT以及目标情感嵌入来填充掩盖的位置。
(1) PTMs的上界
目前,PTMs还没有达到其上限。现有的PTMs大多可以通过更多的训练步骤和更大的语料库来进一步完善。
通过增加模型的深度可以进一步提高NLP的技术水平,如Megatron-LM(83亿个参数,72个隐藏尺寸为3072和32个注意头的变压器层)和Turing-NLG(170亿个参数,78个隐藏尺寸为4256和28个注意头的Transformer层)。
通用型PTM一直是我们学习语言固有的通用知识(甚至是世界知识)的追求,但此类PTM通常需要更深入的体系结构、更大的语料库和更具挑战性的训练任务,这又进一步导致了更高的训练成本。然而,训练大模型也是一个具有挑战性的问题,需要更复杂、更高效的训练技术,如分布式训练、混合精度、梯度积累等。因此,更实际的方向是使用现有的硬件和软件设计更有效的模型架构、自我监督的训练前任务、优化器和训练技能。ELECTRA[22]是这个方向的一个很好的解决方案。
(2) 面向任务的预训练和模型压缩
在实践中,不同的下游任务需要不同的PTMs能力。PTMs与下游任务之间的差异通常表现在两个方面:模型体系结构和数据分布。较大的差异可能导致PTMs的益处可能不明显。尽管较大的PTM通常可以带来更好的性能,但一个实际问题是如何在特殊场景(如低容量设备和低延迟应用程序)中利用这些巨大的PTM。因此,我们可以为下游任务精心设计特定的模型架构和预训练任务,或者从现有的PTMs中提取部分特定于任务的知识。
此外,我们可以通过使用模型压缩等技术,用通用的现有PTM来教他们,而不是从头开始训练面向任务的PTM(参见4.3节)。虽然在CV[17]中,针对CNNs的模型压缩已经得到了广泛的研究,但针对NLP的PTMs的模型压缩才刚刚开始。Transformer 的全连接结构也使模型压缩更具挑战性。
(3) PTMs架构
Transformer已被证明是一种有效的预训练体系结构。然而,Transformer 的主要限制是它的计算复杂度,它是输入长度的平方。由于GPU内存的限制,目前大多数PTM不能处理512个标记以上的序列。打破这一限制需要改进Transformer的架构,比如Transformer- xl[27]。因此,为PTMs搜索更有效的模型体系结构对于捕获更长期的上下文信息非常重要。
深度架构的设计具有挑战性,我们可以从一些自动化方法中寻求帮助,如神经架构搜索(neural architecture search, NAS)[205]。
(4) 超越微调的知识迁移
目前,将PTMs的知识传递给下游任务的主要方法是微调,但其缺点是参数效率低下:每个下游任务都有自己的微调参数。一种改进的解决方案是对原有PTMs的参数进行修正,并为特定的任务添加小的可调自适应模块[149,61]。因此,我们可以使用一个共享的PTM来服务多个下游任务。事实上,从PTMs中挖掘知识可以更加灵活,如特征提取、知识提取[195]、数据扩充[185,84],利用PTMs作为外部知识[125]等。期望有更有效的方法。
(5) PTMs的可解释性和可靠性
虽然PTM的性能令人印象深刻,但其深层的非线性架构使得决策过程高度不透明。
近年来,可解释人工智能[4]已经成为人工智能领域的一个研究热点。与用于图像的CNN不同,由于Transformer的架构和语言的复杂性,解释PTMs更加困难。人们做了大量的工作(见3.3节)来分析PTMs中包含的语言和世界知识,这有助于我们以某种程度的透明性理解这些PMTs。然而,许多模型分析工作依赖于注意力机制,注意力对可解释性的有效性仍存在争议[66,142]。
此外,随着PTMs在生产系统中的广泛应用,PTMs的可靠性也成为一个备受关注的问题。深层神经模型容易受到对抗性样本的影响,这些例子可能会误导模型,使其产生一个特定的错误预测,而这种预测会受到来自原始输入的难以察觉的干扰。在CV中,对抗性攻击和防御被广泛研究。然而,由于语言的离散性,文本仍然面临着挑战。为文本生成对抗性样本需要具备以下品质:(1)不易被人类法官察觉,但容易被神经模型误导;(2)语法流利,语义与原输入一致。Jin等人[71]用对抗性的例子成功地在文本分类和文本蕴涵方面攻击了经过微调的BERT。Wallace等人[175]定义了通用的对抗触发器,当将模型连接到任何输入时,该触发器可以诱导模型产生特定目的的预测。有些触发器甚至会导致GPT-2模型生成带有种族主义色彩的文本。对PTM进行对抗性攻击的研究有助于我们了解它们的能力,从而充分暴露它们的弱点。Sun等人[155]的研究表明,BERT对拼写错误并不敏感。此外,针对PTMs的对抗防御也很有前途,它提高了PTMs的鲁棒性,使其对对抗攻击免疫。
总的来说,作为许多NLP应用中的关键组件,PTMs的可解释性和可靠性在很多方面还有待进一步的探索,这有助于我们理解PTMs是如何工作的,并为更好的使用和进一步的改进提供指导。