6.1 ELMo数学理解

Posted 炫云云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.1 ELMo数学理解相关的知识,希望对你有一定的参考价值。

语言模型

这篇文章主要是用pretrained bidirectional language model 来学你所需任务中的词向量的,这样做的好处是现在所用的词向量是有你任务中语料的上下文信息的。拿word2vec来说,原来的词向量都是在特定语料上直接训练的,你要做啥任务就直接把词向量搬过来做任务了,最多训练的时候fine-tune一下,基本很少训练,也学不到特定环境中的语义信息,特别是这篇文章中指出的一词多义。因此就有了ELMo(这个小名比较好记,也比较形象)。

双向语言模型

给定一个句子 ( t 1 , t 2 , . . . , t N ) (t_1, t_2, ...,t_N) (t1,t2,...,tN) ,前向语言模型的学习方式是
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}^Np(t_k|t_1,t_2,...,t_{k-1}) p(t1,t2,...,tN)=k=1Np(tkt1,t2,...,tk1)
给定 ( t 1 , t 2 , . . . , t k − 1 ) (t_1,t_2,...,t_{k-1}) (t1,t2,...,tk1) ,通过前向语言模型我们就可以得到 t k t_{k} tk 的表示 h k , j L M → \\overrightarrow{h^{LM}_{k,j}} hk,jLM ,输入到softmax layer里面就可以用来预测 t k t_{k} tk 了。k说明是第k个词,j的意思是LSTM layers的第j层

后向语言模型:

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}^Np(t_k|t_{k+1},t_{k+2},...,t_{N}) p(t1,t2,...,tN)=k=1Np(tktk+1,tk+2,...,tN)
给定 ( t k + 1 , . . . , t N ) (t_{k+1}, ...,t_N) (tk+1,...,tN) ,通过后向语言模型我们就可以得到 t k t_{k} tk 的表示 h k , j L M ← \\overleftarrow{h^{LM}_{k,j}} hk,jLM

biLM就是前向语言模型后向语言模型的结合,公式就是最大化前向和后向似然函数。
∑ k = 1 N ( l o g p ( t k ∣ t 1 , t 2 , . . . , t k − 1 ; θ x , θ → L S T M , θ s ) + l o g p ( t k ∣ t k + 1 , t k + 2 , . . . , t N ; θ x , θ ← L S T M , θ s ) ) \\sum_{k = 1}^N(logp(t_k|t_1,t_2,...,t_{k-1};\\theta_x,\\overrightarrow{\\theta}_{LSTM}, \\theta{s}) + logp(t_k|t_{k+1},t_{k+2},...,t_{N};\\theta_x,\\overleftarrow{\\theta}_{LSTM}, \\theta{s})) k=1N(logp(tkt1,t2,...,tk1;θx,θ LSTM,θs)+logp(tktk+1,tk+2,...,tN;θx,θ LSTM,θs))
θ x \\theta{x} θx 是token representation的参数, θ s \\theta{s} θs 是softmax layer的参数, θ → L S T M \\overrightarrow{\\theta}_{LSTM} θ LSTM θ ← L S T M \\overleftarrow{\\theta}_{LSTM} θ LSTM 分别是前向和后向模型的网络参数

ELMo

ELMo模型示意如图1


图 1 图1 1
图1 ELMo是由多个biLSTM叠加组成,输出每个词表征由 T i T_i Ti表示,是由L层biLSTM相应位置的隐藏向量组合而成。

不同于其他类型的模型采用最顶层的输出作为token的表示,Elmo采用多个层的线性加和作为token的表示,对于每个token,在一个 L L L 层的biLm中可以输出 2 L + 1 2L+1 2L+1个表示:
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^{LM}_k, \\overrightarrow{h^{LM}_{k,j}}, \\overleftarrow{h^{LM}_{k,j}} |j=1,...,L\\} =\\{h^{LM}_{k,j}|j=0,...L\\}

以上是关于6.1 ELMo数学理解的主要内容,如果未能解决你的问题,请参考以下文章

NLP的游戏规则从此改写?从word2vec, ELMo到BERT

无法理解高等数学怎么办?

6.1 Go语言中接口使用样例

转载理解矩阵

数学到底该理解哪些部分才能高效

从数学的角度理解函数式接口