NLP pretrained model

最近听了NLP pretrained model的报告,感觉挺有意思的。此处大量参考从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

Word Embedding

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

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

ELMo

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

训练完如何用:
NLP pretrained model_第3张图片

GPT

GPT是“Generative Pre-Training”的简称
NLP pretrained model_第4张图片
和ELMo的区别

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

训练完如何用:
NLP pretrained model_第5张图片

BERT

NLP pretrained model_第6张图片
BERT与ELMo、GPT的区别

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

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

以上四者的关系

NLP pretrained model_第9张图片

Tiny BERT

Google T5

XLNet

PLM随机排列一些词来预测其他词汇

GPT2.0

把任务信息也包含进文本序列
如翻译任务:
“I am boy” is translated to “我是一个男孩”
然后随机mask掉一些词进行预测pretrain model


参考博客

  • NLP的游戏规则从此改写?从word2vec, ELMo到BERT

你可能感兴趣的:(NLP)