从Word Embedding到Bert模型
一、Word Embedding
注意:
1、word embedding相当于预训练,将onehot层到embedding层的参数用矩阵Q初始化了。
2、使用word embedding有两种做法,一个是Frozen,另一种是Fine-Tuning。
1.1 神经网络语言模型(NNLM)
学习任务是输入某个句中单词 W t = “ B e r t ” \ W_t= “Bert” Wt=“Bert” 前面句子的t-1个单词,要求网络正确预测单词Bert,即最大化:
P ( W t = “ B e r t ” ∣ W 1 , W 2 , . . . W ( t − 1 ) ; θ ) \ P(W_t =“Bert”|W_1,W_2,...W_{(t-1)}; \theta ) P(Wt=“Bert”∣W1,W2,...W(t−1);θ)
注意:
1、矩阵Q含V行,代表字典大小
2、每一行内容代表对应单词的Word embedding值
3、矩阵Q最开始被随机赋值,训练好后矩阵Q被正确赋值
1.2 Word2vec
用来做Word Embedding的工具。
注意:Word2vec和NNLM类似,主要区别在前者专注word embedding而后者需要解决看上文预测下文的任务word embedding只是无心之举。
上述得到word embedding的方法受限于多义词(可称为静态),致使下游NLP使用时结果并不理想。ELMO提供了一种较为简洁的解决方法。
二、ELMO
ELMO本质:事先学好单词的word embedding,此时仍然无法区分多义词。不过,在实际使用时根据上下文调整单词的word embedding表示。(可理解为动态)
2.1 ELMO的第一阶段-预训练
注意:
任务:根据单词Wi的上下文去正确预测单词Wi
网络结构:双层双向LSTM
结果:每个单词能得到三个对应的embedding
1、底层:单词的word embedding
2、第一层LSTM:单词位置的Embedding,句法信息更多
3、第二次LSTM:单词位置的Embedding,语义信息更多
2.2 ELMO的第二阶段
预训练之后,下游任务在使用时给每个embedding一个权重a(学习所得),根据权重累加求和,将三个embedding整合为一个新特征来使用。新特征作为输入句子在自己任务的那个网络结构中对应单词的输入。
三、GPT
GPT也采用两阶段过程,第一个阶段是利用语言模型进行预训练,第二阶段通过Fine-tuning的模式解决下游任务。
3.1 GPT的第一阶段-预训练
与ELMO预训练的主要不同:
1、用Transformer代替LSTM,特征抽取能力提高
2、单向语言模型,不同于ELMO同时使用上下文来预测单词,GPT只采用上文。
3.2 GPT的第二阶段-Fine-tuning
下游任务使用流程:
1、将任务的网络结构改造成和GPT的网络结构是一样的
2、利用第一步预训练好的参数初始化GPT的网络结构
3、用手头的任务去训练这个网络,对网络参数进行Fine-tuning
网络结构改造:
四、BERT
与GPT的对比:
1、在预训练阶段采用了类似ELMO的双向语言模型
2、语言模型的数据规模要比GPT大。
4.1 BERT的第一阶段-预训练
与GPT类似,不过同时采用上下文来进行预测。
4.2 BERT的第二阶段-Fine-tuning
Fine-Tuning阶段,这个阶段的做法和GPT是一样的。只是网络结构改造有些许不同。
NLP四大类任务都可以比较方便地改造成Bert能够接受的方式。这是Bert的优点,这意味着它几乎可以做任何NLP的下游任务。
4.3 BERT模型创新
4.3.1 MSKED LM
此双向语言模型类似于完形填空。随机选择语料中15%的单词,用[mask]替换掉原始单词,并要求模型预测原来的单词。
但是在过程中:
1、80%的时间换成真正的[mask]
2、10%的时间替换成随机单词
3、10%的时间保持原来的单词
4.3.2 Next Sentence Prediction
做语言模型预训练的时候,分两种情况选择两个句子:1、选择语料中真正顺序相连的两个句子 2、随机选择一个拼到第一个句子后面。并要求模型判断两句话是否连续。