Deep contextualized word representations获得了NAACL 2018的outstanding paper award,其方法有很大的启发意义,本文则是对其做了一个简要梳理。
基于上述原因,论文作者提出了Deep contextualized word representation来解决这个问题,算法大致过程如下:
简单来说,ELMo模型是从深层的双向语言模型(deep bidirectional language model)中的内部状态(internal state)学习而来的
相较于之前的工作,ELMo的特点有:
语言模型的双向体现在对句子的建模:给定一个N个token的句子,\(\left(t_{1}, t_{2}, \ldots, t_{N}\right)\)
前向语言模型:从历史信息预测下一个词,即从给定的历史信息\(\left(t_{1}, \ldots, t_{k-1}\right)\)建模下一个token \(t_k\)的概率
\[p\left(t_{1}, t_{2}, \ldots, t_{N}\right)=\prod_{k=1}^{N} p\left(t_{k} | t_{1}, t_{2}, \ldots, t_{k-1}\right) \]对于一个L层的LSTM,设其输入是\(x_k^{LM}\) (token embedding),每一层都会输出一个context-dependent representation \(\overrightarrow {h}_{k, j}^{L M}\),LSTM的最后一层输出为\(\overrightarrow {h}_{k, L}^{L M}\),该输出会在Softmax layer被用来预测下一个token \(t_{k+1}\)
后向语言模型:从未来信息预测上一个词,即从给定的未来\(\left(t_{k+1}, \ldots, t_{N}\right)\)建模上一个token \(t_k\)的概率
\[p\left(t_{1}, t_{2}, \ldots, t_{N}\right)=\prod_{k=1}^{N} p\left(t_{k} | t_{k+1}, t_{k+2}, \ldots, t_{N}\right) \]同样地,对于一个L层的LSTM,设其输入是\(x_k^{LM}\) (token embedding),每一层都会输出一个context-dependent representation \(\overleftarrow {h}_{k, j}^{LM}\),LSTM的最后一层输出为\(\overleftarrow {h}_{k, L}^{L M}\),该输出会在Softmax layer被用来预测上一个token \(t_{k-1}\)
双向语言模型是前向、后向的一个综合,通过两个方向的对数极大似然估计来完成:
\[\begin{array}{l}{\sum_{k=1}^{N}\left(\log p\left(t_{k} | t_{1}, \ldots, t_{k-1} ; \Theta_{x}, \vec{\Theta}_{L S T M}, \Theta_{s}\right)\right.}\\{\left.\quad+\log p\left(t_{k} | t_{k+1}, \ldots, t_{N} ; \Theta_{x}, \overleftarrow \Theta_{L S T M}, \Theta_{s}\right)\right.} \end{array} \]其中:
biLM利用了biLSTM,biLSTM在前向和后向两个方向上共享了部分权重
对于一个token,ELMo会计算2L+12L+1个representation(输入的一个token embedding和前向、后向的2L个representation):
\[\begin{aligned} \pmb R_k&=\{x_k,\overrightarrow{\mathbf{h}}_{k, j}^{L M} ; \overleftarrow{\mathbf{h}}_{k, j}^{L M} |j=1,2,...,L\} \\ &=\{h_{k,j}|j=0,1,...,L\} \end{aligned} \]其中:
在下游任务中,ELMo将\(R\)的所有层压缩成一个向量\(\mathbf{E L M o k}=E\left(R_{k} ; \Theta_{e}\right)\)(在最简单的情况下,也可以只使用最后一层\(E\left(R_{k}\right)=\mathbf{h}_{k, L}^{L M}\):
\[\mathbf{E L M o}_{k}^{t a s k}=E\left(R_{k} ; \Theta^{t a s k}\right)=\gamma^{t a s k} \sum_{j=0}^{L} s_{j}^{t a s k} \mathbf{h}_{k, j}^{L M} \]其中:
从上述计算过程可以看出,ELMo是biLM多层输出的线性组合。
大致图解:
论文中结果:
给定一个\(N\)个token的句子,\(\left(t_{1}, t_{2}, \ldots, t_{N}\right)\),supervised NLP model处理的标准过程的输入是context-independent token词向量\(x_k\)(例如,One-Hot Encoding),加入ElMo有两种方式:
pip install allennlp
[1]Deep contextualized word representations
[2]李宏毅.深度学习