ELMo解讀

背景

之前我們提到的NNLMWord2Vec開闢了詞向量的先河。仔細回顧,我們可以知道,爲了解決統計語言模型存在的稀疏性,平滑等問題,NNLM運用神經網絡對語言模型進行建模,採用輸入若干個詞預測下一個詞,結果發現第一層的embedding vector可以很好的反應詞的語義在空間上的表達,因此NNLM是語言模型,詞向量是副產物。對於word2vec同樣如此,相比NNLM, word2vec做了多改進(刪掉隱藏層減少參數,negative sampling,層次softmax等),使得得到詞向量更加快速高效。但這兩個模型存在一個缺點,模型訓練完畢後,詞向量就固定了,但是一個詞在不同語境下的詞又很大的不同(比如蘋果這個詞,可以代表水果也能是手機);另外一個詞在不同語境相同意思,也有不同詞性,比如一個詞既可以是動詞也可以是名詞,因此我們發現 無論是NNLM還是word2vec都無法解決這兩個問題。
ELMo(Embedding from Language Model)和之前的詞向量模型最大的區別就在於解決了這個問題。論文爲2018NAACL最佳論文《Deep contextualized word representations》

ELMo

Elmo解決了如下兩個問題

(1) complex characteristics of word use (e.g., syntax and semantics),
(2) how these uses vary across linguistic contexts (i.e., to model polysemy)

一個是詞使用時的複雜語法和語義(一個詞在不同語境詞性不同,比如既可以是動詞也可以是名詞,既可以是主語也可以是謂語),第二個是一詞多義。

Our representations differ from traditional word type embeddings in that each token is assigned a representation that is a function of the entire input sentence. We use vectors derived from a bidirectional LSTM that is trained with a coupled language model (LM) objective on a large text corpus.

ELMo和之前詞向量模型的不同就是詞向量不是固定唯一,是由整個輸入的句子動態決定的,具體是用一個多層雙向的LSTM網絡訓練語言模型,最後的representation是每層LSTM狀態的線性組合。

Bidirection Language Model

首先介紹雙向語言模型。
對於前向語言模型
p(t1,t2,,tN)=k=1Np(tkt1,t2,,tk1) p(t1,t2,{\cdots},t_N) = \prod_{k=1}^Np(t_k|t1,t2,{\cdots},t_{k-1})
其中句子的概率通過某個詞tkt_k的前k-1的概率連乘得到。對於前向LSTM,每層LSTM的隱狀態hk,jLM(j=1,2,...L)\overrightarrow{h}_{k,j}^{LM}(j=1,2,...L)表示第j層第k個詞的輸出,輸出層hk,LLM\overrightarrow{h}_{k,L}^{LM}使用softmax計算預測下一個詞(即第k+1k+1個詞)tk+1t_{k+1}的概率
對於後向語言模型, 基本類似,我們可以得到
p(t1,t2,,tN)=k=1Np(tktk+1,tk+2,,tN) p(t1,t2,{\cdots},t_N) = \prod_{k=1}^Np(t_k|t_{k+1},t_{k+2},{\cdots},t_N)
對於後向LSTM,每層LSTM的隱狀態則用hk,jLM(j=1,2,...L)\overleftarrow{h}_{k,j}^{LM}(j=1,2,...L)表示

雙向語言模型(Bidirection Language Model, Bi-LM)結合以上兩個部分, 目標是最大化前向和後項似然log概率之和
kN(log(p(tkt1,t2,...tk1;Θx,ΘLSTM,Θs))+log(p(tktk+1,tk+2,...tN;Θx,ΘLSTM,Θs))) \sum_k^N(\log(p(t_k|t_1,t_2,...t_{k-1};\Theta_x, \overrightarrow{\Theta}_{LSTM}, \Theta_s)) + \log(p(t_k|t_{k+1},t_{k+2},...t_N;\Theta_x, \overleftarrow{\Theta}_{LSTM}, \Theta_s)))
其中Θx\Theta_x表示輸入的embedding和Θs\Theta_s表示輸出的softmax layer。可以發現前向和後項共享softmax layer和輸入embedding等參數,但是LSTM網絡的參數是互相獨立的。

ELMo模型架構

模型架構如下圖所示
ELM模型架構
ELMo就是以上Bi-LM的中間層的組合,具體組合方式取決與後續任務。對於一個L層stack的LSTM網絡結構,這裏我們第k個詞的representation和2L+1個的representation有關
Rk={xkLM,hk,jLM,hk,jLMj=1,2,...,L}={hk,jLMj=0,1,...,L} \begin{aligned} R_k & =\{x_k^{LM},\overrightarrow{h}_{k,j}^{LM},\overleftarrow{h}_{k,j}^{LM}|j=1,2,...,L\} \\ & = \{{h}_{k,j}^{LM}|j=0,1,...,L\} \\ \end{aligned}
這裏hk,0LM{h}_{k,0}^{LM}表示輸入embedding,hk,jLM{h}_{k,j}^{LM}爲前向後項的concat結果,hk,jLM=[hk,jLM;hk,jLM]{h}_{k,j}^{LM}=[\overrightarrow{h}_{k,j}^{LM};\overleftarrow{h}_{k,j}^{LM}]
對於下游模型,ELMo將以上進行線性疊加
ELMoktask=E(Rk;Θtask)=γtaskj=0Lsjtaskhk,jLM ELMo_k^{task} = E(R_k;\Theta^{task}) = \gamma^{task}\sum_{j=0}^Ls_j^{task}{h}_{k,j}^{LM}
sjtasks_j^{task}爲第j層的softmax後的加權係數,γtask\gamma^{task}爲最後的scale係數

模型訓練好後,對於下游監督學習的NLP任務,對於給定的的Bi-LM模型,我們首先freeze雙向語言模型參數,學習ELMo中的softmax後的線性權重參數sjtasks_j^{task}和scaling係數γtask\gamma^{task},計算得到ELMo的輸出作爲具體下游任務的輸入,並且同時下游任務的具體參數也同時進行學習

總結

實驗結局表明那些對詞義消歧有需求的任務就更容易通過訓練給第二隱層一個很大的權重,而對詞性、句法有明顯需求的任務則可能對第一隱層的參數學習到比較大的值,這樣一來,一開始說到的兩個問題即一詞多義問題和語法語義問題就能通過學習不同的參數進行解決。

總結一下,本質上ELMo解決一詞多義的方法是先通過雙向語言模型預訓練出一個詞向量,實際下游任務中通過學習不同語境下的不同線性組合,動態調整詞在輸入時的詞向量,從而達到更好的語義語法表達同時消除一詞多義。

優點

  1. word embeding不再是靜態不變,而是根據輸入句子不同而動態變化解決了一次多義問題
  2. 採用雙向LSTM語言模型,比word2vec一個固定窗口,得到句子更長的依賴關係,更多的context信息,模型效果更佳

缺點

  1. 雙向lstm對語言模型建模不如attention model
  2. 雙向語言模型採用拼接的方式得到,特徵融合能力較弱
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章