NLP pretrained model
Posted 爆米花好美啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NLP pretrained model相关的知识,希望对你有一定的参考价值。
最近听了NLP pretrained model的报告,感觉挺有意思的。此处大量参考从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史
Word Embedding
词向量在自然语言处理中有着重要的角色,它将抽象的词语之间的语义关系量化成向量形式。有了良好的词向量,我们就可以做更多的工作。目前构建词向量的方式大体上分成两大类:
- 统计方法:通过统计词语之间的关系,定义一些显性隐性的关系,从而构建词向量。例如SVD,LSA等等。这样的做法在逻辑上不理性,效果上也不好。
- 语言模型:通过构建语言模型来实现对词向量的学习,在理论上可行的,并且目前大部分的工作就是基于这样的思想。从最开始的神经网络语言模型(NNLM)到后来的Word2vec,GloVe等等。
他们最大的缺点就是词向量是固定的,也就是语义消除的问题。他们不包含上下文语义信息,因此接下来的模型就是基于解决这个问题展开的。
Word2Vec有两种训练方法,一种叫CBOW,核心思想是从一个句子里面把一个词抠掉,用这个词的上文和下文去预测被抠掉的这个词;第二种叫做Skip-gram,和CBOW正好反过来,输入某个单词,要求网络预测它的上下文单词。
ELMo
ELMO是“Embedding from Language Models”的简称,论文名称为:“Deep contextualized word representation”
如何预训练:给定一个句子的上文,然后预测下一个缺失的单词;或者句子的后半部分(下文),来预测缺失的单词,即对应上图两个各自独立的不同方向的LSTM
训练完如何用:
GPT
GPT是“Generative Pre-Training”的简称
和ELMo的区别
- 特征抽取器不是用的RNN,而是用的Transformer
- 预训练时采用的目标任务是单向的,即给定上文预测缺失词,而没有设定给下文反过来预测缺失词
训练完如何用:
BERT
BERT与ELMo、GPT的区别
- 与ELMo比,RNN换成了Transformer
- 与GPT比,单向的目标任务改成了和ELMo一样的双向任务
- 同时设计了一个Masked LM:我们不是像传统LM那样给定已经出现过的词,去预测下一个词,而是直接把整个句子的一部分词(随机选择)盖住(make it masked),这样模型不就可以放心的去做双向encoding了嘛,然后就可以放心的让模型去预测这些盖住的词是啥。这个任务其实最开始叫做cloze test
训练完如何用:
BERT中encoding了更多丰富的信息,因此下游任务的网络设计就变得很简单,比如直接加Softmax或者MLP就行了,不再需要复杂的attention等网络结构
以上四者的关系
Tiny BERT
Google T5
XLNet
PLM随机排列一些词来预测其他词汇
GPT2.0
把任务信息也包含进文本序列
如翻译任务:
“I am boy” is translated to “我是一个男孩”
然后随机mask掉一些词进行预测pretrain model
参考博客
以上是关于NLP pretrained model的主要内容,如果未能解决你的问题,请参考以下文章
解释 - x = tf.Keras.layers.Dense(128, activation='relu')(pretrained_model.output) [重复]
Fine-tune with Pretrained Models