ELMo (Embeddings from Language Models)
引入了一种新的深度上下文单词表示,不仅能对单词使用的复杂特征(如语法和语义)进行建模,还能根据上下文语境的不同做出改变(一词多义)。
与传统的单词类型嵌入不同,每一个token的表示是整个输入句子的函数。它们是在带有字符卷积的两层biLMs上计算的
双向语言模型
给定N个token的序列,(t1,t2,……,tN),对于前向语言模型(forward language model)来说,tk是由前面的token计算出来的:
后向语言模型(backward language model)是这样的:
biLM就是结合了上述两种模型,最大化前向和后向的对数似然:
两个方向的是独立的,
就是一开始输入的词向量,
就是softmax层参数。
ELMo
对于token tk,L层的biLM可以计算出2L+1个表达:
是输入的token层,
对于下游的具体任务,ELMo把所有层的压缩在一起形成一个单独的vector:
其中,γ可以对特定任务的模型的ELMo向量进行大小缩放,s是softmax-normalized权重。
将ELMo用于下游任务supervised model时,首先固定biLM的权重,把与Xk结合,得到ELMo enhanced representation [Xk;
],输入NLP 模型中。