|
實(shí)驗(yàn)是在WMT2014 English-German(En-De)和English-French(En-Fr)兩個(gè)機(jī)器翻譯數(shù)據(jù)集上進(jìn)行的,作者使用的Transformer模型和Transformer的那篇原始文獻(xiàn)(Vaswani et al.,2017)是一樣的。Transformer model 一共6層編碼器和解碼器,layer size是512,feed-forward sub-layer的size是2048,attention head的數(shù)值是8,dropout是0.1,initialization seed設(shè)置為1。
觀察模塊的重要性
上圖是采用兩種度量方式在兩個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果,其中X軸代表的是模塊類型,Y軸表示的是layer id。其中顏色越深就越重要。可以看出兩種度量方式的結(jié)果很大程度上是一致的,比方說:
the decoder self-attention(D:SA)是最不重要的,而the decoder feed-forward layers(D:FF)是最重要的。
編碼器里越靠前(E:SA和E:FF)和解碼器里越靠后(D:EA和D:FF)是更重要的。這個(gè)其實(shí)很直觀,因?yàn)檫@些模塊離數(shù)據(jù)的輸入和輸出更近,所以對(duì)輸入句子的理解和輸出句子的生成要更加重要些。
在解碼器里越靠后的encoder-attention(D:EA)layers要比之前的encoder-attention layers重要。
分析不重要的模塊
更低的dropout比例和更多的訓(xùn)練數(shù)據(jù)會(huì)讓不重要的模塊變得更少(dropout是一種常見的用來防止過擬合的手段)。為了保證模型的效果,當(dāng)我們使用dropout的時(shí)候其實(shí)說明模型本身有一定程度上的冗余。在不降低模型效果的前提下,小的dropout比例剛好說明模型的冗余越少,也就是不重要的模塊更少。大規(guī)模的訓(xùn)練數(shù)據(jù)本身就自帶更多的patterns。需要充分發(fā)揮transformer的各個(gè)模塊才能有效地學(xué)習(xí)到。
從上面兩張圖可以明顯的看出:當(dāng)使用更小的dropout和更大的數(shù)據(jù)集時(shí),顏色深的版塊明顯變得更多。此外之前所得到的結(jié)論這里依然成立。
區(qū)分和利用一批不重要的模塊
之前的結(jié)果都是只刪除一個(gè)模塊得到,那我們一次性刪除多個(gè)模塊呢?
上圖顯示當(dāng)我們刪除3到4個(gè)不重要的模塊時(shí),模型效果并沒有明顯降低。但是當(dāng)刪的更多了之后,模型的效果會(huì)受到較大的影響。那么我們是否可以利用這些不怎么重要的模塊去對(duì)模型進(jìn)行優(yōu)化呢?作者采用了兩種方式:一個(gè)是模塊剪枝,另一個(gè)是模塊回卷。
模塊剪枝就是將不重要的模塊直接刪掉,因?yàn)閯h掉了相應(yīng)模塊使得模型的參數(shù)變小,作為對(duì)比作者在相同參數(shù)量下使用了一個(gè)淺層的decoder模型結(jié)果如表:
可以看出剪枝后的模型要比同樣參數(shù)下的淺層模型結(jié)果要好,而且也能達(dá)到和原始模型相應(yīng)的效果,有的甚至更好(還真有)。
模塊回卷就是將不重要的模塊參數(shù)回卷到初始化狀態(tài),再和其他模塊一起微調(diào)一下得到的訓(xùn)練結(jié)果要比原始模型好一點(diǎn)。
|