一EBET易博官方网站网打尽:14种预训练语言模型大汇总

  新闻资讯     |      2023-09-26 01:54

  预训练语言模型是NLP中的核心之一,在pretrain-finetune这一阶段的NLP发展中发挥着举足轻重的作用。预训练语言模型的无监督训练属性,使其非常容易获取海量训练样本,并且训练好的语言模型包含很多语义语法知识,对于下游任务的效果会有非常明显的提升。本文首先介绍预训练语言模型的里程碑方法,然后进一步介绍学术界针对预训练语言模型中的问题提出的各种改进和创新,包括14个经典预训练语言模型。

  预训练语言模型要从词向量说起。词向量利用文本数据,构造出词之间的共现关系,一般将在一句话现的词作为正样本,随机负采样构造负样本,采用CBOW或Skip-Gram的方式进行训练,以此达到让经常共现的词,能够具有相似向量化表示。其本质是NLP中的一个先验:频繁在文本现的两个词,往往语义是相近的。然而,词向量的问题也比较明显,同一个词在不同的语境中,含义往往是不同的,而词向量对于某一个词只能生成一个固定的向量,无法结合语境上下文信息进行调整。

  Deep contextualized word representations(ACL 2018)提出了ELMo模型,利用双向LSTM模型结合上下文语境信息生成词的embedding。ELMo和以往的词向量模型最大的差别是,每个词的embedding都是整个句子的一个函数,即每个词的embedding和这个句子的上下文信息是相关的。ELMo语言模型的模型结构采用了一个正向LSTM和一个反向LSTM联合训练的方式,优化两个方向的语言模型优化目标。在完成训练后,每个单词在每层LSTM都会产生正向、反向两个embedding,对每个单词所有层的embedding拼接在一起,得到这个词在这句话中的embedding。ELMO在使用到下游任务时,会把数据每句话先过一遍ELMo,得到每个词的embedding,然后将ELMo生成的embedding和通过词向量得到的embedding拼接到一起,用于后续任务预测。

  此后,语言模型预训练成为NLP中的核心之一。在Improving Language Understanding by Generative Pre-Training(2018)中提出了GPT模型。相比ELMo,GPT真正意义实现了pretrain-finetune的框架,不再需要将模型中的embedding取出来,而是直接把预训练好的模型在下游任务上finetune,对于不同任务采用不同的输入或输出层改造,让下游任务更贴近上游预训练模型。值得一提的是,在后续的prompt等优化中,又将下游任务向上游任务的贴近更近了一步,即将下游任务的输入和输出逻辑也进行变化去适应上游任务。让下游任务向上游任务对齐,是一个NLP中的发展方向。GPT模型主体采用的是Attention Is All You Need(NIPS 2017)提出的Transformer模型,使用的优化目标是正向语言模型。

  BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(2018)提出了Bert模型,也是目前在NLP中应用最广泛的预训练模型之一。相比GPT和ELMo,Bert采用了一种Mask Language Model(MLM)这一不同的目标,通过随机mask掉输入文本中的某些token,然后利用上下文信息进行预测,实现对数据语义关系的提取。这种MLM相比之前的语言模型优化目标优点是,可以从多个方向同时进行信息抽取来预测当前token,而传统的语言模型(前向后后向)每一次只能从一个方向提取信息。即使将前向和后向结合,也无法实现真正意义上的同时利用前后文信息预测当前token。同时,Bert还引入了Next Sentence Prediction(NSP)任务,在预训练阶段构造了两个文本pair对输入,预测这两个文本的相关性。这个任务相当于是在sentence维度的信息提取,和下游的文本匹配类任务更加契合,这在单纯的语言模型中是难以学到的。

  对Bert、GPT、ELMo三者模型结构图的一个简要对比如下,可以帮助更清晰的理解三类模型的差异。

  上文介绍了ELMo、GPT、Bert等3个预训练语言模型的代表工作。下面我们梳理一下,在此之后,学术界对这些经典的预训练语言模型进行了哪些方面的改进和创新。

  在GPT之后,OpenAI进一步提出了GPT-2、GPT-3,旨在通过更大的模型容量、更多的训练语料进一步提升预训练语言的效果。Language Models are Unsupervised Multitask Learners(2018)提出了GPT-2。本文相比GPT增加了语料、增大了模型尺寸,模型的基本结构和GPT差不多。GPT-2的核心思想是,任何一个有监督NLP任务,都可以看成是语言模型的一个子集,只要预训练语言模型的容量足够大,理论上就能解决任何NLP任务。任何NLP任务都可以表示成p(output input, task)的形式,语言模型就是无监督的多任务学习。因此GPT-2的核心就是提升模型的容量和数据多样性,让语言模型能够达到解决任何任务的程度。在随后的Language Models are Few-Shot Learners(2020)中提出了GPT-3,进一步增大了模型尺寸,模型参数量是GPT-2的100倍。GPT-3的核心思想在于不进行finetune(zero-shot learning)就可以对下游任务生成预测结果,其做法为将下游任务转换为一系列的文本,直接通过语言模型预测出结果。下图为一个例子,对比了finetune方法和GPT-3中提出的zero-shot方法的区别,便于对这种预测方法进行理解。通过增加对任务的描述文本,来让模型知道当前要解决什么任务,进而实现预测。

  可以看出,GPT的后续优化思路,建立在不断提升训练语料丰富度和模型容量,使语言模型能够从大量文本中学习到各个NLP任务的解决方法,再通过zero-shot learning的方式实现不进行finetune,而是将下游任务转换成语言模型的输入形式,来让预训练模型直接进行下游任务预测。这种prompt的形式是目前NLP领域的研究热点和发展趋势。

  在Bert的基础上,有很多针对其的改进,这里我们主要介绍3个模型。RoBERTa: A Robustly Optimized BERT Pretraining Approach(2019)细致的对Bert模型的训练方式进行了对比实验和分析,并基于此总结出了能够提升Bert效果的训练方法。相比Bert,RoBerta的主要改进在于3个方面。首先采用了dynamic mask,即每个文本进入训练时动态mask掉部分token,相比原来的Bert,可以达到同一个文本在不同epoch被mask掉的token不同,相当于做了一个数据增强。其次,分析了训练样本应该如何构造,原来的Bert采用segment pair的形式,训练样本为两个segment组合到一起并使用NSP任务预测两个任务是否相关。RoBERTa发现从同一个document构造输入单句子的输入文本而非pair对,并且不使用NSP任务,效果会有一定提升。最后,RoBERTa增大了batch size以及对BPE(输入文本的分词方法进行了升级。

  ERNIE: Enhanced Language Representation with Informative Entities(2019)从知识增强的角度对Bert进行优化。相比原来的Bert,ERNIE引入了如知识图谱等外部知识信息。这样的好处在于,有一些文本如果不知道某些词组代表一个实体的话,模型是很难学习的,例如一些人名、地名等。如下面的例子,不知道橘子中的这些实体是书名、歌名,就无法识别出作者的职业。

  ERNIE在Bert中引入了知识图谱中的实体信息,模型结构如下图。模型主要分为T-Encoder和K-Encoder两个部分。T-Encoder类似Bert,从输入的文本上提取每个token的信息表示。K-Encoder主要是引入知识信息,将输入文本中的实体识别出来,然后获取这些实体的embedding(利用TransE在构造好的知识图谱上预训练得到),然后将token的embedding和实体的embedding进行一个融合,融合方法是将实体embedding添加到对应token序列的位置。每层融合输入上一层的token embedding和entity embedding,生成新的token embedding和entity embedding,公式可以表示为:

  在GPT和BERT的启发下,后续涌现了很多其他类型的预训练语言模型,这里主要介绍UniLM、XLNet、BART这3种。

  Unified Language Model Pre-training for Natural Language Understanding and Generation(NIPS 2019)提出了UniLM预训练语言模型。本文首先总结了之前语言模型的特点:EMLo采用前向+后向LSTM、GPT采用从左至右的单向Transformer、BERT采用双向Attention。虽然BERT的双向Attention取得很好效果,但是这种特性也导致其无法像GPT等使用单向方法的语言模型一样适用于文本生成这种任务。UniLM融合了3种语言模型优化目标,通过精巧的控制mask方式来在一个模型中同时实现了3种语言模型优化任务,在pretrain过程交替使用3种优化目标。下图比较形象的描述了UniLM是如何利用mask机制来控制3种不同的优化任务,核心思路是利用mask控制生成每个token时考虑哪些上下文的信息。

  XLNet: Generalized Autoregressive Pretraining for Language Understanding(NIPS 2019)提出了XLNet模型,融合了BERT和GPT这两类预训练语言模型的优点,并且解决了BERT中pretrain和finetune阶段存在不一致的问题(pretrain阶段添加mask标记,finetune过程并没有mask标记)。本文将无监督语言模型分成两类,一类是AR自回归模型,如GPT、ELMo这种使用单向语言模型建模概率分布的方法;另一类是AE自编码模型,如BERT这种通过预测句子中token的方法。XLNet融合了AR模型和AE模型各自的优点,既能建模概率密度,适用于文本生成类任务,又能充分使用双向上下文信息。XLNet实现AR和AE融合的主要思路为,对输入文本进行排列组合,然后对于每个排列组合使用AR的方式训练,不同排列组合使每个token都能和其他token进行信息交互,同时每次训练又都是AR的。但是,实现这种模式也存在很多问题,文中针对这些问题提出了解法,由于篇幅原因具体内容我们会在后续相关文章再进行详细介绍。

  本文介绍了预训练语言模型的发展历程,包括EMLo、BERT、GPT等经典模型,也包括在此基础上的一些改进创新。预训练语言模型对于NLP来说非常重要,未来的研究趋势也在让下游任务更加去适配预训练模型,以此来最大程度发挥预训练模型的能力。

  一文读懂CTR预估模型的发展历程Domain Adaptation:缺少有监督数据场景下的迁移学习利器EBET易博官网