全称是Embeddings from Language Models,从语言模型中学习到词向量。word2vec训练出的词向量有一个问题,一个词只有一个embbeding,实际上一个词会有多个含义,例如 苹果,可以代表水果,也可以代表手机,那么具体表示哪个可以根据上下文的语义来推测,这也是ELMO模型要解决的关键问题。
模型:
1.双向语言模型
- 双向体现在,使用双向的LSTM模型
- 语言模型体现在Ngram模式 p(tk | t1,t2,...,tk-1)
目标log似然函数为:
双向LSTM的参数是共享的。
2.ELMO
因为有L层LSTM,并且是双向的,所以有2L个representation,然后再加上token的一个representation,所以一共有2L+1个,这些都用来预测下一个词。
例如: 上图显示L=3, 要预测t5,就需要标红的7个representation来去做预测。
那么这7个representation,如何去预测t5呢?
最简单的版本,就用最上层的LSTM的2个representation去预测,这篇文章中,7个representation都要用上去。
其中=
公式中,参数sj 是做了softmax-normalized,是需要结合任务去学出来的。
refer : https://arxiv.org/abs/1802.05365