预训练模型发展历史
早期的PTMs技术的目标是学习好的词嵌入。由于下游任务不再需要使用这些模型,因此它们在计算效率方面通常非常低,如Skip-Gram和GloVe。虽然这些预先训练的词向量可以捕获单词的语义含义,但它们是上下文无关的,不能捕获文本的高级概念,如语法和语义等。
从 2016年开始,大多数的研究都开始重视长时的上下文语义在词嵌入中的作用和语言模型在大规模语料上提前预训练这两个核心观点。Dai和Le 使用语言建模和序列自编码来改善循环经网络(RNN, Recurrent Neutral Language)的序列学习,可以被认为是现代 PTMs 的开端。它系统地阐述了上游预训练语言模型可以用于下游特定任务这个划时代的思想,并用一系列分类任务的实验来对比支持了这个观点。从此以后,PTMs渐渐步入了人们的视野。
随后,Ramachandran et al.提出了利用预训练的方法可以提高序列到序列(Sequence to sequence,Seq2Seq)模型的准确性。它证明了在大量无监督数据上预训练模型,并在少量有监督数据上微调模型这个思路对Seq2Seq模型同样具有效性,并提出了Seq2Seq目标和语言模型目标联合训练以提高泛化能力的想法。使得 PTMs 技术进一步发展,展现了该方法在 NLP 领域中的通用性。
随着计算能力的发展,深层模型也不断提高,PTMs的体系结构由浅入深推进。Dai和Le使用的是LSTM,它解决了RNN在处理时序模型时『back-propagation through time』的困难。然而,单向的LSTM仅能学习上文的语义信息,于是,巴伊兰大学的学者开创性地通过双向LSTM将上下文的语义信息融入到了词嵌入中,并且首先承接起了当时正流行的词嵌入和语言模型之间的关系,展示了可以利用大量的无标注文本数据训练出高质量的包含上下文信息的向量表示,并显著超过使用传统的词向量的效果。
接下来,2018 年,ELMo提出了一种上下文相关的文本表示方法,并在多个典型任务上表现惊艳,能有效处理一词多义问题。其后,GPT,BERT等预训练语言模型相继被提出,PTMs技术开始在NLP领域大放异彩。
随着 ELMo、GPT、BERT 等预训练模型在 NLP 任务取得 SOTA(Start-of-the-Art)结果,一系列以 BERT 为基础的改进模型相继被提出,预训练模型在各种下游任务中遍地开花,如MASS、UniLM、ERNIE、SpanBERT、RoBERTa、ALBERT、XLNet 等,这些模型的提出大大推动了NLP领域的进步。
由于第一代 PTMs 更专注于词向量的产生,下面重点梳理了第二代PTMs,包括ELMo、GPT、BERT以及最近的新型预训练模型。
2.2 ELMo模型
早期的 PTMs 无法解决一词多义问题,无法理解复杂的语境。ELMo 在这种情况下应运而生,通过深层双向语言模型来构建文本表示,有效解决了一词多义问题。ELMo 从大规模的无监督的语料中,预训练一个双向的 LSTM 语言模型,它分为两个阶段,第一个阶段在大规模语料库上利用语言模型进行预训练,第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的词嵌入作为新特征补充到下游任务中,它是一种典型的基于特征融合的预训练模型,它的模型结构如图1所示。
图 1 ELMo语言模型结构图
该模型与之前的一些相似模型相比,首先它使用了双向的两层LSTM,这与单向的语言模型相比,能够更加容易的捕捉上下文的相关信息。其次,在上下层的LSTM之间有残差连接,加强了梯度的传播。另外,双向语言模型的训练目标是最大化前向和后向的联合对数似然概率,这点源于模型双向的特性。ELMo完整的架构如下图2所示,主要是由char-CNN和双层Bi-LSTM组成。
图 2 ELMo完整的架构
ELMo预训练模型的主要贡献是提出了深层双向语言模型的重要性,能有效的提升模型的性能,并且与没有ELMo的模型相比,使用ELMo增强的模型能够更有效地使用更小的训练集。
2.3 GPT模型
Transformer 的提出被发现在处理长期依赖性任务方面比LSTM有更好的表现,它在机器翻译等任务上取得的成果也被认为是 LSTM 的替代品。在此背景下,OpenAI的 GPT预训练模型被提出。GPT 模型也采用了两阶段,第一阶段利用无监督的预训练语言模型进行预训练,学习神经网络的初始参数,第二阶段通过有监督的微调模式解决下游任务,这是一种半监督的方法,结合了非监督的预训练模型和监督的微调模型,来学习一种通用的表示法。
图 3 GPT的模型结构
图 4 GPT Decoder结构
GPT 使用 Transformer的 Decoder 结构,并对 Transformer Decoder 进行了一些改动,原本的 Decoder 包含了两个 Multi-Head Attention 结构,GPT 只保留了 Mask Multi-Head Attention,GPT的Decoder结构如下图4所示。
与 ELMo 相比,GPT 模型将语言模型预训练后,把模型的参数作为监督模型的起始点的做法,而又区别于 ELMo 模型,通过预训练模型生成带上下文信息的向量表示,然后作为监督模型的特征这一做法。另外,GPT 采用了 Transformer 中的解码器结构,它堆叠了 12 个 Transformer 子层,这一点与 ELMo 使用的 LSTM 作为特征抽取器也是不同的。除此之外,为了方便将语言模型的能力迁移到下游的各种任务中,GPT采用的是遍历式的方法],将结构化的输入转化成预训练模型可以处理的有序序列。
GPT2希望能够使模型不经过任何改变就可以在下游任务上获得比较好的性能,这就使得 GPT2的语言模型是通用的,不需要根据下游任务的不同微调其模型,另外,GPT2 在GPT的基础上使用了更大的模型和更多的参数。
3.3 BERT 模型
BERT 也是一种典型的微调模型结构,与GPT模型类似,BERT 同样通过堆叠 Transformer 子结构来构建基础模型,模型结果与GPT、ELMo对比如图 3.5 所示。BERT 使用的是基于Transformer的双向预训练语言模型,GPT使用的是单向的 Transformer 结构,ELMo使用独立训练的从左到右和从右到左的LSTM连接来生成下游任务。
图 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。SpanBERT 对 ERNIE 进行泛化,在无需外部知识的情况下随机 Mask 跨度。RoBERTa 对 BERT 模型进行了一些更改,包括:1)使用更大的批次和更多的数据对模型进行更长的训练;2)取消 NSP 任务;3)在更长的序列上训练;4)在预训练过程中动态更改 Mask 位置。ALBERT 提出了两个参数优化策略以减少内存消耗并加速训练。此外,ALBERT 还对 BERT 的 NSP 任务进行了改进。
XLNet 的提出是为了解决 BERT 中存在的两个问题:1)BERT 认为 Mask 的单词之间是独立的;2)BERT 使用了实际不存在的 [MASK] 符号,这会导致训练与微调出现差异。因此 XLNet 基于排列语言建模(PLM)提出了一个自回归的方法,并引入了双向自注意力机制和 Transformer-XL 实现模型。
MASS 把 BERT 推广到生成任务,并设计统一了 BERT 和传统单向语言模型框架 BERT+LM,使用 BERT 作为编码器,使用标准单向语言模型作为解码器。UniLM 进一步将双向语言模型、单向语言模型、Seq2Seq 语言模型结合进行预训练。
- 点赞
- 收藏
- 关注作者
评论(0)