-
ELMo
词向量是由双向神经网络语言模型的内部多层向量的线性加权组成。LSTM
高层状态向量捕获了上下文相关的语义信息,可以用于语义消岐等任务。如下图中的左图为语义消岐任务的结果,第一层、第二层分别表示单独使用
biLM
的representation
的效果。结果表明:越高层的状态向量,越能够捕获语义信息。LSTM
底层状态向量捕获了语法信息,可以用于词性标注等任务。如下图中的右图为词性标注任务的结果,第一层、第二层分别表示单独使用
biLM
的representation
的效果。结果表明:越低层的状态向量,越能够捕获语法信息。
ELMo
词向量与传统的词向量(如:word2vec
)不同。在ELMo
中每个单词的词向量不再是固定的,而是单词所在的句子的函数,由单词所在的上下文决定。因此ELMo
词向量可以解决多义词问题。下图中,
GloVe
无法区分play
这个单词的多种含义。而ELMo
由于引入了上下文,因此可以区分其不同含义。
ELMo
模型采用双向神经网络语言模型,它由一个前向LSTM
网络和一个逆向LSTM
网络组成。ELMo
最大化句子的对数前向生成概率和对数逆向生成概率。- 前向
LSTM
网络和逆向LSTM
网络共享embedding
层的参数 、共享 输出层的参数 。
ELMo
认为单词 的表达由 个向量组成: ,是这 个向量的函数。最简单的情况下,
ELMo
取出第 层(或者其它单层)的输出作为词的表达: 。其中:
表示向量的拼接。也可以直接采用这 个向量的均值作为单词 的表达。
可以给每层的向量一个权重,而这些权重(一共 个)可以从具体任务中学习到。
此时
ELMo
通用的词表达为:这 个向量的加权:其中 为对应层的权重的
softmax
归一化结果, ;而 是所有层的缩放因子(与层的位置无关,由具体任务决定)。
- 前向
应用
ELMo
时,首先训练无监督的ELMo
模型,获取每个单词的 个中间表示。然后在监督学习任务中,训练这 个向量的线性组合,方法为:- 冻结
ELMo
的模型参数并计算得到 。 - 拼接 和 ,作为监督学习网络的输入,其中 是监督学习网络的单词输入
embedding
。
- 冻结
- 实验表明:在
ELMo
中添加dropout
是有增益的。另外在损失函数中添加 正则化能使得训练到的ELMo
权重倾向于接近所有权重的均值。