CMU和谷歌聯手放出XL號Transformer!提速1800倍|代碼+模型

乾明 發自 凹非寺

量子位 出品 | 公眾號 QbitAI

XL號的Transformer來了!

近日,CMU和谷歌聯手發佈一篇論文,介紹了一種新的語言建模方法Transformer-XL。

這裡的XL,指的是extra long,意思是超長,表示Transformer-XL在語言建模中長距離依賴問題上有非常好的表現。同時,也暗示著它就是為長距離依賴問題而生。


CMU和谷歌聯手放出XL號Transformer!提速1800倍|代碼+模型


長距離依賴問題,是當前文本處理模型面臨的難題,也是RNN失敗的地方。

相比之下,Transformer-XL學習的依賴要比RNN長80%。比Vanilla Transformers快450%。

在短序列和長序列上,都有很好的性能表現。更可怕的還在速度上,在評估過程中,比Vanilla Transformers快了1800倍以上。

效果?更是不消多數。在enwiki8、text8、WikiText-2、WikiText-103和One Billion Words等數據集實驗中,都處於領先水平。


CMU和谷歌聯手放出XL號Transformer!提速1800倍|代碼+模型


尤其是字符級別的enwiki8中,Transformer-XL是第一個突破1.0的。

Transformer-XL是怎麼做的?

關鍵有兩點,一是在Transformer中引入重用機制,二是使用相對位置編碼。

但是,想弄清楚Transformer-XL,要先從Transformer的侷限開始說起。

Transformer的侷限

在將Transformer或者是自注意力機制(self-attention)應用到語言建模中,需要解決的核心問題是如何訓練Transformer,將任意長度的語境有效地編碼為固定大小的表徵。

如果有無限的存儲和計算資源,一個無條件的Transformer就能解決這個問題。但在實際的運用中,資源是有限的,這個思路就行不通了。

另一個思路,就是將序列分成可以管理的較短片段,在每個片段內訓練模型,忽略來自先前片段的所有語境信息,如下圖的中a部分所示。


CMU和谷歌聯手放出XL號Transformer!提速1800倍|代碼+模型


這就是之前Rami Al-Rfou(谷歌AI高級軟件工程師)等人採用的方法。

在這種訓練範式下,信息不可能向前或向後穿過各個部分進行傳遞,這也就帶來了新的麻煩。

首先,Transformer最大可能的依賴長度,將受到每個片段的長度限制。字符級的語言建模上通常是幾百。所以,儘管與RNN相比,Transformer受梯度消失問題的影響較小,但在Vanilla 模型中,並不能充分利用這個優勢。

而且,簡單地將語料庫分割成固定長度的片段,也會導致語境碎片的問題。

如上圖中b部分所示,在評估期間的每個步驟,Vanilla模型也將會消耗與訓練中相同長度的片段,但僅僅在最後位置進行一次預測。在下一步,的這個片段僅僅只是向右移動了一個位置,然後又從頭處理新的片段。

雖然這樣做有助於確保進行每個預測的時候,利用訓練期間暴露的最長可能語境,還能減輕訓練中遇到的語境碎片問題。但真的是太貴了。

引入重用機制

為了突破使用固定長度片段帶來的語境限制,這篇論文在Transformer體系結構中引入了重複機制。

在訓練期間,為模型處理下一個新的片段時,會緩存前一個片段計算的隱藏狀態序列,並作為擴展語境重用,如下圖中所示。


CMU和谷歌聯手放出XL號Transformer!提速1800倍|代碼+模型


雖然梯度仍然保留在一個片段內,但這個額外的輸入,允許網絡利用歷史信息,從而能夠對長期依賴建模,並避免場景碎片。

除了這些好處之外,重複機制還能夠加快評估速度。在評估期間,可以重複使用來自先前片段的表徵,而不是像Vanilla模型從頭開始。

在針對enwiki8數據集的實驗中,Transformer-XL在評估過程中比Vanilla模型快1800倍。

相對位置編碼

但是,想要重用隱藏狀態,還需要解決一個關鍵的技術挑戰:重用狀態時,如何保持位置信息的一致性?

在標準的Transformer中,序列順序的信息,都是由一組位置編碼提供,每一個位置都有絕對的位置信息。但將這個邏輯應用到重用機制中時,會導致性能損失。

這個問題的解決思路是,對隱藏狀態中的相對位置信息進行編碼。從概念上講,位置編碼為模型提供了關於應如何收集信息的時間線索,即應該在哪裡介入處理。

以相對的方式定義時間線索,將相同的信息注入每層的注意分數,更加直觀,也更通用。

基於這個思路,可以創建一組相對位置編碼,使得重用機制變得可行,也不會丟失任何的時間信息。

將相對位置嵌入Transformer之中,並配合重用機制,就得到了Transformer-XL的架構。

基於這些改進,Transformer-XL在相關的數據集上都取得了很好的成績。論文中表示,這是第一個在字符級和單詞級建模方面比RNN結果更好的自注意力模型。

誰寫的?

這篇論文並列第一作者分別是來自CMU的Zihang Dai和谷歌大腦的楊植麟,都是博士生。

其中,Zihang Dai二年級的博士生,楊植麟是CMU的四年級博士生,師從蘋果首任AI總監Ruslan Salakhutdinov。


CMU和谷歌聯手放出XL號Transformer!提速1800倍|代碼+模型


其他作者分別是CMU的Yiming Yang教授、谷歌AI的研究與工程總監William W. Cohen、CMU語言技術研究所主任Jaime Carbonell、谷歌大腦的研究科學家Quoc V. Le、CMU的Ruslan Salakhutdinov。

從署名來看,可是說大牛雲集,但這篇論文還是遭到了ICLR 2019的拒稿。

折戟ICLR 2019

在2018年9月28日的時候,論文提交給了ICLR 2019,得到了拒稿的意見。

ICLR 2019會議論文717區主席1給出了拒稿的意見。

TA表示,儘管語言建模有了(顯著的)改進,但是更好的語言模型(在字符和單詞級別)是否能夠在下游任務中獲得更好的性能,或者是否可以使用這種技術來構建更好的條件語言模型仍然是一個棘手的問題。

僅就目前的情況,看不到什麼優點。需要將這種技術應用到文檔中,看看能否在計算效率和性能之間取得良好的表現。


CMU和谷歌聯手放出XL號Transformer!提速1800倍|代碼+模型


另一個給出拒稿意見的評審,也是來自717區。

TA給出了四點評審意見:

第一,WikiText-103上的實驗結果很好,但在其他三個數據集中,幾乎沒有增益。

第二,比較速度,應該跟更多的LM模型比較,Al-Rfou的不是最快的。

第三,在方程周圍,寫的不太清楚, 而且在第3頁的結尾等地方有拼寫錯誤。

第四,整體而言,這篇論文有所貢獻,重複機制只是一個類似於殘留網絡的想法,但更簡化了。相對位置編碼,也不是新的想法。


CMU和谷歌聯手放出XL號Transformer!提速1800倍|代碼+模型


對於這些問題,以及其他的建議,論文作者都給出了回應。

現在放出來的論文是更新版,還附帶Transformer-XL的實現代碼、預訓練模型和超參數。

如果你感興趣,請收好傳送門~

傳送門

論文地址:

https://arxiv.org/abs/1901.02860

項目地址:

https://github.com/kimiyoung/transformer-xl

拒稿現場:

https://openreview.net/forum?id=HJePno0cYm

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態


分享到:


相關文章: