NLP预训练模型

NLP预训练模型

一、按照时间线主要有:

  1. ELMO (2018.3 华盛顿大学 )

    • 传统word2vec无法解决一词多义,语义信息不够丰富,诞生了ELMO
  1. GPT (2018.06 OpenAI )

    • ELMO以lstm堆积,串行且提取特征能力不够,诞生了GPT
  1. BERT (2018.10 Google)

    • GPT 虽然用transformer堆积,但是是单向的,诞生了BERT
  1. XLNet (2019.06 CMU+google brain)

    • BERT虽然双向,但是mask不适用于自编码模型,诞生了XLNET
  1. ERNIE (2019.4 百度)

    • BERT中mask代替单个字符而非实体或短语,没有考虑词法结构/语法结构,诞生了ERNIE
  1. BERT-wwm (2019.6.30 哈工大 +讯飞)
    • 为了mask掉中文的词而非字,让BERT更好的应用在中文任务,诞生了BERT-wwm
  1. RoBERTa (2019.7.26 Facebook)
    • Bert训练用更多的数据、训练步数、更大的批次,mask机制变为动态的,诞生了RoBERTa
  1. ERNIE2.0 (2019.7.29 百度 )
    • ERNIE的基础上,用大量数据和先验知识,进行多任务的持续学习,诞生了ERNIE2.0
  1. BERT-wwm-ext (2019.7.30 哈工大 +讯飞 )
    • BERT-wwm增加了训练数据集、训练步数,诞生了BERT-wwm-ext
  1. ALBERT (2019.10 Google)
    • BERT的其他改进模型基本考增加参数和训练数据,考虑轻量化之后,诞生了ALBERT

二、ELMO模型介绍

ELMO的英文为 “Embedding from Language Models",该论文获NAACL18 Best Paper ,采用双层双向LSTM。

现阶段存在问题:传统的词向量(如word2vec)是静态的/上下文无关的,一旦训练好后,词向量就是固定的,使得在不同语境下,映射的同一个词的词向量是相同的,不符合真实文本表示情况。

ELMO解决的出发点事:解决了一词多义的问题

ELMO主要结构:

  • ELMO基于RNN(LSTM)训练,使用两个单向LSTM代替一个双向LSTM

ELMO两阶段如下,本质就是根据当前上下文对Word Embedding进行动态调整的过程:

  1. 用语言模型进行预训练
ELMO模型
  • 左边的前向双层LSTM是正方向编码器,顺序输入待预测单词w的上文

  • 右边则是反方向编码器,逆序输入w的下文

训练好之后,输入一个新句子s,每个单词都得到三个Embedding(训练结果):

①单词的Word Embedding ;

②第一层关于单词位置的Embedding;

③第二层带有语义信息的Embedding。

  • 做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中;

    如QA任务:输入Q/A句子,对三个Embedding分配权重,整合生成新的Embedding;

ELMO缺点:

  • lstm是串行,训练时间长;相比于transformer,特征提取能力不够(ELMO采用向量拼接)
  • 一个非常明显的缺点在特征抽取器选择方面,ELMO 使用了 LSTM 而不是新贵 Transformer,Transformer 是谷歌在 17 年做机器翻译任务的“Attention is all you need”的论文中提出的,引起了相当大的反响,很多研究已经证明了 Transformer 提取特征的能力是要远强于 LSTM 的。
  • ELMO 采取双向拼接这种融合特征的能力可能比 Bert 一体化的融合特征方式弱。(从道理推断产生的怀疑,没有验证)

三、GPT模型

GPT的英文为 “Generative Pre-Training”

训练过程:

1、GPT 训练过程分为两个部分,无监督预训练语言模型有监督的下游任务 fine-tuning

[图片上传失败...(image-c7c5d0-1624199108637)]

2、自回归模型: 根据上文内容预测下一个可能跟随的单词,就是常说的自左向右的语言模型任务

3、transformer的decoder里面有三个子模块,GPT只用了第一个和第三个子模块,如下图

GPT和Transformer不同

与ELMO的不同:

  • GPT用transformer的decoder提取特征,而不是Bi-LSTM;堆叠12个
  • 单向(根据上文预测单词,利用mask屏蔽下文)
  • GPT中的mask操作在Self-Attention 中, Softmax 之前:

第一阶段(预训练)

  • 采用Transformer的decoder模型作为特征提取器。ransformer是当时效果最好的特征提取器,RNN不能并行且性能相对较差,是个很明智的选择。
  • ELMO使用上下文对单词进行预测,而 GPT 则只采用 Context-before 这个单词的上文来进行预测,而抛开了下文。

第二阶段(应用于下游任务):

1、对于不同的下游任务来说,本来你可以任意设计自己的网络结构,现在不行了,你要 GPT 的网络结构看齐,把任务的网络结构改造成和 GPT 的网络结构是一样的。

2、在做下游任务的时候,利用第一步预训练好的参数初始化 GPT 的网络结构,这样通过预训练学到的语言学知识就被引入到你手头的任务里来了,这是个非常好的事情。再次,你可以用手头的任务去训练这个网络,对网络参数进行 Fine-tuning。

那怎么改造才能靠近 GPT 的网络结构呢?

GPT模型构造

GPT 论文给了一个改造施工图如上:

  1. 对于分类问题,不用怎么动,加上一个起始和终结符号即可;

  2. 对于句子关系判断问题,比如 Entailment,两个句子中间再加个分隔符即可;

  3. 对文本相似性判断问题,把两个句子顺序颠倒下做出两个输入即可,这是为了告诉模型句子顺序不重要;

  4. 对于多项选择问题,则多路输入,每一路把文章和答案选项拼接作为输入即可。从上图可看出,这种改造还是很方便的,不同任务只需要在输入部分施工即可。

优点:Transformer捕捉更长范围的信息,优于RNN;并行,快速

缺点:需要对输入数据的结构调整;单向

由于单向地用上文预测下一个单词,GPT比BERT更适合做文本生成的任务。

Bert模型介绍

BERT 英文为 “Bidirectional Encoder Representations from Transformers"

与GPT的区别:

  • 双向

  • 用的是transformer的encoder(GPT用的是decoder,ELMO用的是Bi-LSTM)

  • 多任务学习方式训练:预测目标词和预测下一句

优点:效果好、普适性强、效果提升大

缺点:硬件资源的消耗巨大、训练时间长;预训练用了[MASK]标志,影响微调时模型表现

Bert缺点:

(1)BERT在第一个预训练阶段,假设句子中多个单词被Mask掉,这些被Mask掉的单词之间没有任何关系,是条件独立的,然而有时候这些单词之间是有关系的。

(2)BERT的在预训练时会出现特殊的[MASK],但是它在下游的fine-tune中不会出现,这就造成了预训练和微调之间的不匹配,微调不出现[MASK]这个标记,模型好像就没有了着力点、不知从哪入手。所以只将80%的替换为[mask],但这也只是缓解、不能解决

(3). BERT在分词后做[MASK]会产生的一个问题,为了解决OOV的问题,我们通常会把一个词切分成更细粒度的WordPiece

(4). wordpiece存在问题。这样它只需要记住一些词(WordPiece的序列)就可以完成这个任务,而不是根据上下文的语义关系来预测出来的。使得模型能找到预测的捷径。很自然的想法就是词作为一个整体要么都Mask要么都不Mask,这就是所谓的Whole Word Masking。

预训练分为以下三个步骤:

①Embedding

embedding

三个Embedding 求和而得,分别是:

  • Token Embeddings:词向量,首单词是[CLS]标志,可用于分类任务;
  • Segment Embeddings:用[SEP]标志将句子分为两段,因为预训练不光做LM还要做以两个句子为输入的分类任务;
  • Position Embeddings:和之前文章中的Transformer不同,不是三角函数而是学习出来的。

②预测目标词Masked LM

随机挑选一个句子中15%的词,用上下文来预测。这15%中,80%用[mask]替换,10%随机取一个词替换,10%不变。用非监督学习的方法预测这些词。

③预测下一句 Next Sentence Prediction

选择句子对A+B,其中50%的B是A的下一句,50%为语料库中随机选取

BERT的微调(fine tuning)参考参数:

  • Batch Size:16 or 32
  • Learning Rate: 5e-5, 2e-5
  • Epochs:2, 3, 4

BERT非常强大,在 11 项 NLP 任务中夺得 SOTA 结果,这11项任务可分为四大类:

  • 句子对分类任务
  • 单句子分类任务
  • 问答任务
  • 单句子标注任务

【小总结】:

  • ELMO用Bi-LSTM,GPT用transformer的decoder,BERT用transformer的encoder
  • ELMO:双向,GPT,单向,BERT:双向
  • ELMO:解决一词多义,GPT,特征更丰富,BERT:双向/多任务训练/能捕捉更长距离的依赖
  • GPT:适合文本生成等任务(NLG任务),BERT:适合预测任务(NLU任务)
  • GPT-2,以及一些诸如 TransformerXL 和 XLNet 等后续出现的模型,本质上都是自回归模型,而 BERT 则不然,虽然没有使用自回归机制,但 BERT 获得了结合单词前后的上下文信息的能力,从而取得了更好的效果。而其中XLNet虽然使用了自回归,但引入了一种能够同时兼顾前后的上下文信息的方法,即双流自注意力。

抄自

NLP预训练模型 | 按时间线整理10种常见的预训练模型

你可能感兴趣的:(NLP预训练模型)