透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

思源發表於2017-08-08

自然語言處理(NLP)這個領域目前並沒有找到合適的初始化方法,它不能像計算機視覺那樣可以使用預訓練模型獲得影像的基本資訊,我們在自然語言處理領域更常用的還是隨機初始化詞向量。本文希望透過 MT-LSTM 先學習一個詞向量,該詞向量可以表徵詞彙的基本資訊,然後再利用該詞向量輔助其它自然語言處理任務以提升效能。本文先描述瞭如何訓練一個帶注意力機制的神經機器翻譯,其次再描述瞭如何抽取該模型的通用詞向量與將其應用於其它任務的效能。

對於自然語言處理中的大多數問題而言,理解語境是很有必要的。為了生成一句英文的德語翻譯,翻譯模型需要理解英文句子中的單詞是如何組織在一起的。為了知道哪些單詞是最重要的,文字摘要模型也需要語境。執行語意情感分析的模型需要理解如何挑選出能夠改變一句話的情感的關鍵詞。問答模型依賴於對「問題中的詞彙分佈如何改變答案中的詞彙分佈」的理解。因為這些模型都需要理解語境是如何影響一個單詞的意思的,所以,只要能夠與一個學會了如何將單詞語境化的模型相結合,上述每個模型都能夠從中獲益。

在自然語言處理(NLP)中模仿 IMAGENET-CNN 模式

機器視覺在尋求可重用的表徵方面比自然語言處理更加成功。在大型影像分類資料集 ImageNet 上訓練的深度卷積神經網路(CNN)經常被用作其他模型的組成部分。為了將影像分類做得更好,卷積神經網路透過逐漸構建一個更加複雜模型,而去理解畫素是如何與其他畫素關聯的。模型可以在這些表徵的基礎上去解決看圖說話問題、人臉識別問題以及目標檢測問題,而不是一切都從零開始。自然語言處理也應該做一些類似的表徵去解決單詞和語境之間的關聯。

為了教會神經網路理解單詞在語境中的含義,我們首先教它如何將英文翻譯成德語。然後,我們展示了可以重用該翻譯任務的神經網路就像模仿機器視覺中在 ImageNet 上訓練卷積神經網路的方式那樣。我們是這樣來做的:透過將神經網路的輸出(也就是我們所說的語境向量(CoVe))作為其它自然語言處理任務的神經網路的新輸入。在我們的實驗中,給這些網路提供 CoVe 的情況總會改善模型的效能,這十分令我們振奮,所以所以我們公佈了這個能夠生成 CoVe 的可訓練神經網路,以進一步探索自然語言處理中的可重用表徵。

詞向量

今天大多數用於自然語言處理的深度學習模型都依賴詞向量來代表單個單詞的含義。對於不太熟悉這領域的人而言,可以這樣簡單的理解:我們把每一種語言中的每一個單詞都與一串被叫做向量的數字聯絡起來了。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 1. 深度學習中將單詞表示成向量是很普遍的情況。深度學習模型以詞向量序列的形式讀取序列化的單詞,而不是以文字的形式。

預訓練的詞向量

有時候在為特定任務訓練模型之前,詞向量會被初始化成隨機數,但是,也有其他很常見的方式,例如,使用 word2vec、GloVe 或者 FastText 等方法來初始化詞向量。前兩個方法會逐漸和這一假設結合起來:至少一個單詞的部分含義是和它的用法有關的。

Word2Vec 會訓練出能夠預測區域性語境窗(local context window)的模型;這個模型在發現一個單詞之後就會去預測它附近的單詞。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 2. 像 word2vec 和 GloVe 一樣的演算法能夠生成一些相互關聯的詞向量,這些詞向量在自然語言中通常也是相關的。就像像圖中描述的一樣,「Word vectors are lists of numbers」這句話中,「vector」的向量就在「lists」、「of」「numbers」這三個詞的周圍。

GloVe 採用了相似的方法,它還顯式地附加了每個單詞和其他單詞一起出現的統計資訊。在這兩種方法中,每個單詞都由一個對應的詞向量來表示,訓練過程會將詞向量之間的關聯與單詞在自然語言中的使用方式聯絡起來。

預訓練的詞向量的天然特性

將這些詞向量看作空間中的點,我們就會發現一些非常有趣的關聯,它可以讓人回想起自然語言中單詞之間的語義關聯。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 3. 男性-女性詞對在向量分佈的不同(Pennington 等人 2014)


透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 4. a-b,c:d 這種關係指的是:c+(a-b) 會生成一個距離 d 最近的向量(Mikolov 等人,2013)


透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 5. 比較級和最高階之間的向量的差別

顯而易見,對於目標任務,使用由 word2vec 或者 GloVe 的中間結果作為預訓練詞向量去初始化任務,會給目標任務的模型帶來一些優勢。由此,由 word2vec 或者 GloVe 生成的詞向量也就找到了在很多自然語言處理任務中進行廣泛實驗的方式。

隱向量

這些預訓練的詞向量表現出了很有趣的性質,並且相對隨機初始化的詞向量而言,有著顯著的效能提升。但是正如之前提及的,單詞很少獨立出現。使用預訓練詞向量的模型必須學習如何去使用它們。在該項工作中,我們透過訓練中間任務獲得環境詞向量,該環境詞向量是透過截斷尋找比隨機初始化方法更好的向量而得出。

編碼器

將詞向量語境化的一個常用方法就是使用迴圈神經網路(RNN)。迴圈神經網路是能夠處理可變長度向量序列的深度學習模型。這一特性使得它們很適合來處理詞向量序列。為了更好地處理長序列,我們使用了一種特定種類的 RNN,即長短期記憶(LSTM)網路。在處理過程的每一步中,LSTM 輸入一個詞向量,輸出一個被稱作隱向量的新向量。這個過程常常被稱之為對序列的編碼,完成編碼過程的神經網路就被稱為編碼器。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 6. LSTM 將詞向量序列作為輸入,輸出一個新的隱向量


雙向編碼器

隱向量並不包含出現在當前輸入序列之後的單詞的資訊,但是這個很容易被改進。我們可以反向執行一個 LSTM 以得到一些反向的輸出向量。我們將這一對前向-反向 LSTM 看做一個單元,通常被稱作雙向 LSTM。它以一個詞向量序列作為輸入,執行了前向和反向 LSTM,並將每個 LSTM 對應的輸出連線成一個輸出,然後返回最終得到的隱向量。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 7. 包含每個單詞之前和之後資訊的雙向編碼器。

我們將兩個雙向 LSTM 堆疊在一起作為一個編碼器。第一個雙向 LSTM 處理整個序列,然後將輸出作為作為第二個雙向 LSTM 的輸入。

機器翻譯中的隱向量

因為結果證明預訓練的詞向量對於很多自然語言處理任務來說都是很有用的表徵,所以我們要預訓練我們的編碼器,這樣的話,它就能夠輸出普遍有用的隱向量。為了預訓練,我們選擇機器翻譯作為我們的第一個任務。較之於其他的自然語言處理任務,機器翻譯擁有更大的資料集。並且,對於訓練通用的語境向量而言,翻譯任務的本質看上去更加吸引人。例如,與其他的類似於文字分類的任務相比,翻譯貌似更需要那種能夠理解語言的語感。

解碼器

我們透過教編碼器如何將英文翻譯成德文來教它生成有用的隱向量。解碼器生成了針對英文句子的隱向量,另一個叫做解碼器的神經網路就會在生成德語句子的時候參考這些隱向量。

正因為 LSTM 是我們編碼器的基礎,所以 LSTM 也在解碼器中起著非常重要的作用。與編碼器一樣,我們在解碼器中也使用兩層的 LSTM。用編碼器的最終狀態來初始化解碼器,讀入一個德語詞向量來啟動解碼器,然後就會生成解碼狀態向量。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 8. 解碼器使用一個單向的 LSTM 來從輸入詞向量建立解碼器狀態。

注意力機制

為了決定下一步翻譯英語句子中的哪一部分,注意力機制需要從隱向量向前回溯。它使用狀態向量來判別每一個隱向量的重要性,為了記錄它的觀察值,注意力機制會生成一個新的向量,我們可以稱之為語境調整狀態(context-sdjusted state)。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 9. 注意力機制使用隱狀態和解碼狀態來生成語境調整狀態

生成模型

然後,生成器會根據語境調整狀態來決定要生成哪個德語單詞,接下來語境調整狀態會回傳到解碼器中,讓解碼器對其翻譯的結果有一個準確的感知。解碼器一直重複這個過程,直至它完成所有翻譯。這就是一個標準的基於注意力機制的編碼器-解碼器結構,它被用來學習像機器翻譯一樣的序列到序列任務。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 10. 生成器使用語境調整狀態來選擇一個輸出單詞

預訓練的機器翻譯--長短期記憶網路(MT-LSTM)中的語境向量

當訓練過程結束之後,我們可以將我們訓練好的 LSTM 提取出來作為編碼器用於機器翻譯。我們將這個預訓練的 LSTM 稱作機器翻譯 LSTM(MT-LSTM),並使用它生成新句子的隱向量。當我們把這些機器翻譯隱向量用於其它的自然語言處理模型時,我們就把它們稱作語境向量(CoVe)。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 11. 兩種通用架構:a). 我們如何訓練一個編碼器;b). 我們如何將訓練好的編碼器用在新的特定任務的模型上

使用 CoVe 進行的實驗

我們的實驗探索了在文字分類和問答模型中使用預訓練的 MT-LSTM 生成語境向量(CoVe)的優點,但是 CoVe 可以被用在任何將向量序列作為輸入的模型中。

文字分類

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 12. 雙注意力機制(biattention)的分類網路

我們在兩種不同種類的文字分類任務上做了實驗。第一種是任務使用單一輸入,它包括情感分析和問答分類。第二種擁有兩個輸入,但它僅包括蘊含分類。在兩種任務上我們都使用雙注意力分類網路(BCN)。如果僅有一個輸入,我們會將其進行復制,以呈現出雙輸入的形式,但是同時要讓模型知道避免做一些冗餘的計算。不需要理解 BCN 的細節,我們就可以理解 CoVe 以及使用它的好處。

問答實驗

在問答實驗中我們使用了動態協同注意力網路(DCN)。而在分析機器翻譯(MT)資料集對其他模型的效能影響時,我們使用了輕度修正的 DCN,然而在測試 CoVe 以及 CoVe 結合字元向量時的全域性效果時,我們使用了修正的 DCN+。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

表 1: 我們實驗中所有的資料集和任務

Glove+CoVe

對於每一個任務,我們都用表徵輸入序列的不同方式進行實驗。我們可以使用隨機初始化的詞向量,也可以使用 Glove,或者使用 Glove 和 CoVe 聯合得出的詞向量。在最後一種情況下,我們透過一個預訓練的 MT-LSTM 來執行它,以得到 CoVe 序列,我們用對應的 Glove 序列來擴充套件每一個 CoVe 序列。MT-LSTM 和 Glove 都沒有作為分類任務或者問答模型訓練過程的一部分。

實驗結果表明:包括 CoVe 和 Glove 的情況總是比隨機初始化的詞向量和單獨使用 Glove 的情況具有更好的效能。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 13. 結合 Glove 和 CoVe 能夠改善驗證效能。

更多的機器翻譯-->更好的語境向量

改變訓練 MT-LSTM 時所用的資料量表明:更大規模的資料集會得到更高質量的 MT-LSTM,這裡的更高質量的模型意味著用它生成的 CoVe 通常會在分類任務和問答任務上產生更好的效能。

結果表明,在較小的機器翻譯資料集上使用 CoVe 訓練得到的 MT-LSTM 帶來的效能提升是較小的。在一些情況中,使用小規模的機器翻譯資料集訓練的到的 MT-LSTM 會生成有損於模型效能的 CoVe。這也許意味著使用 CoVe 得到的效能提升是來自於強勁的 MT-LSTM 模型。這也意味著機器翻譯訓練集所在的領域會影響到最終 MT-LSTM 給其它任務帶來效能提升。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

 圖 14. 訓練 MT-LSTM 的資料集規模會對使用 CoVe 的模型的驗證效能產生明顯地影響。在這裡,MT-Small 是 2016 年的 WMT 多模資料集,MT-Medium 是 2016 IWSLT 訓練集,MT-Large 是 2017 年的 WMT 新聞追蹤資料集


語境向量和字元向量

在這些實驗中,我們嘗試著在 Glove 和 CoVe 中新增字元向量。結果表明,對於一些任務,字元向量會和 Glove 以及 CoVe 一起產生更好的效能。這意味著 CoVe 給字元級別以及單詞級別的資訊帶來了補充資訊。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

圖 15. CoVe 與字元級別以及單詞級別的資訊是互補的

測試效能

我們最好的模型都使用了 Glove、CoVe 以及字元級別的向量。我們對每種任務中驗證效能最高的模型在測試集上做了測試。上圖表明新增 CoVe 總能夠從起點開始就提升效能,下表表明,我們的模型足以在 7 個任務測試集中的 3 個上達到目前最高水平。

透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?

表 2. 在測試的時候(2017.7.12),我們的模型與其他機器學習方法的效能對比

 

有一個有趣之處值得注意,就像我們使用機器翻譯資料來改善我們的模型一樣,SST-2 和 IMDb 任務的目前最先進水平的模型也使用外部的監督訓練集來改善模型。對於 SST-2 任務,最好的模型使用了 8200 萬條無標籤的亞馬遜評論,IMDb 任務的最好模型使用了 50000 條無標籤的 IMD 評論,以及 22500 條監督訓練樣本。這兩種方法都用了比機器翻譯資料集更加相似的資料來擴充套件資料。這些模型的優點可能會突出附加資料的種類和有益額外資料之間的聯絡。

結論

我們展示瞭如何訓練神經網路來實現機器翻譯,如何讓模型去學習語境中單詞的表徵,我們還展示了能夠使用一部分網路(MT-LSTM)去幫助網路學習其他的自然語言處理任務。MT-LSTM 給分類任務和問答模型提供的語境向量(也就是 CoVe),並令它們得到了效能提升。我們在訓練 MT-LSTM 時使用的資料越多,模型效能的提升就越大,這或許和使用其他形式的預訓練向量表徵帶來的效能提升是互補的。透過結合來自於 Glove、CoVe、字元向量的資訊,我們能夠在很多自然語言處理任務上提升基準模型的效能。

程式碼釋出

我們希望我們最好的 MT-LSTM 模型(就是那個我們用來生成 CoVe 的最佳模型)能夠進一步激發對自然語言處理中可重用表徵的探索。程式碼包括在 PyTorch 上如何生成 CoVe 的例子(程式碼請參見連結)。

相關文章