NLP pretrained model

最近在公司听了NLP pretrained model的报告,感觉受益匪浅,特此分享。此处大量参考从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

Word Embedding

词向量在自然语言处理中有着重要的角色,它将抽象的词语之间的语义关系量化成向量形式。有了良好的词向量,我们就可以做更多的工作。目前构建词向量的方式大体上分成两大类:

  1. 统计方法:通过统计词语之间的关系,定义一些显性隐性的关系,从而构建词向量。例如SVD,LSA等等。这样的做法在逻辑上不理性,效果上也不好。
  2. 语言模型:通过构建语言模型来实现对词向量的学习,在理论上可行的,并且目前大部分的工作就是基于这样的思想。从最开始的神经网络语言模型(NNLM)到后来的Word2vec,GloVe等等。
    他们最大的缺点就是词向量是固定的,也就是语义消除的问题。他们不包含上下文语义信息,因此接下来的模型就是基于解决这个问题展开的。
    NLP pretrained model
    Word2Vec有两种训练方法,一种叫CBOW,核心思想是从一个句子里面把一个词抠掉,用这个词的上文和下文去预测被抠掉的这个词;第二种叫做Skip-gram,和CBOW正好反过来,输入某个单词,要求网络预测它的上下文单词。

ELMo

ELMO是“Embedding from Language Models”的简称,论文名称为:“Deep contextualized word representation”
NLP pretrained model
如何预训练:给定一个句子的上文,然后预测下一个缺失的单词;或者句子的后半部分(下文),来预测缺失的单词,即对应上图两个各自独立的不同方向的LSTM

训练完如何用:
NLP pretrained model

GPT

GPT是“Generative Pre-Training”的简称
NLP pretrained model
和ELMo的区别

  1. 特征抽取器不是用的RNN,而是用的Transformer
  2. 预训练时采用的目标任务是单向的,即给定上文预测缺失词,而没有设定给下文反过来预测缺失词

训练完如何用:
NLP pretrained model

BERT

NLP pretrained model
BERT与ELMo、GPT的区别

  1. 与ELMo比,RNN换成了Transformer
  2. 与GPT比,单向的目标任务改成了和ELMo一样的双向任务
  3. 同时设计了一个Masked LM:我们不是像传统LM那样给定已经出现过的词,去预测下一个词,而是直接把整个句子的一部分词(随机选择)盖住(make it masked),这样模型不就可以放心的去做双向encoding了嘛,然后就可以放心的让模型去预测这些盖住的词是啥。这个任务其实最开始叫做cloze test

训练完如何用:
NLP pretrained model
BERT中encoding了更多丰富的信息,因此下游任务的网络设计就变得很简单,比如直接加Softmax或者MLP就行了,不再需要复杂的attention等网络结构
NLP pretrained model

以上四者的关系

NLP pretrained model

Tiny BERT

Google T5


参考博客