BERT 帶來的影響還未平復,CMU 與谷歌大腦提出的 XLNet 在 20 個任務上超過了 BERT 的表現,並在 18 個任務上取得了當前最佳效果。使人激動的是,目前 XLNet 已經開放了訓練代碼和大型預訓練模型,這又能夠玩一陣了~
機器之心報道,機器之心編輯部。
git
2018 年,谷歌發佈了基於雙向 Transformer 的大規模預訓練語言模型 BERT,刷新了 11 項 NLP 任務的最優性能記錄,爲 NLP 領域帶來了極大的驚喜。很快,BERT 就在圈內普及開來,也陸續出現了不少與它相關的新工做。github
BERT 帶來的震撼還未平息,今日又一全新模型出現。網絡
來自卡耐基梅隆大學與谷歌大腦的研究者提出新型預訓練語言模型 XLNet,在 SQuAD、GLUE、RACE 等 20 個任務上全面超越 BERT。架構
而此論文的做者也都是咱們熟知的研究者:共同一做爲楊植麟(曾經的清華學霸,如今 CMU 讀博)與 Zihang Dai(CMU 博士),此外還包括 CMU 教授 Yiming Yang,CMU 語言技術中心的總負責人 Jaime Carbonell,CMU 教授、蘋果 AI 負責人 Russ Salakhutdinov,谷歌大腦的創始成員、AutoML 的締造者之一 Quoc Le。併發
論文地址:https://arxiv.org/pdf/1906.08237.pdf
app
預訓練模型及代碼地址:https://github.com/zihangdai/xlnet框架
那麼,相比於 BERT,XLNet 有哪些提高呢?函數
做者表示,BERT 這樣基於去噪自編碼器的預訓練模型能夠很好地建模雙向語境信息,性能優於基於自迴歸語言模型的預訓練方法。然而,因爲須要 mask 一部分輸入,BERT 忽略了被 mask 位置之間的依賴關係,所以出現預訓練和微調效果的差別(pretrain-finetune discrepancy)。性能
基於這些優缺點,該研究提出了一種泛化的自迴歸預訓練模型 XLNet。XLNet 能夠:1)經過最大化全部可能的因式分解順序的對數似然,學習雙向語境信息;2)用自迴歸自己的特色克服 BERT 的缺點。此外,XLNet 還融合了當前最優自迴歸模型 Transformer-XL 的思路。學習
最終,XLNet 在 20 個任務上超過了 BERT 的表現,並在 18 個任務上取得了當前最佳效果(state-of-the-art),包括機器問答、天然語言推斷、情感分析和文檔排序。
之前超越 BERT 的模型不少都在它的基礎上作一些修改,本質上模型架構和任務都沒有太大變化。可是在這篇新論文中,做者從自迴歸(autoregressive)和自編碼(autoencoding)兩大範式分析了當前的預訓練語言模型,並發現它們雖然各自都有優點,但也都有難以解決的困難。爲此,研究者提出 XLNet,並但願結合大陣營的優秀屬性。
AR 與 AE 兩大陣營
無監督表徵學習已經在天然語言處理領域取得了巨大的成功。在這種理念下,不少研究探索了不一樣的無監督預訓練目標,其中,自迴歸(AR)語言建模和自編碼(AE)成爲兩個最成功的預訓練目標。
AR 語言建模旨在利用自迴歸模型估計文本語料庫的機率分佈。因爲 AR 語言模型僅被訓練用於編碼單向語境(前向或後向),於是在深度雙向語境建模中效果不佳。而下游語言理解任務一般須要雙向語境信息。這致使 AR 語言建模沒法實現有效預訓練。
相反,基於 AE 的預訓練模型不會進行明確的密度估計,而是從殘缺的輸入中重建原始數據。一個著名的例子就是 BERT。給出輸入 token 序列,BERT 將一部分 token 替換爲特殊符號 [MASK],隨後訓練模型從殘缺版本恢復原始的 token。因爲密度估計不是目標的一部分,BERT 容許使用雙向語境進行重建。
可是,模型微調時的真實數據缺乏 BERT 在預訓練期間使用的 [MASK] 等人工符號,這致使預訓練和微調之間存在差別。此外,因爲輸入中預測的 token 是被 mask 的,所以 BERT 沒法像自迴歸語言建模那樣使用乘積法則(product rule)對聯合機率進行建模。
換言之,給定未 mask 的 token,BERT 假設預測的 token 之間彼此獨立,這被過分簡化爲天然語言中廣泛存在的高階、長期依賴關係。
兩大陣營間須要新的 XLNet
現有的語言預訓練目標各有優劣,這篇新研究提出了一種泛化自迴歸方法 XLNet,既集合了 AR 和 AE 方法的優點,又避免了兩者的缺陷。
首先,XLNet 不使用傳統 AR 模型中固定的前向或後向因式分解順序,而是最大化全部可能因式分解順序的指望對數似然。因爲對因式分解順序的排列操做,每一個位置的語境都包含來自左側和右側的 token。所以,每一個位置都能學習來自全部位置的語境信息,即捕捉雙向語境。
其次,做爲一個泛化 AR 語言模型,XLNet 不依賴殘缺數據。所以,XLNet 不會有 BERT 的預訓練-微調差別。同時,自迴歸目標提供一種天然的方式,來利用乘法法則對預測 token 的聯合機率執行因式分解(factorize),這消除了 BERT 中的獨立性假設。
除了提出一個新的預訓練目標,XLNet 還改進了預訓練的架構設計。
受到 AR 語言建模領域最新進展的啓發,XLNet 將 Transformer-XL 的分割循環機制(segment recurrence mechanism)和相對編碼範式(relative encoding)整合到預訓練中,實驗代表,這種作法提升了性能,尤爲是在那些包含較長文本序列的任務中。
簡單地使用 Transformer(-XL) 架構進行基於排列的(permutation-based)語言建模是不成功的,由於因式分解順序是任意的、訓練目標是模糊的。所以,研究人員提出,對 Transformer(-XL) 網絡的參數化方式進行修改,移除模糊性。
目標:排列語言建模(Permutation Language Modeling)
從上面的比較能夠得出,AR 語言建模和 BERT 擁有其自身獨特的優點。咱們天然要問,是否存在一種預訓練目標函數能夠取兩者之長,同時又克服兩者的缺點呢?
研究者借鑑了無序 NADE 中的想法,提出了一種序列語言建模目標,它不只能夠保留 AR 模型的優勢,同時也容許模型捕獲雙向語境。具體來講,一個長度爲 T 的序列 x 擁有 T! 種不一樣的排序方式,能夠執行有效的自迴歸因式分解。從直覺上來看,若是模型參數在全部因式分解順序中共享,那麼預計模型將學習從兩邊的全部位置上收集信息。
爲了提供一個完整的概覽圖,研究者展現了一個在給定相同輸入序列 x(但因式分解順序不一樣)時預測 token x_3 的示例,以下圖所示:
模型架構:對目標感知表徵的雙流自注意力
對於參數化,標準 Transformer 架構存在兩個互相矛盾的要求:1)預測 token 應該僅使用位置 z_t 而不是內容 x_z<t,否則該目標函數就變得不重要了;2)爲了預測另外一個 token x_zj,其中 j>t,
應該編碼內容 x_z<t,以提供完整的上下文信息。爲了解決這一矛盾,該研究提出使用兩個隱藏表徵的集合,而不是隻用其中一個。
這兩個隱藏表徵即內容表徵 h_zt 和 Query 表徵 g_zt,下圖 2 的 a、b 分別展現了這兩種表徵的學習。其中內容表徵與 Transforme 的隱藏狀態相似,它將同時編碼輸入自己的內容及上下文信息。Query 表徵僅能獲取上下文信息及當前的位置,它並不能獲取當前位置的內容。
因爲目標函數適用於 AR 框架,研究者整合了當前最佳的 AR 語言模型——Transformer-XL 到預訓練框架中,並將其體如今方法名字中。具體來講,他們借鑑了 Transformer-XL 中的兩項重要技術——相對位置編碼範式和分割循環機制。如今,結合雙流注意力和 Transformer-XL 的改進,上面圖 2(c) 展現了最終的排列語言建模架構。
實驗結果
和 BERT 相同,研究者使用了 BooksCorpus 和英文維基百科做爲預訓練數據,文本量達到 13GB。此外,論文還使用了 Giga 5(16GB 文本),ClueWeb 2012-B 和 Common Crawl 數據集進行預訓練。他們在後兩個數據集上使用了啓發式搜索過濾掉較短或低質量的文本,最終分別剩餘 19 GB 和 78 GB 文本。
這項工做中的最大模型 XLNet-Large 擁有與 BERT-Large 相同的架構超參數,所以模型大小也類似。研究者在 512 塊 TPU v3 上藉助 Adam 優化器對 XLNet-Large 訓練 500K 步,學習率線性降低,batch 大小爲 2048,訓練時間爲 2.5 天。