静态词向量

poc跟demo有什么区别_自然语言处理

静态词向量就是一个词对应一个向量,这类模型相当于一张存储所有词向量的大表,使用时查询即可。常见的有Word2vec、GloVe、FastText。如下图所示,“养只狗”和“单身狗”中的“狗”对应的向量是一样的(如上图中狗老大所言),但实际上语义上是有差别的:

poc跟demo有什么区别_poc跟demo有什么区别_02

上下文词向量(Contextualized Word Embedding)

这类模型是需要输入一个句子,根据上下文为词生成embedding。这类模型有ELMo、Bert等。如下图所示,由于上下文的不同,不同句子中的“狗”对应的embedding也不同。

poc跟demo有什么区别_机器学习_03

预训练的作用

举例,需要参加雅思、托福的考试,但学英语的时候是广泛的阅读英文文章,而不是做选择题;用中文举例好像更好理解,日常各位用中文交流都没有问题,但考语文前还是要针对性背一背诗词。

上述中托福、雅思、语文考试就相当于NLP中具体的任务,如情感分类、机器翻译等;而预训练模型相当于大家已经学会了中文或英文基本的知识。

ELMo

ELMo全称:Embedding from Language Model

概述

ELMo训练的不再只是一个词向量,而是一个包含多层Bi-LSTM的模型,然后对于每一个句子,都需要传入该模型,分别拿到每个时间步在每个层的输出,最后在具体的NLP任务中,再单独训练每一层的权重向量,对每一层的向量进行线性加权作为每个词汇的最终向量表示。这样一来,每个词汇在不同的上下文语境中,都可以得到不同的向量表示,因此,在一定意义上可以解决一词多义的问题。

ELMo预训练阶段

ELMo预训练的任务是预测下一个token,其采用Bi-LSTM,分别完成由前文预测后文和由后文预测前文的任务。先看一个单层Bi-LSTM的模型,如下图所示,设有句子poc跟demo有什么区别_深度学习_04,其由7个词组成。前向LSTM由poc跟demo有什么区别_深度学习_05可以预测poc跟demo有什么区别_机器学习_06;后向LSTM由poc跟demo有什么区别_深度学习_07可以预测poc跟demo有什么区别_深度学习_08。该学习过程属于自监督学习。

poc跟demo有什么区别_机器学习_09


实际上,ELMo采用了双层Bi-LSTM,示意图如下:

poc跟demo有什么区别_poc跟demo有什么区别_10


由上图可知,只是将第一层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用于具体任务,而权重就是需要学习的参数。具体如下:

poc跟demo有什么区别_机器学习_11

ELMo的缺点

ELMo相较于Bert模型来说,有以下缺点:
(1) ELMo在特征抽取器选择方面使用的是LSTM,而不是更好用Transformer,Bert中使用的便是Transformer,Transformer是个叠加的自注意力机制构成的深度网络,是目前NLP里最强的特征提取器

(2) ELMo采用双向拼接融合特征,相对于Bert一体化融合特征方式可能较弱