一.ElMO
背景:Word2vec,glove和fasttext虽然能表示语义和语法信息,但是并不能够区分一词多义
网络建构:
两个单向的LSTM进行拼接,把每层拼接的中间结果之和作为输出
Q:为啥不用BI-LSTM?
避免传播前后向未来要预测的信息
原理与损失函数:
前向模型:
后向模型:
目标函数最大化:
词向量的表示基于当前的句子上下文
高层LSTM:捕捉上下文的词特征(语义)
底层LSTM:捕捉句法层次信息(语法)
优点:
解决了一词多义
在一些任务上有提升
缺点:
LSTM串行,训练成本大
LSTM对长距离的提取特征不如Transformer
Elmo是对特征进行拼接,没有Bert对特征进行融合效果好
二. GPT1
背景:
深度学习需要大量标注数据:通过未标记数据的语言模型+少量标注数据解决这个问题
方法:
半监督方法处理语言理解任务
使用非监督预训练+监督微调
框架:
框架类似于decoder(除去了encoder-decoder-Multihead Attention),或者说带有Mask的attention
核心思路:
无监督训练:
本质是使用语言模型,前k个词去预测后面的词的最大概率
1.position的权重和输入word embeding的权重(乘以U矩阵)相加
2.同时经过n层transformer
3.最终最大化word embeding和最终层隐藏层对P(u)的预测结果
有监督微调:
训练在x输入下y的预测概率:
wy为y的embeding,h为最终隐藏层的向量
最终整个训练目标是使预训练的损失和微调的损失降到最小:
Q:怎么预测?
如图所示,输入的语句有 Start + text + Extract,则经过transformer后的Extract向量作为输出,经过linear层和softmax层去进行判断
缺点:
是个单向的语言模型(mask),只用前面的词训练后面的词。
三.Roberta vs Bert
1.Bert的mask是静态,即是每一轮mask的位置都是相同的,而Roberta的每一轮mask是动态的
2.去掉了NSP任务,Roberta任务Nsp任务没什么用,而且使用句子对浪费了输入空间大小
3.Roberta使用了更多的数据,更大的batch size,更长时间去训练
四.ALBert vs Bert
1.减少了参数,词表v到隐藏层h的中间,插入了较小的维度E,是V*H的训练量变成了V*E + E*H
2.共享所有层参数,每轮的Attention和FFN都是一样
3.Sop任务替换了NSP任务,负样本换成了句子对的逆序
4.Albert的预测是n-gram片段
5.对比于Bert large的参数:H:1024->4096,L:24->12,也就是说从Bert有深又窄的模型变为又宽又浅的模型
6.bert训练的时候采用了加速机制:90%的句子长度是128;而Albert中90%的句子长度是512