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