参考链接:
- https://www.bilibili.com/video/BV1JE411g7XF?p=25
- https://blog.csdn.net/linchuhai/article/details/97170541
预训练模型
静态词向量
静态词向量就是一个词对应一个向量,这类模型相当于一张存储所有词向量的大表,使用时查询即可。常见的有Word2vec、GloVe、FastText。如下图所示,“养只狗”和“单身狗”中的“狗”对应的向量是一样的(如上图中狗老大所言),但实际上语义上是有差别的:
上下文词向量(Contextualized Word Embedding)
这类模型是需要输入一个句子,根据上下文为词生成embedding。这类模型有ELMo、Bert等。如下图所示,由于上下文的不同,不同句子中的“狗”对应的embedding也不同。
预训练的作用
举例,需要参加雅思、托福的考试,但学英语的时候是广泛的阅读英文文章,而不是做选择题;用中文举例好像更好理解,日常各位用中文交流都没有问题,但考语文前还是要针对性背一背诗词。
上述中托福、雅思、语文考试就相当于NLP中具体的任务,如情感分类、机器翻译等;而预训练模型相当于大家已经学会了中文或英文基本的知识。
ELMo
ELMo全称:Embedding from Language Model
概述
ELMo训练的不再只是一个词向量,而是一个包含多层Bi-LSTM的模型,然后对于每一个句子,都需要传入该模型,分别拿到每个时间步在每个层的输出,最后在具体的NLP任务中,再单独训练每一层的权重向量,对每一层的向量进行线性加权作为每个词汇的最终向量表示。这样一来,每个词汇在不同的上下文语境中,都可以得到不同的向量表示,因此,在一定意义上可以解决一词多义的问题。
ELMo预训练阶段
ELMo预训练的任务是预测下一个token,其采用Bi-LSTM,分别完成由前文预测后文和由后文预测前文的任务。先看一个单层Bi-LSTM的模型,如下图所示,设有句子
[
w
1
,
.
.
.
,
w
7
]
[w_1,...,w_7]
[w1,...,w7],其由7个词组成。前向LSTM由
w
1
,
.
.
.
,
w
4
w_1,...,w_4
w1,...,w4可以预测
w
5
w_5
w5;后向LSTM由
w
7
,
.
.
.
,
w
5
w_7,...,w_5
w7,...,w5可以预测
w
4
w_4
w4。该学习过程属于自监督学习。
实际上,ELMo采用了双层Bi-LSTM,示意图如下:
由上图可知,只是将第一层LSTM输出的隐藏状态作为第二层LSTM的输入而已。
得益于双层Bi-LSTM,最终模型为每个token学到三个embedding:1.Word Embedding:Embedding层中的embedding;2.Syntactic Embedding:第一层LSTM捕获到浅层信息的embedding;3.Semantic Embedding:第二层LSTM捕获到语义方面的embedding。
ELMo用于下游任务
当ELMo应对具体任务时,只需要每个token学到的多个embedding加权求和得到最终的embedding用于具体任务,而权重就是需要学习的参数。具体如下:
ELMo的缺点
ELMo相较于Bert模型来说,有以下缺点:
(1) ELMo在特征抽取器选择方面使用的是LSTM,而不是更好用Transformer,Bert中使用的便是Transformer,Transformer是个叠加的自注意力机制构成的深度网络,是目前NLP里最强的特征提取器
(2) ELMo采用双向拼接融合特征,相对于Bert一体化融合特征方式可能较弱