• ELMo 词向量是由双向神经网络语言模型的内部多层向量的线性加权组成。

        • LSTM 高层状态向量捕获了上下文相关的语义信息,可以用于语义消岐等任务。

          如下图中的左图为语义消岐任务的结果,第一层、第二层分别表示单独使用 biLMrepresentation 的效果。结果表明:越高层的状态向量,越能够捕获语义信息。

        • LSTM 底层状态向量捕获了语法信息,可以用于词性标注等任务。

          如下图中的右图为词性标注任务的结果,第一层、第二层分别表示单独使用 biLMrepresentation 的效果。结果表明:越低层的状态向量,越能够捕获语法信息。

      • ELMo 词向量与传统的词向量(如:word2vec )不同。在ELMo 中每个单词的词向量不再是固定的,而是单词所在的句子的函数,由单词所在的上下文决定。因此ELMo 词向量可以解决多义词问题。

        下图中,GloVe 无法区分 play 这个单词的多种含义。而 ELMo 由于引入了上下文,因此可以区分其不同含义。

        六、ELMo - 图1

    1. ELMo 模型采用双向神经网络语言模型,它由一个前向LSTM 网络和一个逆向 LSTM 网络组成。ELMo 最大化句子的对数前向生成概率和对数逆向生成概率。

      六、ELMo - 图2

      • 前向 LSTM 网络和逆向 LSTM 网络共享embedding 层的参数 、共享 输出层的参数 六、ELMo - 图3

      ELMo 认为单词 的表达由 六、ELMo - 图4 个向量组成: ,是这 六、ELMo - 图5 个向量的函数。

      • 最简单的情况下,ELMo 取出第 层(或者其它单层)的输出作为词的表达:六、ELMo - 图6 。其中 : 表示向量的拼接。

      • 也可以直接采用这 个向量的均值作为单词 六、ELMo - 图7 的表达。

      • 可以给每层的向量一个权重,而这些权重(一共 个)可以从具体任务中学习到。

        此时ELMo 通用的词表达为:这 六、ELMo - 图8 个向量的加权:

        其中 六、ELMo - 图9 为对应层的权重的 softmax 归一化结果, ;而 六、ELMo - 图10 是所有层的缩放因子(与层的位置无关,由具体任务决定)。

    2. 应用 ELMo 时,首先训练无监督的 ELMo 模型,获取每个单词的 六、ELMo - 图11 个中间表示。然后在监督学习任务中,训练这 个向量的线性组合,方法为:

      • 冻结 ELMo 的模型参数并计算得到 六、ELMo - 图12
      • 拼接 和 六、ELMo - 图13,作为监督学习网络的输入,其中 是监督学习网络的单词输入 embedding
    3. 实验表明:在 ELMo 中添加 dropout 是有增益的。另外在损失函数中添加 六、ELMo - 图14 正则化能使得训练到的ELMo权重倾向于接近所有权重的均值。