【深度學(xué)習(xí)】預(yù)訓(xùn)練的卷積模型比Transformer更好?
引言
這篇文章就是當(dāng)下很火的用預(yù)訓(xùn)練CNN刷爆Transformer的文章,LeCun對(duì)這篇文章做出了很有深意的評(píng)論:"Hmmm"。本文在預(yù)訓(xùn)練微調(diào)范式下對(duì)基于卷積的Seq2Seq模型進(jìn)行了全面的實(shí)證評(píng)估。本文發(fā)現(xiàn):
(1)預(yù)訓(xùn)練過程對(duì)卷積模型的幫助與對(duì)Transformer的幫助一樣大;
(2)預(yù)訓(xùn)練的卷積模型在模型質(zhì)量和訓(xùn)練速度方面在某些場景中是有競爭力的替代方案。
Pre-Trained Convolution Models
Lightweight Depthwise Convolution
1.Depthwise convolutions
假設(shè)輸入一個(gè)tensor ,其維度為 ,depthwise卷積定義如下:
是可學(xué)習(xí)的矩陣, 是位置 和channel 的輸出。最后整體的輸出維度和輸入維度是一樣的都是 。
舉例:一個(gè)大小為64×64像素、三通道彩色圖片首先經(jīng)過第一次卷積運(yùn)算,depthwise卷積完全是在二維平面內(nèi)進(jìn)行,且Filter的數(shù)量與上一層的Depth相同。所以一個(gè)三通道的圖像經(jīng)過運(yùn)算后生成了3個(gè)Feature map,如下圖所示。

Depthwise Convolution完成后的Feature map數(shù)量與輸入層的depth相同,但是這種運(yùn)算對(duì)輸入層的每個(gè)channel獨(dú)立進(jìn)行卷積運(yùn)算后就結(jié)束了,沒有有效的利用不同map在相同空間位置上的信息。
2. Lightweight Convolutions
Lightweight Convolutions在Depthwise Convolution的基礎(chǔ)上使用了 , 是一個(gè)具有softmax歸一化核以及共享輸出通道和權(quán)重的深度可分離卷積:
其中 ,參數(shù)在每個(gè) 的輸出通道中共享。當(dāng)的時(shí)候,相當(dāng)于所有通道共享所有的參數(shù)。
3. Dynamic Convolutions
Dynamic Convolutions 是Lightweight Convolutions的一種變種,該方法關(guān)鍵的思想是學(xué)習(xí)特定位置的核來執(zhí)行輕量級(jí)卷積:
其中 是一個(gè)線性變化,參數(shù)為 ,學(xué)習(xí)的是特定位置的kennel。
Span-based Seq2Seq pre-training
本文采用span-based的Seq2Seq預(yù)訓(xùn)練(Raffel等人,2019)。具體來說,給定一個(gè)輸入序列,我們隨機(jī)mask掉個(gè)spans,并用特殊的[mask]標(biāo)記替換。然后,預(yù)訓(xùn)練任務(wù)是生成被mask掉的token。例如:
Inputs: The happy cat sat [mask].
Outputs: on the mat.
Convolutional Seq2Seq Architecture 本文實(shí)現(xiàn)的Convolutional Seq2Seq模型與Transformer的區(qū)別在于將Transformer中的multi-headed self-attention替換為卷積blocks。對(duì)于Transformer中的query-key-value,本文使用門控線性單元代替。其中每個(gè)卷積block由以下部分組成:
其中 都是學(xué)習(xí)的參數(shù)。
作者實(shí)驗(yàn)了lightweight convolutions、dynamic convolutions以及dilated convolutions。和(Wu等人,2019年;Gehring等人,2017年)的實(shí)驗(yàn)相同,本文保持編碼器-解碼器的attention不變。并且遵循Transformer的主干模型,在該模型中,本文使用LayerNorm和殘差連接形成每個(gè)子模塊。因此,每個(gè)Conv block被寫為:
就是上述的各個(gè)類型的卷積。 是一個(gè)兩層帶RELU的全連接。
Optimization
本文采用了token-wise的交叉熵loss:
第一個(gè)sum指的是將mask掉的 個(gè)span的loss求和, 表示的是類別 在 時(shí)刻的預(yù)測值, 表示的是類別 在 時(shí)刻的ground truth。
Research Questions and Discussion
作者總結(jié)了幾個(gè)希望本文能夠解決的幾個(gè)問題:
(1)pre-train給卷積模型帶來的收益和Transformer相比怎樣?卷機(jī)模型
(2)卷積模型如果通過預(yù)訓(xùn)練或者其他方式是否能夠和Transformer模型對(duì)抗,什么情況下卷積模型表現(xiàn)好?
(3)使用預(yù)訓(xùn)練的卷積模型比預(yù)訓(xùn)練的Transformer有什么好 處(如果有的話)?卷積比基于自注意的Transformer更快嗎?
(4)不使用預(yù)訓(xùn)練卷積效果不好,是否有無特定的故障模式、注意事項(xiàng)和原因分別是什么?
(5)某些卷積變體是否比其他變體更好?
Experiments and Analysis
數(shù)據(jù)集:
Toxicity Detection(二分類):CIVIL COMMENTS、WIKI TOXIC SUBTYPES 、
Sentiment Classification:IMDb、SST-2、Twitter Sentiment140
News Classification(四分類):AGNews
Question Classification(46類分類):TREC Semantic Parsing/Compositional
Generalization: COGS 生成給定英語句子的語義表示的任務(wù)。例如,A cat smiled → cat(x1) AND smile.agent(x2, x1).
Experimental Setup
Pre-training 數(shù)據(jù):the Colossal Cleaned Com- monCrawl Corpus (C4)
span size: 3
optimizer: Adafactor optimizer
GPU: 16 TPU-v3 12小時(shí)
Results
可以看出,除了IMDb之外,其他的任務(wù)中,卷積模型的效果都是要優(yōu)于Transformer的。
但是感覺也可以理解,因?yàn)槌颂鎿Qself-attention之外,大致結(jié)構(gòu)也都和Transformer是一致的,記得之前也有文章說過Transformer最有效的部分并不是self-attention?
此外作者還對(duì)比了二者的速度和操作數(shù)量變化:


可以看出卷積不僅始終比Transformer更快(即使在較短的序列中)操作更少,而且比Transformer的規(guī)模更大。卷積處理文本的長度可以線性擴(kuò)展,而Transformer不能擴(kuò)展到更長的序列。
??
為啥沒在GLUE上測試?
那如果把Transformer整體都替換為卷積是否還會(huì)有這樣的效果呢?
而且作者說目前的模型還沒辦法處理cross-sentence的情況。
往期精彩回顧
本站qq群851320808,加入微信群請(qǐng)掃碼:
