深度 | 通過NMT訓練的通用語境詞向量:NLP中的預訓練模型?

2021-02-19 機器之心

選自 einstein.ai

機器之心編譯

參與:Nurhachu Null、蔣思源

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

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

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

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

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

詞向量

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


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

預訓練的詞向量

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

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


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

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

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

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


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


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


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

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

隱向量

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

編碼器

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


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

雙向編碼器

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


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

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

機器翻譯中的隱向量

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

解碼器

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

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


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

注意力機制

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


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

生成模型

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


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

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

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


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

使用 CoVe 進行的實驗

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

文本分類


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

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

問答實驗

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


表 1: 我們實驗中所有的數據集和任務

Glove+CoVe

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

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


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

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

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

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


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


語境向量和字符向量

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


圖 15. CoVe 與字符級別以及單詞級別的信息是互補的

測試性能

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


表 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 的例子(代碼請參見原文連結)。

原文連結:https://einstein.ai/research/learned-in-translation-contextualized-word-vectors

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權

✄---

加入機器之心(全職記者/實習生):hr@jiqizhixin.com

投稿或尋求報導:editor@jiqizhixin.com

廣告&商務合作:bd@jiqizhixin.com

相關焦點

  • 復旦邱錫鵬教授:2020最新NLP預訓練模型綜述
    新智元報導編輯:SF【新智元導讀】本文該綜述系統地介紹了nlp中的預訓練模型,深入盤點了目前主流的預訓練模型,提出了一種預訓練模型的分類體系。背景「nlp、cv領域的傳統方法極度依賴於手動特徵工程」。例如nlp中的log-linear、CRF模型等,cv中各種抽取特徵的模型,如sift特徵等。深度學習中本質上是一種表示學習,能夠一定程度上避免手動的特徵工程。
  • 8種優秀預訓練模型大盤點,NLP應用so easy!
    NLP的快速增長主要得益於通過預訓練模型實現轉移學習的概念。在NLP中,轉移學習本質上是指在一個數據集上訓練模型,然後調整該模型以便在不同數據集上實現NLP的功能。這一突破使NLP應用變得如此簡單,尤其是那些沒有時間或資源從頭開始構建NLP模型的人。或者,對於想要學習或者從其他領域過渡到NLP的新手來說,這簡直就是完美。
  • NLP集大成之預訓練模型綜述
    介紹預訓練模型的出現,將自然語言處理帶入了新紀元,本論文中就此綜合地介紹了自然語言的預訓練模型。預訓練模型主要有以下三個優點:可以從巨大的語料中學習表示,從而幫助到下遊任務;提供了一個很好的模型初始化結果,有著更好的泛化能力,並且能加速下遊任務的收斂。
  • PTMs:NLP預訓練模型
    本文以此篇綜述論文為主要參考,通過借鑑不同的歸納方法進行總結,同時也整合了專欄之前已經介紹過的《nlp中的詞向量對比》和《nlp中的預訓練語言模型總結》兩篇文章,以QA形式對PTMs進行全面總結歸納。獲取總結圖片下載以及單模型精讀請到 github:NLP預訓練模型的全面總結,希望為大家的學習工作提供一些幫助。
  • 復旦大學邱錫鵬教授:NLP預訓練模型綜述
    而分布式表示的核心思想就是通過低維實值向量來描述一段文本的意義,而向量的每一個維度都沒有對於意義,整體則代表一個具體的概念。圖 1 是 NLP 的通用神經體系架構。非上下文嵌入:表示語言的第一步就是將分離的語言符號映射到分布式嵌入空間中。也就是對於詞彙表中的每個單詞(詞根),通過 lookup table 映射到一個向量。
  • 【NLP】預訓練模型綜述
    然而,單向的 LSTM 僅能學習上文的語義信息,於是,巴伊蘭大學的學者在 [10] 中開創性地通過雙向 LSTM 將上下文的語義信息融入到了詞嵌入中,並且首先承接起了當時正流行的詞嵌入和語言模型之間的關係,展示了可以利用大量的無標註文本數據訓練出高質量的包含上下文信息的向量表示,並顯著超過使用傳統的詞向量的效果。
  • 支持 53 種語言預訓練模型,斯坦福發布全新 NLP 工具包 StanfordNLP
    Stanford NLP 團隊發布了包含 53 種語言預訓練模型的自然語言處理工具包 StanfordNLP,該工具包支持 Python 3.6
  • 支持53種語言預訓練模型,斯坦福發布全新NLP工具包StanfordNLP
    今日,Stanford NLP 團隊發布了包含 53 種語言預訓練模型的自然語言處理工具包 StanfordNLP,該工具包支持 Python
  • 超讚,以QA形式對NLP預訓練模型進行的全面總結!
    一、為什麼要進行預訓練?深度學習時代,為了充分訓練深層模型參數並防止過擬合,通常需要更多標註數據餵養。在NLP領域,標註數據更是一個昂貴資源。PTMs從大量無標註數據中進行預訓練使許多NLP任務獲得顯著的性能提升。
  • 預訓練模型探索1
    本系列將對預訓練語言模型進行初步探索,本部分為第一部分,對預訓練模型的優點以及發展歷史進行簡要介紹。引言回顧近年來基於深度學習的NLP技術的重大事件,就不得不提到由ELMo/GPT/BERT帶來的預訓練模型熱潮。
  • Task0.中文預訓練模型泛化能力挑戰賽(NLP)
    一、整體流程整個流程分為兩大部分1.訓練和預測生成結果:這部分就是常規的預訓練模型進行訓練和預測,比賽當然還需要一些改進提高預測效果
  • 預訓練模型超全知識點梳理與面試必備高頻FAQ
    本文以此篇綜述論文為主要參考,通過借鑑不同的歸納方法進行總結,同時也整合了專欄之前已經介紹過的《nlp中的詞向量對比》和《nlp中的預訓練語言模型總結》兩篇文章,以QA形式對PTMs進行全面總結歸納。很多總結歸納的點不太好拿捏,大家多給意見~為什麼要進行預訓練?深度學習時代,為了充分訓練深層模型參數並防止過擬合,通常需要更多標註數據餵養。在NLP領域,標註數據更是一個昂貴資源。PTMs從大量無標註數據中進行預訓練使許多NLP任務獲得顯著的性能提升。
  • 機器學習|7種經典預訓練模型原理解析
    目前無論在CV領域還是NLP領域,預訓練都是一個很普遍和普適的方法。我們都知道深度學習的模型越龐大,模型參數越多,為了避免過擬合就需要相應大規模的數據集,但對於很多任務而言,樣本標註的成本昂貴。相反,大規模無標籤資料庫相對容易建立,為了充分利用這些無標記數據,我們可以先使用它們在其他一些任務上學習一個好的特徵表示,再用於訓練目標任務。
  • 預訓練模型綜述
    然而,單向的 LSTM 僅能學習上文的語義信息,於是,巴伊蘭大學的學者在 [10] 中開創性地通過雙向 LSTM 將上下文的語義信息融入到了詞嵌入中,並且首先承接起了當時正流行的詞嵌入和語言模型之間的關係,展示了可以利用大量的無標註文本數據訓練出高質量的包含上下文信息的向量表示,並顯著超過使用傳統的詞向量的效果。
  • NLP中文預訓練模型泛化能力挑戰賽
    背景介紹中文預訓練模型的質量會影響以AI技術驅動的企業中核心業務算法的性能。比如智能客服問答,搜索推薦,安全風控,輿情分析,文字識別,信息抽取,智能打標等等,這些業務或產品都會或多或少依賴於預訓練模型提供的通用語言學知識來做遷移學習。因此打造高質量的預訓練模型是當前產業界和學術界的熱點。
  • 天池NLP中文預訓練模型賽來了!
    自從2017年具有劃時代意義的Transformer模型問世以來,短短兩年多的時間內,如雨後春筍般的出現了大量的預訓練模型,比如:
  • 谷歌發布NLP最先進預訓練模型:開源BERT
    然而,現代基於深度學習的NLP模型往往需要更大量的數據,在擁有在數以百萬計甚至十億計的帶標註的訓練樣例上進行訓練時性能將會得到極大改善。為了幫助縮小數據差距,研究人員開發了各種技術用於使用網絡上海量未標註的文本(稱為預訓練)來訓練通用語言表示模型。然後,將其應用於小數據NLP任務(如問答和情感分析)微調預訓練模型,與從頭對數據集進行訓練相比,使用預訓練模型可以顯著地提高準確度。
  • 谷歌開源NLP模型可視化工具LIT,模型訓練不再「黑箱」
    深度學習模型的訓練就像是「黑箱操作」,知道輸入是什麼、輸出是什麼,但中間過程就像個黑匣子,這使得研究人員可能花費大量時間找出模型運行不正常的原因。假如有一款可視化的工具,能夠幫助研究人員更好地理解模型行為,這應該是件非常棒的事。
  • 中文預訓練模型ERNIE超詳細使用指南
    模型預訓練的輸入是基於百科類、資訊類、論壇對話類數據構造具有上下文關係的句子對數據,利用百度內部詞法分析工具對句對數據進行字、詞、實體等不同粒度的切分,然後基於 tokenization.py 中的 CharTokenizer 對切分後的數據進行 token 化處理,得到明文的 token 序列及切分邊界,然後將明文數據根據詞典config/vocab.txt 映射為
  • 一文讀懂最強中文NLP預訓練模型ERNIE
    同時 我 + 買 + 名詞 是一個非常明顯的購物意圖的句式,BERT 沒有對此類語法結構進行專門的建模,如果預訓練的語料中只有「我要買蘋果手機」,「我要買華為手機」,哪一天出現了一個新的手機牌子比如慄子手機,而這個手機牌子在預訓練的語料當中並不存在,沒有基於詞法結構以及句法結構的建模,對於這種新出來的詞是很難給出一個很好的向量表示的,而ERNIE 通過對訓練數據中的詞法結構,語法結構,語義信息進行統一建模