【NLP】ELMO

一、含義:

1、ELMO的本質思想:
先用語言模型學好一個單詞的Word Embedding,此時多義詞無法區分。接下來在實際使用Word Embedding的時候,單詞已經具備了特定的上下文了,這個時候可以根據上下文單詞的語義去調整單詞的Word Embedding表示,這樣經過調整後的Word Embedding更能表達在這個上下文中的具體含義,自然也就解決了多義詞的問題了。
2、ELMO的優點
根據當前上下文對Word Embedding動態調整的思路,使得單詞在不同語義中有不同的Word Embedding,決解了多義詞問題。之前學習的詞袋模型、Word2Vec的Word Embedding本質上靜態的方式,所謂靜態指的是訓練好之後每個單詞的表達就固定住了。無法根據語義對多義詞進行分辨。

二、基本原理

ELMO採用了典型的兩階段過程,第一個階段是利用語言模型進行預訓練;第二個階段是在做下游任務時,從預訓練網絡中提取對應單詞的網絡各層的Word Embedding作爲新特徵補充到下游任務中。

1、預訓練過程:
它的網絡結構採用了雙層雙向LSTM,目前語言模型訓練的任務目標是根據單詞 W i W_i 的上下文去正確預測單詞 W i W_i W i W_i 之前的單詞序列Context-before稱爲上文,之後的單詞序列Context-after稱爲下文。圖中左端的前向雙層LSTM代表正方向編碼器,輸入的是從左到右順序的除了預測單詞外 W i W_i 的上文Context-before;右端的逆向雙層LSTM代表反方向編碼器,輸入的是從右到左的逆序的句子下文Context-after;每個編碼器的深度都是兩層LSTM疊加。這個網絡結構其實在NLP中是很常用的。
使用這個網絡結構利用大量語料做語言模型任務就能預先訓練好這個網絡,如果訓練好這個網絡後,輸入一個新句子 Snew ,句子中每個單詞都能得到對應的三個Embedding:最底層是單詞的Word Embedding,往上走是第一層雙向LSTM中對應單詞位置的Embedding,這層編碼單詞的句法信息更多一些;再往上走是第二層LSTM中對應單詞位置的Embedding,這層編碼單詞的語義信息更多一些。也就是說,ELMO的預訓練過程不僅僅學會單詞的Word Embedding,還學會了一個雙層雙向的LSTM網絡結構,而這兩者後面都有用。
在這裏插入圖片描述
2、做下游任務:
下圖展示了下游任務的使用過程,比如我們的下游任務仍然是QA問題。
(1)將問句X作爲預訓練好的ELMO網絡的輸入
(2)經過與訓練過程,句子X中每個單詞在ELMO網絡中都能獲得對應的三個Embedding
(3)之後給予這三個Embedding中的每一個Embedding一個權重a,這個權重可以學習得來,根據各自權重累加求和,將三個Embedding整合成一個。
(4)然後將整合後的這個Embedding作爲X句在自己任務的那個網絡結構中對應單詞的輸入,以此作爲補充的新特徵給下游任務使用。
對於下圖所示下游任務QA中的回答句子Y來說也是如此處理。因爲ELMO給下游提供的是每個單詞的特徵形式,所以這一類預訓練的方法被稱爲「Feature-based Pre-Training」。
在這裏插入圖片描述 參考文獻: 網易雲課堂NLP課程:文本表示:詞向量的構建與分佈表示