深度学习-NLP(7)ELMO

ELMO-具有上下文语境的词嵌入

https://zhuanlan.zhihu.com/p/504527165

ELMO-具有上下文语境的词嵌入-长文多图预警

1.从静态词嵌入到动态词嵌入(具有语境的词嵌入)

词嵌入:将词用一个具有语义信息的多维向量来表示

静态词嵌入:多维稠密向量来表示,是一个固定的向量,不会根据语境的差异发生改变, 没办法结合语境给出正确的词向量,即一词多义的问题

动态词嵌入:根据不同的上下文语境调整词的语义,能较好的应对一词多义(polysemy)问题

如何做到动态词嵌入呢?NAACL 2018 best paper ELMO(Embeddings from Language Model)能给你一个较好的答案

2.ELMO:Deep Contextualized Word Representations

可以看到模型整体由 前向+后向LSTMCNN 字符嵌入组成,详情见下图,还是非常直观的

  • CNN字符嵌入: 输入一句话(多个word) 先由CNN字符嵌入进行编码 得到每个word的词向量,简单来说就是把一个词分解成字母,然后对字母进行卷积操作获得词向量;
  • 将词向量按照顺序分别输入到前向 后向 LSTM中进行嵌入:其实就是基于已知的词预测下一个词,对词的编码采用LSTM架构(不熟悉LSTM的话就简单看成是一个编码器就行了)前向+后向分别是从前到后和从后到前,注意:前向和后向的LSTM之间并不连接,why? 假如连接了预测过程就相当于泄题了,这个地方比较抽象,让我再深入一下:
    • 假如这里有一句话,由N个词组成 [公式] 组成,LSTM具有较好的记忆能力,能够记忆已经给出序列的信息,前向LSTM从前向后扫的时候会不停的记忆已知的信息,每一时刻预测结果出来以后会将其信息存储起来,这样每次预测下一时刻信息的时候都会已知前面词的信息,比如:预测 [公式] 时已知 [公式] ;预测 [公式] 时已知 [公式].
    • 相应的,后向LSTM也一样,只不过词的输入顺序反过来了,在这里是从 [公式] 当t=N-1的时候,(就相当于前向LSTM的t=2时刻), 后向LSTM会存储着 [公式] 的信息
    • 对于前向LSTM来说,在t=3时刻,预测x_3, 后向LSTM存储着的 [公式] 信息,由于前向LSTM与后向LSTM的连接给了两者信息交互的机会(泄题的机会),因此这时候后向的LSTM会告诉前向LSTM:嘿 boy,不要再猜了,答案就是X3
  • 将CNN层的输出与多个LSTM层的输出拼接在一起 就得到一个词的表示了