ELMo來自論文:Deep contextualized word representations
**
在之前的文章中提到過LSTM模型,ELMO使用雙向LSTM預訓練語言模型,是一種新型詞表徵的方式。
1.ELMo模型
**
ELMO採用了典型的兩階段過程,第一個階段是利用語言模型進行預訓練;第二個階段是在做下游任務時,從預訓練網絡中提取對應單詞的網絡各層的Word Embedding作爲新特徵補充到下游任務中。
**
1.1利用語言模型進行預訓練
**
上圖中左端的前向雙層LSTM代表正方向編碼器,輸入的是從左到右順序的除了預測單詞外W_i的上文Context-before;右端的逆向雙層LSTM代表反方向編碼器,輸入的是從右到左的逆序的句子下文Context-after;每個編碼器的深度都是兩層LSTM疊加。其目的是獲取前向和後向的最大似然。
使用這個網絡結構利用大量語料做語言模型任務就能預先訓練好這個網絡,如果訓練好這個網絡後,輸入一個新句子,句子中每個單詞都能得到對應的三個Embedding:
- 最底層是單詞的Word Embedding
- 往上走是第一層雙向LSTM中對應單詞位置的Embedding,這層編碼單詞的句法信息更多一些;
- 再往上走是第二層LSTM中對應單詞位置的Embedding,這層編碼單詞的語義信息更多一些。
也就是說,ELMO的預訓練過程不僅僅學會單詞的Word Embedding,還學會了一個雙層雙向的LSTM網絡結構,而這兩者後面都有用。
**
1.2 下游任務利用預訓練好的embedding
**
以QA問題爲例,展示下游任務如何利用預訓練好的embedding。對於問句X,我們可以先將句子X作爲預訓練好的ELMO網絡的輸入,這樣句子X中每個單詞在ELMO網絡中都能獲得對應的三個Embedding,之後給予這三個Embedding中的每一個Embedding一個權重a,這個權重可以學習得來,根據各自權重累加求和,將三個Embedding整合成一個。然後將整合後的這個Embedding作爲X句在自己任務的那個網絡結構中對應單詞的輸入,以此作爲補充的新特徵給下游任務使用。對於上圖所示下游任務QA中的回答句子Y來說也是如此處理。因爲ELMO給下游提供的是每個單詞的特徵形式,所以這一類預訓練的方法被稱爲“Feature-based Pre-Training”。
**
2.ELMo模型的訓練過程
**
ELMo的訓練過程實際上指的是其第一階段的預訓練過程,第一階段實際上就是在訓練一個雙向語言模型,假設給定一個序列,該序列含有N個token,那麼:
- 前向語言模型通過在給定上文Context-before的情況下對token t_k的概率建模來計算序列出現的概率:
- 後向語言模型與前向類似,但是它是“從後往前建模的”,通過在給定下文Context-after的情況下對token t_k的概率建模來計算序列出現的概率:
因此,由於ELMo結合了前後向語言模型,故其目標是同時最大化前後向語言模型的對數似然:
**
ELMo對於每個token , 通過一個L層的bilstm計算出2L+1個表示:
其中第一項是對token直接編碼結果。
2.總結
**
2.1 ELMO模型的效果爲什麼比word2vec好?
- ELMo的假設前提一個詞的詞向量不應該是固定的,所以在一詞多意方面ELMo的效果一定比word2vec要好。
- word2vec的學習詞向量的過程是通過中心詞的上下窗口去學習,學習的範圍太小了,而ELMo在學習語言模型的時候是從整個語料庫去學習的,而後再通過語言模型生成的詞向量就相當於基於整個語料庫學習的詞向量,更加準確代表一個詞的意思。
- ELMo還有一個優勢,就是它建立語言模型的時候,可以運用非任務的超大語料庫去學習,一旦學習好了,可以平行的運用到相似問題。
2.2 ELMO有什麼缺點?
首先,一個非常明顯的缺點在特徵抽取器選擇方面,ELMO 使用了LSTM而不是新貴 Transformer,Transformer 是谷歌在 17 年做機器翻譯任務的“Attention is all you need”的論文中提出的,引起了相當大的反響,很多研究已經證明了 Transformer 提取特徵的能力是要遠強於LSTM的。如果 ELMO 採取 Transformer 作爲特徵提取器,那麼估計 Bert 的反響遠不如現在的這種火爆場面。另外一點,ELMO 採取雙向拼接這種融合特徵的能力可能比 Bert 一體化的融合特徵方式弱,但目前並沒有具體實驗說明這一點。