https://zhuanlan.zhihu.com/p/49271699

[toc]

语言模型

判断哪句话更像人话 / 预测句子的上一个或下一个词

词嵌入(word embedding)

将单词转化为向量表示,embedding就相当于encoding

两大词嵌入算法:Word2Vec,Glove

Word2Vec[NIPS’13]

一种词嵌入算法,Word2Vec有两种训练方法

如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』

而如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』(continous bag of word)

Glove[EMNLP’14]

one-hot向量到word embedding可看做神经网络的第一层

多义词问题的解决

词嵌入的问题:相同的词只有一个embedding,不能区分多义词的词义

ELMO(Embedding from Language Models)

NLP的预训练效果不好,为了解决多义词问题,根据当前上下文对Word Embedding动态调整。把第二层、第三层的语法特征、语义特征也一并输入。

不仅解决了多义词问题,还区分了词性

NLP的预训练发展(ELMO、GPT、Bert) - 图1

GPT(Generative Pre-Training)

和ELMO相比,特征提取器不用RNN,为Transformer。

仍然以语言模型为目标任务,但是是单向的语言模型。

第一个阶段是利用语言模型进行预训练

GPT在第二阶段如何使用。首先,对于不同的下游任务来说,本来你可以任意设计自己的网络结构,现在不行了,你要向GPT的网络结构看齐,把任务的网络结构改造成和GPT的网络结构是一样的。然后,在做下游任务的时候,利用第一步预训练好的参数初始化GPT的网络结构,这样通过预训练学到的语言学知识就被引入到你手头的任务里来了,这是个非常好的事情。再次,你可以用手头的任务去训练这个网络,对网络参数进行Fine-tuning,使得这个网络更适合解决手头的问题。就是这样。看到了么?这有没有让你想起最开始提到的图像领域如何做预训练的过程?对,这跟那个模式是一模一样的。

GPT论文给了一个改造施工图如上,其实也很简单:对于分类问题,不用怎么动,加上一个起始和终结符号即可;对于句子关系判断问题,比如Entailment,两个句子中间再加个分隔符即可;对文本相似性判断问题,把两个句子顺序颠倒下做出两个输入即可,这是为了告诉模型句子顺序不重要;对于多项选择问题,则多路输入,每一路把文章和答案选项拼接作为输入即可。从上图可看出,这种改造还是很方便的,不同任务只需要在输入部分施工即可。

Bert

Bert采用和GPT完全相同的两阶段模型,首先是语言模型预训练;其次是使用Fine-Tuning模式解决下游任务。和GPT的最主要不同在于在预训练阶段采用了类似ELMO的双向语言模型,当然另外一点是语言模型的数据规模要比GPT大。

NLP的预训练发展(ELMO、GPT、Bert) - 图2

对于种类如此繁多而且各具特点的下游NLP任务,Bert如何改造输入输出部分使得大部分NLP任务都可以使用Bert预训练好的模型参数呢?上图给出示例,对于句子关系类任务,很简单,和GPT类似,加上一个起始和终结符号,句子之间加个分隔符即可。对于输出来说,把第一个起始符号对应的Transformer最后一层位置上面串接一个softmax分类层即可。对于分类问题,与GPT一样,只需要增加起始和终结符号,输出部分和句子关系判断任务类似改造;对于序列标注问题,输入部分和单句分类是一样的,只需要输出部分Transformer最后一层每个单词对应位置都进行分类即可。从这里可以看出,上面列出的NLP四大任务里面,除了生成类任务外,Bert其它都覆盖到了,而且改造起来很简单直观。尽管Bert论文没有提,但是稍微动动脑子就可以想到,其实对于机器翻译或者文本摘要,聊天机器人这种生成式任务,同样可以稍作改造即可引入Bert的预训练成果。只需要附着在S2S结构上,encoder部分是个深度Transformer结构,decoder部分也是个深度Transformer结构。根据任务选择不同的预训练数据初始化encoder和decoder即可。这是相当直观的一种改造方法。当然,也可以更简单一点,比如直接在单个Transformer结构上加装隐层产生输出也是可以的。不论如何,从这里可以看出,NLP四大类任务都可以比较方便地改造成Bert能够接受的方式。这其实是Bert的非常大的优点,这意味着它几乎可以做任何NLP的下游任务,具备普适性,这是很强的。

NLP的预训练发展(ELMO、GPT、Bert) - 图3

怎么将预训练模型和特定任务相结合

https://youtu.be/1_gRK9EIQpc