时间自适应卷积:比自注意力更快的特征提取器
論文標題:
Time-aware Large Kernel Convolutions
論文作者:
Vasileios Lioutas, Yuhong Guo
論文鏈接:
https://arxiv.org/pdf/2002.03184v1.pdf
在本文,我們介紹一篇非常有趣的工作:使用“時間自適應”的卷積去替換Transformer中的自注意力,從而將時間復雜度從降低到O(n),極大加快了文本生成的速度,同時還得到了非常好的效果。
在數據集WMT En-De, En-Fr和IWSLT De-En上取得了和當前最優相同的結果。
Transformer的時間復雜度
作為大家熟悉的老朋友,Transformer在各種NLP模型、任務上已經被反復提及了。
Transformer使用了自注意力(Self-attention)去建模每個字符和所有字符的關系,從而,它的時間復雜度是的。
顯然,這在模型運行的過程中是一筆不可忽略的開銷,尤其當句子長度很大的時候,運行Transformer的時間開銷是非常大的。
那么,有沒有什么方法既能實現Transformer的效果,又能加快速度嗎?
動態卷積給出了一個比較好的答案:使用卷積網絡建模語義關系,從而將復雜度降低到O(kn),這里k是卷積核大小。
那么,有沒有進一步減小時間開銷呢?為此,本文繼續從卷積網絡出發,提出一種時間自適應的卷積:對每個時間步(即每個位置的字符),動態地預測得到它的卷積核大小,進而利用現有的“并行點綴和”技術降低時間復雜度,使其達到最理想的O(n)。
在降低時間開銷的同時,本方法還能達到和當前最優相同的結果,既高效又強大。
總的來說,本文貢獻如下:
提出時間自適應卷積,對每個字符得到其不同的卷積核大小;
極大降低自注意力的時間開銷,將復雜度降低到了O(n),同時還有更少的內存開銷;
在WMT En-De, En-Fr和IWSLT De-En和WikiText-103上實現了和當前最優十分相近的結果。
在閱讀完本文后,讀者可以思考一個簡單的問題:為什么說這種方法可以實現線性復雜度O(n)?
時間自適應卷積
設輸入是長度為 n?的文本,每個都是 d?維向量,就是所謂的時間步。
為此降低編碼時間開銷,我們首先直接考慮把第 i?個時間步周圍的向量相加(相當于一個窗口):
其中是窗口的兩端。
當然,如果對每個時間步 i?都單獨相加,這就非常低效,因為有很多項被重復相加。為此,我們直接考慮前綴和:
那么,現在就可以寫成:
我們現在想要對每個時間步 i,它的窗口大小是不同的,所以需要為每個計算它的窗口。由于直接計算窗口大小的絕對值不方便,我們轉而計算其相對值:
其中,是相對大小,是最大允許的窗口大小。
由于計算得到的實值,我們需要把它轉化為整數。下面,我們就從這實值附近采樣整數:
這里。上述操作都是可微的。
然而,這種方法的問題是,隨著模型層數的增加,向量的和會越來越大,導致模型無法收斂。所以,我們還需要對得到的結果歸一化:
此外,對得到的加以Dropout也有助于過擬合。
類似Transformer,該方法也可以應用到多頭機制上。這只需要把原始的輸入分成若干組,然后對所有組并行操作即可,下圖是一個示例:
圖中有兩個頭,分別是綠色和藍色,各自的絕對窗口大小分別在左右。
在解碼的時候,只需要令即可。
實驗
本文在機器翻譯數據集WMT English to German (En-De), WMT English to French (En-Fr) and IWSLT German to English (De-En)和語言模型數據集WikiText-103上實驗。具體實驗細節詳見論文。
下面是在WMT上的實驗結果。可以看到,在參數量幾乎相同的情況下,本方法(TaLK)實現了幾乎和當前最優結果相同的結果(實際上還要更快)。
而在IWSLT De-En上,本方法達到了35.5的BLEU值,比之前最好的35.2更高。
而在語言模型上,在相同的參數量下,本方法取得了最好的結果,為20.3的PPL,如下表所示:
下面我們重點比較各方法的編碼時間和內存上的開銷,結果如下表所示。
首先看內存開銷,隨著句子長度的增加,本方法相比自注意力就更加有優勢,并且比動態卷積還要略好。
再看每秒迭代次數,在 n=10,100 的時候,本方法每秒迭代次數大概是自注意力和動態卷積的兩倍。
在 n=1000?的時候,是自注意力的四倍,是動態迭代的兩倍;而在 n=10000?時,自注意力直接OUt of Memory,而本方法依舊堅挺。
最后我們來看看本方法各組成的作用,如下表所示。顯然,沒有歸一化,模型原地狗帶,無法收斂。增大窗口最終效果所有幫助,其他方面的技巧似乎幫助不太大。
小結及思考題
本文提出一種時間自適應的卷積,在每一個時間步,都動態地得到當前的卷積大小,并使用前綴和實現了 O(n)?的復雜度。在機器翻譯和語言模型的實驗上表明了該方法又快又好,還能節省內存開銷。
至于為什么說這種方法只有線性復雜度:首先,我們需要對每個時間步操作,而對它而言,我們只需要計算一個前綴和的差即可,而前綴和是預先計算得到的,所以可以看作是一個常量。從而總的來說,編碼的復雜度就是?O(n)。
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的时间自适应卷积:比自注意力更快的特征提取器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 因连续三年曝数据泄露,美国运营商 T-M
- 下一篇: 4G / 5G 版三星 Galaxy A