論文地址:https://arxiv.org/abs/1905.07799?context=cs.LG
研究的問題:
相對於LSTM來說,Transformer幾乎在所有的NLP任務上都能勝出。但是有一點,Transformer的時間復雜度是O(n^2)的,因為對於每一步,它都需要計算該步與之前的所有context的attention信息。但LSTM則是O(n)的復雜度。
這樣的性質,使得Transformer在序列長度上很難擴展,基本上1k個token就是上限了。然而對於字符級的語言模型來說,上千個token的輸入也是比較常見的
本文的工作與創新點:
論文提出了一種自適應寬度的方法,顯著地擴展了transformer中使用的最大上下文大小。在這種方法下,可以將輸入序列擴展到超過8000個token,同時不損失性能也不會增加計算或內存開銷。
研究方法:
Motivation:
方法來源於對不同head的觀察,在普通的Transformer中,不同的head會學習到不同的部分,它們的寬度並不同,如下圖所示:
headA關注到的是最近的20個,再往前的80個的權重很低。而HeadB關注到的則是全部的token。
因而,如果能有一種方法,使得我們能自動省略掉headA的不相干的計算,那么,就可以大大減少計算量。
Realization:
它的實現借助了一個mask函數,公式和圖像如下圖所示:
在計算attention的權重的時候,使用context和當前位置的距離來作為mask函數的輸入。在學習過程中,z是需要學習的參數,對每個head,z都是不同的。attention權重的計算如下圖:
在損失函數中,給z添加一個L1 penalization
作為擴展,我們也可以用網絡的方式來學習z,即z是基於當前輸入的一個輸出。這種方式被稱為動態寬度。
實驗部分:
關於結果、參數量和計算量之前的對比:
可以看到,相對於普通的Transformer來說,參數量並沒有太大的降低,但是計算量卻會有三四個數量級的減少。
評價:
對於transformer模型有很多修改,本文是其中之一。通過觀察發現大部分層/head的attention集中在局部而對網絡進行優化,使用相對低的計算代價建模長程上下文,在字符級語言模型上效果顯著優於transformer-xl,不過adaptive的方法通常需要對參數比較敏感,其它任務上的性能有待考證。