预训练模型综述
摘要:近年来,预训练模型的出现将自然语言处理带入了一个新的时代。本文概述了面向自然语言处理领域的预训练模型技术。我们首先概述了预训练模型及其发展历史。并详细介绍自然语言处理领域的经典预训练模型,包括最经典的预训练模型技术和现在一系列新式的有启发意义的预训练模型。然后梳理了这些预训练模型在自然语言处理领域的优势和预训练模型的两种主流分类。最后,对预训练技术的未来发展趋势进行了展望。
关键词:深度学习、自然语言处理、预训练模型
1 引言
在学术界,预训练语言模型(PLMs,Pre-trained Language Models)的研究,已经成为了一个非常火爆的课题,最近几年迸发出许多可以改变整个自然语言处理(Neutral Language Processing,NLP)世界格局的文章,包括 BERT[1]、GPT2[2] 等,PLMs 技术逐渐发展成为了 NLP 领域不可或缺的主流技术。
所谓的语言模型就是建模一个句子存在的可能性,我们提到的 PTMs 指的是利用大量在人们生活中出现过的文本来训练,使模型在这些文本中,学习到每一个词或字出现的概率分布,以此来建模出符合这些文本分布的模型。语言模型的预料的标签就是它的上下文[3],这就决定了人们几乎可以无限制地利用大规模的语料来训练语言模型,这些大规模的预料,使 PTMs 得以获得了强大的能力,进一步在下游相关任务上展现了其出色的效果。
本文主要概述了自然语言处理领域的预训练模型技术。第 2 节按时间顺序简要概述了预训练语言模型的整个发展历史;第 3 节详细介绍自然语言处理领域的经典预训练模型;第 4 节小结了预训练模型的优点和其对比分类;第 5 节对自然语言处理领域的预训练语言模型的未来发展趋势进行展望。
2 预训练模型发展历史
早期的 PTMs 技术的目标是学习好的词嵌入。由于下游任务不再需要使用这些模型,因此它们在计算效率方面通常非常低,如 Skip-Gram[4] 和 GloVe[5]。虽然这些预先训练的词向量可以捕获单词的语义含义,但它们是上下文无关的,不能捕获文本的高级概念,如语法和语义等。
从 2016 年开始,大多数的研究都开始重视长时的上下文语义在词嵌入中的作用和语言模型在大规模语料上提前预训练这两个核心观点。Dai 和 Le[6] 使用语言建模和序列自编码来改善循环神经网络(RNN, Recurrent Neutral Language)的序列学习,可以被认为是现代 PTMs 的开端。它系统地阐述了上游预训练语言模型可以用于下游特定任务这个划时代的思想,并用一系列分类任务的实验来对比支持了这个观点。从此以后,PTMs 渐渐步入了人们的视野。
随后,Ramachandran et al.[7] 拓展了上述方法,提出了利用预训练的方法可以提高序列到序列(Sequence to sequence,Seq2Seq)模型 [8] 的准确性。它证明了在大量无监督数据上预训练模型,并在少量有监督数据上微调模型这个思路对 Seq2Seq 模型同样具有效性,并提出了 Seq2Seq 目标和语言模型目标联合训练以提高泛化能力的想法。使得 PTMs 技术进一步发展,展现了该方法在 NLP 领域中的通用性。
随着计算能力的发展,深层模型也不断提高,PTMs 的体系结构由浅入深推进。在 [6] 中,Dai 和 Le 使用的是LSTM[9],它解决了 RNN 在处理时序模型时『back-propagation through time』的困难。然而,单向的 LSTM 仅能学习上文的语义信息,于是,巴伊兰大学的学者在 [10] 中开创性地通过双向 LSTM 将上下文的语义信息融入到了词嵌入中,并且首先承接起了当时正流行的词嵌入和语言模型之间的关系,展示了可以利用大量的无标注文本数据训练出高质量的包含上下文信息的向量表示,并显著超过使用传统的词向量的效果。
接下来,2018 年,ELMo[11] 提出了一种上下文相关的文本表示方法,并在多个典型任务上表现惊艳,能有效处理一词多义问题。其后,GPT[12],BERT 等预训练语言模型相继被提出,PTMs 技术开始在 NLP 领域大放异彩。
随着 ELMo、GPT、BERT 等预训练模型在 NLP 任务取得 SOTA(Start-of-the-Art)结果,一系列以 BERT 为基础的改进模型相继被提出,预训练模型在各种下游任务中遍地开花,如 MASS、UniLM、ERNIE、SpanBERT、RoBERTa、ALBERT、XLNet 等,这些模型的提出大大推动了NLP领域的进步。
3 经典预训练模型
本节主要梳理了经典的预训练模型,由于第一代 PTMs 更专注于词向量的产生,本节重点梳理了第二代 PTMs,包括ELMo、GPT、BERT以及最近的新型预训练模型。
3.1 ELMo模型
正如上文中提到的那样,早期的 PTMs 无法解决一词多义问题,无法理解复杂的语境;ELMo 在这种情况下应运而生,通过深层双向语言模型来构建文本表示,有效解决了一词多义问题[13]。
ELMo 从大规模的无监督的语料中,预训练一个双向的 LSTM 语言模型,它分为两个阶段,第一个阶段在大规模语料库上利用语言模型进行预训练,第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的词嵌入作为新特征补充到下游任务中,它是一种典型的基于特征融合的预训练模型,它的模型结构如图 3.1 所示。
图3.1 ELMo 语言模型结构图
该模型与之前的一些相似模型相比,首先它使用了双向的两层 LSTM,这与单向的语言模型相比,能够更加容易的捕捉上下文的相关信息。其次,在上下层的 LSTM 之间有残差连接,加强了梯度的传播。另外,双向语言模型的训练目标是最大化前向和后向的联合对数似然概率,这点源于模型双向的特性。
图3.2 ELMo语言模型训练目标
ELMo 预训练模型的主要贡献是提出了深层双向语言模型的重要性,能有效的提升模型的性能,并且与没有 ELMo 的模型相比,使用 ELMo 增强的模型能够更有效地使用更小的训练集。
然而,ELMo 模型也有其局限性,首先,它使用的特征抽取器是 LSTM,LSTM 的特征抽取能力是远弱于 Transformer[14] 的。其次,它采用的模型拼接方式是双向融合,这在后面被证明比 BERT 的一体化的融合特征方式效果更弱。
3.2 GPT模型
ELMo 使业界意识到了基于大规模预料集预训练的语言模型的威力,与此同时,Transformer 的提出被发现在处理长期依赖性任务方面比 LSTM 有更好的表现,它在机器翻译等任务上取得的成果也被认为是 LSTM 的替代品。在此背景下,OpenAI 的 GPT 预训练模型被提出。
GPT 模型也采用了两阶段,第一阶段利用无监督的预训练语言模型进行预训练,学习神经网络的初始参数,第二阶段通过有监督的微调模式解决下游任务,这是一种半监督的方法,结合了非监督的预训练模型和监督的微调模型,来学习一种通用的表示法。
图3.3 GPT 与 ELMo 的模型结构
与 ELMo 相比,GPT 模型沿袭了[6]中的方法,将语言模型预训练后,把模型的参数作为监督模型的起始点的做法,而又区别于 ELMo 模型,通过预训练模型生成带上下文信息的向量表示,然后作为监督模型的特征这一做法。另外,GPT 采用了 Transformer 中的解码器结构,它堆叠了 12 个 Transformer 子层,这一点与 ELMo 使用的 LSTM 作为特征抽取器也是不同的。除此之外,为了方便将语言模型的能力迁移到下游的各种任务中,GPT 采用的是遍历式的方法[15],将结构化的输入转化成预训练模型可以处理的有序序列(如图3.4所示),而 ELMo 仅仅只是定制了一个确定的框架。GPT 与 ELMo 的模型对比结构如图 3.3 所示。
图3.4 (左) GPT 中的 Transformer 架构。(右)对不同任务进行微调
之后 GPT2 的出现改进了 GPT 的几点不足, GPT2 希望能够使模型不经过任何改变就可以在下游任务上获得比较好的性能,这就使得 GPT2 的语言模型是通用的,不需要根据下游任务的不同微调其模型,另外,GPT2 在 GPT 的基础上使用了更大的模型和更多的参数。
GPT 模型在公布的结果中,一举刷新了自然语言处理领域的 9 项典型任务,效果不可谓不惊艳。然而,GPT 本质上仍然是一种单向的语言模型,对语义信息的建模能力有限,这一缺点在后面 BERT 问世之后表现得非常明显。
3.3 BERT 模型
BERT 也是一种典型的微调模型结构,与 GPT 模型类似,BERT 同样通过堆叠 Transformer 子结构来构建基础模型,模型结果与 GPT、ELMo 对比如图 3.5 所示。BERT 使用的是基于 Transformer 的双向预训练语言模型,GPT 使用的是单向的 Transformer 结构,ELMo 使用独立训练的从左到右和从右到左的 LSTM 连接来生成下游任务。
图3.5 BERT、GPT、ELMo 模型对比
与前面的 ELMo、GPT 等模型相比,BERT 的第一个创新是使用 Masked LM(MLM)来达到深层双向联合训练的目的,这与 GPT 使用单向的生成式语言模型和 ELMo 使用独立的双向语言模型都不同。MLM 预训练类似于一种完形填空的任务,即在预训练时,通过随机遮盖输入文本序列的部分词语,在输出层获得该位置的概率分布,进而极大化似然概率来调整模型参数。
BERT 的第二个创新是使用了 Next Sentence Prediction(NSP),这是一种用来捕捉句子间关系的二分类任务,这个任务可以从任何单词语料库中轻松生成。我们都知道,很多重要的下游任务,包括问答系统和自然语言推理等都是建立在理解两个文本句子之间的关系的基础上的,而语言建模并不能直接捕捉这些关系,NSP 解决了这个问题。具体来说,就是在构造任务的数据集时,会有 50% 的概率,选择正样本,即某句句子和其下一句句子的组合,50% 的概率在语料中选择任意一句句子构成负样本。
BERT 的表现是里程碑式的,在自然语言处理领域的 11 项基本任务中获得了显著的效果提升,它的出现建立在前期很多重要工作上,是一个集大成者。同时,BERT 的出现也极大地推动了自然语言处理领域的发展,许多后续研究一般也以 BERT 模型为基础进行改进。学界普遍认为,从 BERT 模型开始,自然语言处理领域终于找到了一种方法可以像计算机视觉那样进行迁移学习。
3.4 新式预训练模型
BERT 的出现开启了一个新时代,此后涌现出了大量的预训练语言模型。这些新式的预训练语言模型从模型结构上主要分为几大类:基于 BERT 的改进模型、XLNet 和以 MASS 为代表的生成模型。下面简单介绍这几类模型。
基于 BERT 的改进模型有 ERNIE、SpanBERT、RoBERTa、ALBERT 等。ERNIE 引入了知识 Mask 策略,包括实体级 Mask 和短语级 Mask,用以取代 BERT 中的随机 Mask[16]。SpanBERT 对 ERNIE 进行泛化[17],在无需外部知识的情况下随机 Mask 跨度。RoBERTa 对 BERT 模型进行了一些更改,包括:1)使用更大的批次和更多的数据对模型进行更长的训练;2)取消 NSP 任务;3)在更长的序列上训练;4)在预训练过程中动态更改 Mask 位置[18]。ALBERT 提出了两个参数优化策略以减少内存消耗并加速训练。此外,ALBERT 还对 BERT 的 NSP 任务进行了改进[19]。
XLNet 的提出是为了解决 BERT 中存在的两个问题[20]:1)BERT 认为 Mask 的单词之间是独立的;2)BERT 使用了实际不存在的 [MASK] 符号,这会导致训练与微调出现差异。因此 XLNet 基于排列语言建模(PLM)提出了一个自回归的方法,并引入了双向自注意力机制和 Transformer-XL 实现模型。
MASS 把 BERT 推广到生成任务[21],并设计统一了 BERT 和传统单向语言模型框架 BERT+LM,使用 BERT 作为编码器,使用标准单向语言模型作为解码器。UniLM 进一步将双向语言模型、单向语言模型、Seq2Seq 语言模型结合进行预训练[22]。
4 预训练语言模型小结
4.1 预训练模型的优点
上文介绍了深度学习时代的部分预训练模型,可以从它们中总结出预训练模型的优点:
- 在大型文本语料库上的预训练可以学习通用语言表示并帮助完成后续任务;
- 预训练提供了更好的模型初始化,这通常会带来更好的泛化性能,并加速对目标任务的收敛;
- 预训练可以看作是一种正则化,以避免小数据的过拟合;
4.2 预训练语言模型的对比分类
下面分别从特征抽取和语言模型目标 2 个方面对预训练语言模型进行分类。
PTMs 中的特征抽取器通常采用 LSTM 和 Transformer(Transformer-XL),其中Transformer 又依据其 attention-mask 的方式分为 Transformer-Encoder 和 Transformer-Decoder 两部分。图 4.1 是各种 NLP 特征抽取器的对比。
图4.1 NLP 特征抽取器对比
基于上下文的 PTMs 从语言模型的目标方面可以分为自回归语言模型(Language Modeling,LM),自编码语言模型(Denoising Autoencoder,DAE)和排列语言模型(Permuted Language Modeling,PLM)。图 4.2 对基于上下文的语言模型进行了对比总结。
4.2 基于上下文的 PTMs 总结
5 总结与展望
虽然 PTMs 已经在很多 NLP 任务中显示出了他们强大的能力,然而由于自然语言处理的复杂性,仍存在诸多挑战。本文给出了 PTMs 在未来可能的几个发展方向。
5.1 PTMs 的上限
目前,PTMs 并没有达到其上限。大多数的 PTMs 可通过使用更长的训练步长和更大数据集来提升其性能。目前 NLP 中的 SOTA 也可通过加深模型层数来更进一步提升,这将导致更加高昂的训练成本。因此,一个更加务实的方向是在现有的软硬件基础上,设计出更高效的模型结构、自监督预训练任务、优化器和训练技巧等。
5.2 PTMs 的架构设计
对于 PTMs,Transformer 已经被证实是一个高效的架构。然而 Transformer 最大的局限在于其计算复杂度(输入序列长度的平方倍数)。受限于 GPU 显存大小,目前大多数 PTM 无法处理超过 512 个 token 的序列长度。打破这一限制需要改进 Transformer 的结构设计,例如 Transformer-XL。
5.3 微调模型中的知识迁移
微调模型是目前将 PTM 的知识转移至下游任务的主要方法,但效率却很低,每个下游任务都需要有特定的微调参数。一个可以改进的解决方案是固定 PTMs 的原始参数,并为特定任务添加小型的微调适配器,这样就可以使用共享的 PTMs 服务于多个下游任务。
5.4 PTMs 的解释性与可靠性
PTMs 的可解释性与可靠性仍然需要从各个方面去探索,它能够帮助我们理解 PTM 的工作机制,为更好的使用及性能改进提供指引。
参考文献
[1] M. C. Kenton, L. Kristina, and J. Devlin, “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,” 2017.
[2] A. Radford, J. Wu, R. Child, D. Luan, D. Amodei, and I. Sutskever, “Language Models are Unsupervised Multitask Learners,” 2018.
[3] X. Qiu, T. Sun, Y. Xu, Y. Shao, N. Dai, and X. Huang, “Pre-trained Models for Natural Language Processing : A Survey,” 2020.
[4] Q. Le and T. Mikolov, “Distributed representations of sentences and documents,” 31st Int. Conf. Mach. Learn. ICML 2014, vol. 4, pp. 2931–2939, 2014.
[5] J. Pennington, R. Socher, and C. D. Manning, “GloVe : Global Vectors for Word Representation,” pp. 1532–1543, 2014.
[6] A. M. Dai and Q. V. Le, “Semi-supervised sequence learning,” Adv. Neural Inf. Process. Syst., vol. 2015-Janua, pp. 3079–3087, 2015.
[7] P. Ramachandran, P. J. Liu, and Q. V Le, “Unsupervised Pretraining for Sequence to Sequence Learning,” 2014.
[8] I. Sutskever, O. Vinyals, and Q. V. Le, “Sequence to sequence learning with neural networks,” Adv. Neural Inf. Process. Syst., vol. 4, no. January, pp. 3104–3112, 2014.
[9] S. Hochreiter and J. Schmidhuber, “Long Short-term Memory,” Neural Comput., vol. 9, pp. 1735–1780, 1997.
[10] O. Melamud, J. Goldberger, and I. Dagan, “context2vec: Learning Generic Context Embedding with Bidirectional {LSTM},” in Proceedings of The 20th {SIGNLL} Conference on Computational Natural Language Learning, 2016, pp. 51–61.
[11] C. Clark, K. Lee, and L. Zettlemoyer, “Deep contextualized word representations,” 2018.
[12] A. Radford and T. Salimans, “Improving Language Understanding by Generative Pre-Training,” pp. 1–12, 2018.
[13] Q. Liu, M. J. Kusner, and P. Blunsom, “A Survey on Contextual Embeddings,” 2020.
[14] A. Vaswani, “Attention Is All You Need arXiv:1706.03762v5 ,” no. Nips, 2017.
[15] T. Rocktäschel, E. Grefenstette, K. M. Hermann, T. Kočiský, and P. Blunsom, “Reasoning about entailment with neural attention,” 4th Int. Conf. Learn. Represent. ICLR 2016 - Conf. Track Proc., no. 2015, pp. 1–9, 2016.
[16] Y. Sun et al., “ERNIE: Enhanced Representation through Knowledge Integration,” 2019.
[17] M. Joshi, D. Chen, Y. Liu, D. S. Weld, L. Zettlemoyer, and O. Levy, “SpanBERT: Improving Pre-training by Representing and Predicting Spans.”
[18] Y. Liu et al., “RoBERTa: A Robustly Optimized BERT Pretraining Approach,” no. 1, 2019.
[19] L. E. Of, L. A. R. Epresentations, Z. Lan, and P. Sharma, “Albert: A lite bert for self-supervised learn- ing of language representations,” pp. 1–17, 2020.
[20] Z. Yang, Z. Dai, Y. Yang, and J. Carbonell, “XLNet : Generalized Autoregressive Pretraining for Language Understanding,” pp. 1–18.
[21] K. Song, X. Tan, T. Qin, J. Lu, and B. De-, “MASS : Masked Sequence to Sequence Pre-training for Language Generation,” 2019.
[22] L. Dong et al., “Unified Language Model Pre-training for Natural Language Understanding and Generation,” no. NeurIPS, 2019.