谷歌開源先進語言模型 Transformer-XL:集 Transformer 和 RNN 之大成
近日,谷歌聯合 CMU 開源了一個名為 Transformer-XL 的語言模型,它是目前處理語言建模問題最先進的架構之一 Transformer 模型的第三代升級,不僅能夠處理可變長度序列,並且在多個任務中重新整理了當前的最好效能(推理速度快 300-1800 倍)。
2017 年 6 月,谷歌大腦在論文《Attention Is All You Need》中提出了一個完全基於注意力機制的編解碼器模型 Transformer ,它完全拋棄了之前其它模型引入注意力機制後仍然保留的迴圈與卷積結構,在任務表現、並行能力和易於訓練性方面都有大幅提升,因此也成為了後續機器翻譯和其它許多文字理解任務的重要基準模型。全新的 Transformer-XL 結合了 RNN 和 Transformer 之優點,獲得了更好的效能。讓我們來一起詳細瞭解一下吧!
語言建模是 NLP 中的一種重要技術,因為它能夠應用在各種 NLP 任務中,如機器翻譯和主題分類等。目前,處理語言建模問題有兩種最先進的架構——迴圈神經網路(RNN)和 Transformer。前者處理輸入表徵(單詞或字元),逐個學習它們之間的關係;後者接收一段表徵,並使用注意機制學習它們之間的依賴關係。
雖然這兩種架構都取得了令人矚目的成就,但它們的主要侷限在於捕獲長期依賴性,例如使用文件開頭的重要單詞來預測後面的單詞。谷歌和卡內基梅隆大學的一篇新論文 《Transformer-XL:超越固定長度上下文的注意力語言模型》 結合了這兩種方法的優點。新模型在輸入資料的每個段上使用 Transformer 的注意力模組,並使用迴圈機制來學習連續段之間的依賴關係。
Transformer-XL 在多種語言建模資料集(如單詞級別的 enwik8 和字元級別的 text8)上實現了最目前先進的結果,且該模型在推理階段速度更快,比之前最先進的 Transformer 架構快 300 到 1800 倍。
背景介紹:Transformer 架構
語言建模的一種常用方法是迴圈神經網路(RNN),因為這種網路可以很好地捕獲單詞之間的依賴關係,尤其是當其中含有 LSTM 等模組時。然而,受 梯度消失問題 的影響,RNN 往往速度很慢,且其學習長期依賴的能力比較有限。
2017 年提出的 Transformer 架構 為語言建模問題提供了一種全新的解決方案:注意力模組。注意模組不是逐個地處理表徵,而是接收一整段表徵,並使用三個可訓練的權重矩陣——查詢(Query),鍵(Key)和值(Value)來一次性學習所有輸入表徵之間的依賴關係。這三個權重矩陣構成了注意力頭(Attention Head)。Transformer 網路由多個層組成,每個層都有幾個注意力頭(和附加層),用於學習表徵之間的不同關係。
與許多 NLP 模型一樣,Transformer 會首先將輸入表徵嵌入到向量中。由於注意模組中含有併發處理機制,模型還需要新增有關表徵順序的資訊。這個步驟被稱為位置編碼(Positional Encoding),可幫助網路學習其位置資訊。通常,該步驟使用正弦函式完成。該函式根據表徵的位置生成向量,而不需要學習任何引數。
注:有關 Transformer 的更深入討論,可參考 Jay Alammar 的這篇 博文 。
最初的 Transformer 架構被用於機器翻譯(含有編碼器 - 解碼器機制)。據此, Al-Rfou 等人 提出了一種語言建模架構。該架構的目標是根據之前的字元預測片段中的字元。例如,它使用 x1 … xn-1 預測字元 xn,而右邊的下一個字元則被遮蔽(參見下圖)。這種 64 層變換器模型僅限於處理 512 個字元這種相對較短的輸入,因此它將輸入分成段,並分別從每個段中學習。如果在測試階段需要處理較長的輸入,該架構會在每一步中將輸入向右移動一個字元,以此實現對單個字元的預測。
該模型在常用基準測試(enwik8 和 text8)上的表現優於 RNN 模型,但它仍然存在以下兩個缺點:
-
上下文相關性有限。字元之間的最大依賴距離受輸入長度的限制。例如,該模型不能“使用”出現在幾個句子之前的單詞。
-
上下文破碎。對於長度超過 512 個字元的文字,其每個段都是從頭開始單獨訓練的。因此,對於每個段的第一個表徵以及各個段之間,根本不存在上下文(依賴性)。這會使得訓練效率低下,並會影響模型的效能。
Transformer-XL 的工作機制
Transformer-XL 架構基於 Al-Rfou 等人提出的 vanilla Transformer,但引入了兩點創新—— 迴圈機制(Recurrence Mechanism) 和 相對位置編碼(Relative Positional Encoding) ,以克服 vanilla Transformer 的缺點。與 vanilla Transformer 相比,該架構的另一個優勢是它可以被用於單詞級和字元級的語言建模。
迴圈機制
迴圈機制的目標是通過利用之前段的資訊來實現長期依賴性。與 vanilla Transformer 類似,Transformer-XL 處理第一個標記段,但它會保留隱藏層的輸出。處理後面的段時,每個隱藏層都會接收兩個輸入:
-
該段的前一個隱藏層的輸出,和 vanilla Transformer 相同(如下圖中的灰色箭頭所示)。
-
上一個隱藏層的輸出(如綠色箭頭所示),可以使模型建立長期依賴關係。
從技術上講,這兩個輸入會被拼接,然後用於計算當前段(當前層的當前頭部)的 Key 和 Value 矩陣。該步驟為網路提供了更多關於每個表徵的權重(重要性)的資訊,但它不會更改 Value 矩陣。
該概念可以擴充套件到更長的依賴上。使用相同的方法,利用前面多個段的資訊,只要 GPU 記憶體允許,在測試階段也可以獲得更長的依賴。
迴圈機制的另一個優點是其測試速度快。在每個步驟中,它可以一次前進一整個段(而不是像在 vanilla Transformer 中一次只能前進一個表徵),並使用先前段的資料來預測當前段的表徵。
相對位置編碼
迴圈機制引入了新的挑戰——原始位置編碼將每個段分開處理,因此,來自不同段的表徵會具有相同的位置編碼。例如,第一和第二段的第一個表徵將具有相同的編碼,雖然它們的位置和重要性並不相同(比如第一個段中的第一個表徵可能重要性低一些)。這種混淆可能會錯誤地影響網路。
針對此問題,論文提出了一種新的位置編碼方式。這種位置編碼是每個注意力模組的一部分。它不會僅在第一層之前編碼位置,而且會基於表徵之間的相對距離而非絕對位置進行編碼。從技術上講,它對注意力頭分數(Attention Head’s Score)的計算方式不再是簡單的乘法(Qi⋅Kj),而是包括四個部分:
-
內容權重——沒有新增原始位置編碼的原始分數。
-
相對於當前內容的位置偏差(Qi)。該項使用正弦類函式來計算表徵之間的相對距離(例如 i-j),用以替代當前表徵的絕對位置。
-
可學習的全域性內容偏差——該模型添加了一個可學習的向量,用於調整其他表徵內容(Kj)的重要性。
-
可學習的全域性偏差——另一個可學習向量,僅根據表徵之間的距離調整重要性(例如,最後一個詞可能比前一段中的詞更重要)。
實驗結果
論文作者比較了模型在單詞級別和字元級別資料集上的表現,並將其與其他著名模型(RNN 和 Transformer)進行了比較。Transformer-XL 在幾個不同的資料集基準測試中實現了最先進的(SOTA)結果:
-
在大型單詞級別資料集—— WikiText-103 資料集 上,18 層的 Transformer-XL(含有 257M 引數)獲得了 18.3 的 困惑度 。這個結果優於之前 Baevski 和 Auli 得到的最優值 20.5。
-
在字元級資料集 enwik8 上,12 層 Transformer-XL 達到了 1.06 位每字元(bpc),與 Al-Rfou 等人之前的 SOTA 類似,但相比於 Transformer-XL,Al-Rfou 等人卻使用了六倍以上的引數。另外,24 層 Transformer-XL 實現了一個 0.99 bpc 的新 SOTA。
-
有趣的是,在僅具有短期依賴性的資料集(如僅包含單個句子 One Billion Word 資料集 以及小型資料集(如僅含有 1M 表徵的 Penn Treebank 資料集 上,Transformer-XL 也實現了 SOTA 結果。這表明該模型在這些情景中也可能有效。
迴圈機制和相對位置編碼的優點如下面的圖表所示。圖中比較了不同上下文長度(即注意力頭中使用的之前的表徵的數量)中包含或不包含迴圈機制,以及使用或不使用新編碼方式的困惑度得分。完整的 Transformer-XL 明顯優於其他模型,並能夠有效利用長期依賴性。此外,它還能夠捕獲比 RNN 更長的依賴性(延長了 80%)。
最後,如前所述,該模型在推理階段的速度也明顯快於 vanilla Transformer,特別是對於較長的上下文。例如,對於 800 個字元的上下文長度,Transformer-XL 比 vanilla Transformer 快 363 倍;而對於 3800 字元的上下文,Transformer-XL 快了 1874 倍。
實現細節
該模型是 開源 的,並使用 TensorFlow 和 PyTorch 實現。作者也上傳了預先訓練好的模型。每個資料集的訓練具體需要多長時間並未明確給出。
結論
Transformer-XL 在幾種不同的資料集(大 / 小,字元級別 / 單詞級別等)均實現了最先進的語言建模結果。它結合了深度學習的兩個重要概念——迴圈機制和注意力機制,允許模型學習長期依賴性,且可能可以擴充套件到需要該能力的其他深度學習領域,例如音訊分析(如每秒 16k 樣本的語音資料)等。
此模型尚未在情感分析或問題回答等 NLP 任務上進行測試。另外,這種強語言模型與其他基於 Transformer 的模型(如 BERT )相比有何優點,仍然有待解答。
相關資料傳送門:
論文地址:
https://arxiv.org/abs/1901.02860
程式碼開源(包含 PyTorch 和 TensorFlow 的模型實現,而且帶有預訓練的模型):
https://github.com/kimiyoung/transformer-xl
本文英文原文釋出於 LyrnAI,連結: https://www.lyrn.ai/2019/01/16/transformer-xl-sota-language-model/