word2vec–>GloVe–>ELMo
原文:Deep contextualized word representations
背景
在此之前常用的词嵌入方法为word2vec和GloVe,但是这些词嵌入方法无法处理多义词,不考虑词语所处的上下文。该文提出了一种新型的深度语境化词汇表征。既可以考虑句法和语义,也可以模拟一词多义。这些词向量是深度双向语言模型(biLM)内部状态的学习函数。(即通过语言模型,然后把语言模型中间隐含层的输出提取出来,通过线性组合,形成符合上下文语义的词向量)
biLMs
ELMo建立在biLMs(双向语言模型)上,可分为正向LSTM和逆向LSTM两个部分。
具体来说,给定一个有N个token的序列 ( t 1 , t 2 , . . . , t N ) (t_1,t_2,...,t_N) (t1,t2,...,tN),前向模型用于计算给定前面tokens的情况下,当前token 的概率,即:
p ( t 1 , t 2 , . . . , t N ) = ∏ k = 1 N p ( t k ∣ t 1 , t 2 , . . . , t k − 1 ) p(t_1,t_2,...,t_N)=\prod_{k=1}^N p(t_k|t_1,t_2,...,t_{k-1}) p(t1,t2,...,tN)=∏k=1Np(tk∣t1,t2,...,tk−1)
逆向模型亦是如此,即:
p ( t 1 , t 2 , . . . , t N ) = ∏ k = 1 N p ( t k ∣ t k + 1 , t k + 2 , . . . , t N ) p(t_1,t_2,...,t_N)=\prod_{k=1}^N p(t_k|t_{k+1},t_{k+2},...,t_N) p(t1,t2,...,tN)=∏k=1Np(tk∣tk+1,tk+2,...,tN)
ELMo用的biLMs就是同时结合正向和反向的语言模型,其目标是最大化如下的似然值:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qRMN9rXG-1663085458822)(C:\Users\polemin\AppData\Roaming\marktext\images\2022-09-13-15-17-29-image.png)]
里面的 Θ x 、 Θ s Θ_x、Θ_s Θx、Θs和 Θ → L S T M \overrightarrow{Θ}_{LSTM} ΘLSTM及 Θ ← L S T M \overleftarrow{Θ}_{LSTM} ΘLSTM分别是词嵌入,输出层(Softmax之前的)以及正反向LSTM的参数。
生成ELMo词向量
对于每个单词(token) t k t_k tk ,对于L层的双向lstm语言模型,一共有2L+1个表征(加的1是指初始化时的词向量),放一个集合里用 R k R_k Rk表示:
R k = { x k L M , h → k , j L M , h ← k , j L M ∣ j = 1 , . . . , L } = { h k , j L M ∣ j = 0 , . . . , L } R_k=\{x_k^{LM},\overrightarrow{h}_{k,j}^{LM},\overleftarrow{h}_{k,j}^{LM}|j=1,...,L\}=\{h_{k,j}^{LM}|j=0,...,L\} Rk={xkLM,hk,jLM,hk,jLM∣j=1,...,L}={hk,jLM∣j=0,...,L}
将2L+1个表征与每层的权重相乘,最后再乘以一个权重就可以生成一个ELMo向量。
与每层的权重相乘,最后再乘以一个权重就可以生成一个ELMo向量。