XLM — 基於BERT的跨語言模型
注意力模型,尤其是BERT模型,已經在NLP領域分類和翻譯任務上取得了極具前景的結果。Facebook AI在一篇新論文中提出了一個改良版的BERT模型XLM,在以上兩個任務上均取得了SOTA結果。
XLM用了一個常見的預處理技術BPE(byte pair encoder位元組對編碼)以及BERT雙語言訓練機制來學習不同語言中詞與詞之間的關係。這個模型在跨語言分類任務(15個語言的句子蘊含任務)上比其他模型取得了更好的效果,並且顯著提升了有預訓練的機器翻譯效果。
背景
XLM基於幾個核心概念:
Transformers, Google 在2017年提出的一種能夠同時處理輸入文字並且學到詞語上下文聯絡的注意力機制。一個 Transformer 包含兩部分:一個編碼器讀入文字輸入並且生成每個詞的向量表示,一個解碼器將向量表示轉換成翻譯結果文字。更詳細的 Transformer 回顧可以看這篇文章:
普通的Transformer只考慮了每個單詞有限的上下文(單詞的前幾個詞),於是在2018年提出的BERT模型在此基礎上更進了一步。BERT利用Transformer的編碼器學習一個語言模型,透過遮住(捨棄)一些詞再試著去預測這些詞。這使得模型可以學習全篇內容,也就是被遮住詞的前序和後續詞。
因為在注意力模組中所有詞都是同時處理的,所以模型還需要考慮額外的位置資訊。模型網路透過給每個token加一個基於位置的固定值(例如正弦函式),可以成功學習到token間的聯絡,這一步叫位置編碼。可以看這篇我們對BERT的總結:
2018年Lample et al.提出了將Transformer 和基於短語的統計機器翻譯技術(PBSMT)相結合的模型。後者給出了不同語言中短語的機率表。這篇論文中另一個重要概念是反向翻譯,也就是把句子翻譯成目標語言句再翻回原句。這讓我們可以用單一語言作為訓練集,比有監督的雙語言訓練集量更大也更常見。Lample et al.得出的一個結論是token的初始化嵌入對於模型最終的成功來說至關重要,尤其對反向翻譯來說。他在文中用了一個簡單的詞嵌入方法FastText,他們認為更有效的語言模型能夠進一步提升他們的模型結果。
XLM模型工作原理
這篇論文提出了兩個創新點:一個是用BERT訓練多語言文字分類、另一個是用BERT初始化機器翻譯模型。
BERT進行跨語言文字分類
儘管BERT的訓練語料超過100種語言,它的模型本身並沒有針對多語言進行最佳化——大多數詞彙沒有在語言間共享,因此能學到的跨語言知識是很有限的。針對這一點,XLM模型在以下方面修正了BERT:
首先,XLM的模型輸入用了位元組對編碼(BPE)而不是用字元或詞語。BPE把輸入按所有語言中最常見的詞片段(sub-words)進行切分,以此來增加跨語言共享的詞彙。這是一個常見的預處理演算法,關於BPE可以看這篇總結:
其次,XLM以下面兩個方式升級了BERT的模型結構:
-
XLM的每個訓練樣本包含含義相同語言不同的兩條句子,而不是像BERT中一條樣本僅來自同一語言。BERT的目標是預測被遮住的token。XLM模型中,我們可以對每組句子,用一個語言的上下文資訊去預測另一個語言被遮住的token。因為句子對中不同的隨機詞語會被遮住,模型可以利用翻譯資訊去預測token。
-
模型也接受語言ID和不同語言token的順序資訊,也就是位置編碼。這些新的後設資料能幫模型學習到不同語言的token間關係。
升級版的BERT模型被稱作翻譯語言模型(TLM),普通BERT模型+BPE輸入被稱作有掩碼語言模型(MLM)。
完整的模型同時訓練了MLM和TLM,並且在兩者之間進行交替訓練。
上圖:類似BERT的單語言模型MLM, 和跨語言模型TLM進行對比。來源:XLM
為了評估模型效果,這篇論文在句子蘊含(句子對關係分類)任務上測試了模型。論文使用了XNLI資料集,資料集中句子來自15個語言。模型在所有配置上都比當下著名模型,比如Artetxe et al.和BERT效果要更好。配置包括模型僅在英語資料上訓練其他資料預測(Zero-Shot零樣本學習),其他語言翻英語(Translate-Train),英語翻其他語言(Translate-Test)。這些結果都取得了當前SOTA結果。
在不同的訓練、測試集配置上對比模型和其他模型在XNLI資料集上的準確率。每一列代表一種語言。來源:XLM
用MLM初始化翻譯模型
這篇論文提出了BERT的又一貢獻,更確切的說是MLM模型:MLM可以作為更好的初始化技術,用來改進Lample et al. 的翻譯模型。token初始化不用FastText,而改用MLM,結果再傳到翻譯模型中。
在編碼和解碼階段均用該方法進行token初始化,翻譯模型(使用Transformer的模型)的翻譯質量提升了7 BLEU。具體見下表。
不同初始化方法的翻譯結果。CLM表示因果語言模型(Causal Language Modeling),不用掩碼技術,每一個詞是基於前序詞來預測的。來源:XLM
提示:這篇論文同時顯示跨語言模型對於學習一個語料匱乏的小語種是非常有用的,透過BPE演算法,他們可以利用其它語言的資料,尤其是相近語言。這個結論和Artetxe et al.的結論相似。(我們的總結可以看這裡)
計算因素
BERT模型在PyTorch框架下的實現,以及預訓練模型可以在此處找到:
我們使用Volta顯示卡訓練,語言模型64卡,翻譯任務8卡,訓練時間並未指定。具體的實現細節可以在論文的5.1和5.2節中找到。
結論
正如近期許多研究所示,本文也展示了語言模型和遷移學習的強大功能,特別是BERT,能夠在許多NLP任務上提高效能。透過簡單高效的微調,BERT的效能可以超過其他跨語言分類模型,並顯著改善翻譯模型。
有趣的是,本文中使用的翻譯模型和用於初始化的MLM模型都基於Transformer。可以推斷在將來,我們應該能夠看到更多這樣的組合應用,比如,將新的Transformer-XL用於初始化。
點選【 】即可訪問相關內容和參考文獻~
今日資源推薦: AI入門、大資料、機器學習免費教程
35本世界頂級原本教程限時開放,這類書單由知名資料科學網站 KDnuggets 的副主編,同時也是資深的資料科學家、深度學習技術愛好者的Matthew Mayo推薦,他在機器學習和資料科學領域具有豐富的科研和從業經驗。
點選連結即可獲取:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2654759/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於bert架構的精準知識表徵模型架構模型
- EMNLP 2019 | 基於BERT的跨語言上下文相關詞向量在零樣本依存分析中的應用
- 進一步改進GPT和BERT:使用Transformer的語言模型GPTORM模型
- golang(gin框架),基於RESTFUL的跨語言遠端通訊嘗試Golang框架REST
- 基於多語言的跨平臺靜態測試解決方案
- 如何基於surging跨閘道器跨語言進行快取降級快取
- 基於Python和TensorFlow實現BERT模型應用Python模型
- 【預訓練語言模型】 使用Transformers庫進行BERT預訓練模型ORM
- 基於物件的JavaScript語言(轉)物件JavaScript
- 百分點認知智慧實驗室出品:基於BERT的問題語義等價新模型模型
- 基於R語言的跨平臺大資料機器學習與資料分析系統R語言大資料機器學習
- Golang、Php、Python、Java基於Thrift0.9.1實現跨語言呼叫GolangPHPPythonJava
- 2018年最強自然語言模型 Google BERT 資源彙總模型Go
- 詞嵌入系列部落格Part1:基於語言建模的詞嵌入模型模型
- goweb,基於go語言的API框架GoWebAPI框架
- Scala,基於JVM的併發語言JVM
- 基於OCR進行Bert獨立語義糾錯實踐
- 關於跨語言呼叫與同步非同步等的疑惑非同步
- nlp中的傳統語言模型與神經語言模型模型
- ACL 2019 | 基於知識增強的語言表示模型,多項NLP任務表現超越BERT模型
- 基於大型語言模型爬蟲專案Crawl4AI介紹模型爬蟲AI
- 谷歌釋出含 7 種語言的全新資料集:有效提升 BERT 等多語言模型任務精度高達 3 倍!谷歌模型
- 語言大模型大模型
- 大語言模型模型
- goweb,基於go語言API框架GoWebAPI框架
- java的跨開發語言功能Java
- 知識增廣的預訓練語言模型K-BERT:將知識圖譜作為訓練語料模型
- 基於PyTorch的大語言模型微調指南:Torchtune完整教程與程式碼示例PyTorch模型
- 從Word Embedding到Bert模型—自然語言處理中的預訓練技術發展史模型自然語言處理
- 7 papers|EMNLP 2019最佳論文;Facebook語言模型XLM-R取得SOTA結果;最優學習的85%規則模型
- 關於大語言模型時代下自學的一點想法模型
- 從Word Embedding到Bert模型——自然語言處理預訓練技術發展史模型自然語言處理
- BERT 模型壓縮方法模型
- 8.3 BERT模型介紹模型
- 【BERT】你儲存的BERT模型為什麼那麼大?模型
- 基於C語言的Q格式使用詳解C語言
- 又一個基於JVM的程式語言:FlixJVM
- 滴滴基於Go語言的DevOps重塑之路Godev