1、概述
word embedding 是現在自然語言處理中最常用的 word representation 的方法,常用的word embedding 是word2vec的方法,然而word2vec本質上是一個靜態模型,也就是說利用word2vec訓練完每個詞之后,詞的表示就固定了,之后使用的時候,無論新句子上下文的信息是什么,這個詞的word embedding 都不會跟隨上下文的場景發生變化,這種情況對于多義詞是非常不友好的。例如英文中的 Bank這個單詞,既有河岸的意思,又有銀行的意思,但是在利用word2vec進行word embedding 預訓練的時候會獲得一個混合多種語義的固定向量表示。即使在根據上下文的信息能明顯知道是“銀行”的情況下,它對應的word embedding的內容也不會發生改變。
ELMO的提出就是為了解決這種語境問題,動態的去更新詞的word embedding。ELMO的本質思想是:事先用語言模型在一個大的語料庫上學習好詞的word embedding,但此時的多義詞仍然無法區分,不過沒關系,我們接著用我們的訓練數據(去除標簽)來fine-tuning 預訓練好的ELMO 模型。作者將這種稱為domain transfer。這樣利用我們訓練數據的上下文信息就可以獲得詞在當前語境下的word embedding。作者給出了ELMO 和Glove的對比
對于Glove訓練出來的word embedding來說,多義詞play,根據他的embedding 找出的最接近的其他單詞大多數幾種在體育領域,這主要是因為訓練數據中包含play的句子大多數來源于體育領域,之后在其他語境下,play的embedding依然是和體育相關的。而使用ELMO,根據上下文動態調整后的embedding不僅能夠找出對應的“表演”相同的句子,還能保證找出的句子中的play對應的詞性也是相同的。接下來看看ELMO是怎么實現這樣的結果的。
2、模型結構
ELMO 基于語言模型的,確切的來說是一個 Bidirectional language models,也是一個 Bidirectional LSTM結構。我們要做的是給定一個含有N個tokens的序列
t1, t2, ... , tN
其前向表示為:
反向表示為:
從上面的聯合概率來看是一個典型的語言模型,前向利用上文來預測下文,后向利用下文來預測上文。假設輸入的token是,在每一個位置 k ,每一層LSTM 上都輸出相應的context-dependent的表征。
這里 j = 1 , 2 , ... , L ,L 表示LSTM的層數。頂層的LSTM 輸出,通過softmax層來預測下一個。
對數似然函數表示如下:
模型的結構圖如下:
ELMO 模型不同于之前的其他模型只用最后一層的輸出值來作為word embedding的值,而是用所有層的輸出值的線性組合來表示word embedding的值。
對于每個token,一個L層的 biLM要計算出 2L + 1 個表征:
在上面等于,表示的是token層的值。
在下游任務中會把 Rk壓縮成一個向量:
其中是softmax標準化權重,γtask?是縮放系數,允許任務模型去縮放整個ELMO向量。
ELMO的使用主要有三步:
1)在大的語料庫上預訓練 biLM 模型。模型由兩層bi-LSTM 組成,模型之間用residual connection 連接起來。而且作者認為低層的bi-LSTM層能提取語料中的句法信息,高層的bi-LSTM能提取語料中的語義信息。
2)在我們的訓練語料(去除標簽),fine-tuning 預訓練好的biLM 模型。這一步可以看作是biLM的domain transfer。
3)利用ELMO 產生的word embedding來作為任務的輸入,有時也可以即在輸入時加入,也在輸出時加入。
ELMO 在六項任務上取得了the state of the art ,包括問答,情感分析等任務。總的來說,ELMO提供了詞級別的動態表示,能有效的捕捉語境信息,解決多義詞的問題。
-
計算機
+關注
關注
19文章
7518瀏覽量
88193 -
人工智能
+關注
關注
1792文章
47410瀏覽量
238925
發布評論請先 登錄
相關推薦
評論