LayerNorm是Transformer的最优解吗?
一只小狐貍帶你解鎖 煉丹術(shù)&NLP?秘籍
前言
眾所周知,無論在CV還是NLP中,深度模型都離不開歸一化技術(shù)(Normalization)。在CV中,深度網(wǎng)絡(luò)中一般會嵌入批歸一化(BatchNorm,BN)單元,比如ResNet;而NLP中,則往往向深度網(wǎng)絡(luò)中插入層歸一化(LayerNorm,LN)單元,比如Transformer。
為什么在歸一化問題上會有分歧呢?一個最直接的理由就是,BN用在NLP任務(wù)里實(shí)在太差了(相比LN),此外,BN還難以直接用在RNN中,而RNN是前一個NLP時代的最流行模型。
雖然有大量的實(shí)驗(yàn)觀測,表明NLP任務(wù)里普遍BN比LN差太多,但是迄今為止,依然沒有一個非常嚴(yán)謹(jǐn)?shù)睦碚搧碜C明LN相比BN在NLP任務(wù)里的優(yōu)越性。甚至,連BN自身為什么work的問題都一直存在爭議。
早期對BN有效性的解釋是其有助于緩解神經(jīng)網(wǎng)絡(luò)“內(nèi)部協(xié)方差漂移”(Internal Covariance Shift,ICS)問題。即,后面的層的學(xué)習(xí)是基于前面層的分布來的,只有前面一層的分布是確定的,后面的層才容易學(xué)習(xí)到有效的模式,然而,由于前面的層的分布會隨著batch的變化而有所變動,導(dǎo)致了后面的層看來“前面一直在動,我無法安心學(xué)習(xí)呀”。
而BatchNorm這類歸一化技術(shù),目的就是讓每一層的分布穩(wěn)定下來,讓后面的層可以在前面層的基礎(chǔ)上安心學(xué)習(xí)知識。顧名思義,BatchNorm就是通過對batch size這個維度歸一化來讓分布穩(wěn)定下來。LayerNorm則是通過對Hidden size這個維度歸一化來讓某層的分布穩(wěn)定。
然而,后來也有一些研究diss了這個解釋,說這個解釋是錯誤或不充分的(incorrect/incomplete)[1],近期也有一些研究[2][3]表明BN之所以有助于訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),是因?yàn)樗梢宰宭oss曲面變得更加平滑。Anyway,這依然是一個未完全解開的老謎。
除了BN之外,LN也有同樣的“為什么work”的終極問題。研究[4]表明,LN在反向時有助于梯度的歸一化。也有研究[5][6]表示LN的主要作用是在訓(xùn)練初期緩解梯度消失和爆炸的問題,提升穩(wěn)定性。
所以說,BN和LN本身的作用機(jī)理都沒有完全搞清楚,自然也很難去證明為什么BN在NLP數(shù)據(jù)上就不work,LN就更work。
不過,近期小夕無意間刷到了一篇UC Berkeley的《Rethinking Batch Normalization in Transformers》[7],發(fā)現(xiàn)了一個比較有趣的實(shí)驗(yàn)結(jié)論,并基于這個觀測,作者提出了一種針對NLP data(確切說是Transformer)改進(jìn)的新的歸一化方法,叫冪歸一化(PowerNorm)。
后臺回復(fù)【0407】獲取論文PDF噢~
強(qiáng)上BN后的Transformer
作者這里做了一個實(shí)驗(yàn),為BN在NLP data(Transformer)上不work提供了一個更加微觀的觀測證據(jù)。
首先,作者將Transformer中的LN都替換成了BN,然后在CV和NLP兩個任務(wù)上觀測BN中的兩個統(tǒng)計量(即均值和方差)及其他們的梯度和在訓(xùn)練過程中的穩(wěn)定程度。
上圖中,藍(lán)色是ResNet20在Cifar-10做圖像分類的結(jié)果,橙色是Transformer+BN在IWSLT14做翻譯的結(jié)果。X軸是訓(xùn)練時間,Y軸是基于batch的統(tǒng)計值和它對應(yīng)的移動平均值的歐式距離。
可以看到,ResNet20在Cifar-10任務(wù)上統(tǒng)計量的震蕩很小,而使用BN的Transformer不僅震蕩劇烈,還有很極端的異常值,這會導(dǎo)致和的統(tǒng)計不準(zhǔn)確,造成train/test不一致,預(yù)測效果下降。
基于這個有趣的觀測結(jié)果,作者這里針對性的提出了兩點(diǎn)改進(jìn),并將改進(jìn)后的BN稱之為冪歸一化(PowerNorm,PN)。
PowerNorm
1. PN-V
BN強(qiáng)制將數(shù)據(jù)轉(zhuǎn)換成均值為0方差為1的正態(tài)分布,但在數(shù)據(jù)本身均值方差劇烈震蕩的情況下,強(qiáng)制移動均值會起到不好的效果。因此作者提出了新的scale方式,只強(qiáng)制數(shù)據(jù)有unit quadratic mean:
這樣針對batch的前向只需一個統(tǒng)計量,反向也簡化成一個梯度:
對比新的(橙色)和之前的(藍(lán)色),發(fā)現(xiàn)震蕩明顯減小:
2. Running Statistics in Training
從PN-V的改進(jìn)可以看到,雖然震蕩減少了很多,但還是有很多異常值。因此作者改用移動平均的方式計算:
但使用移動平均的話,在求梯度時無法對之前所有求導(dǎo),因此作者用當(dāng)前batch的統(tǒng)計量去近似,感興趣的同學(xué)可以看下論文中的推導(dǎo)。
與LN的比較
雖然如前所述,難以說清楚在NLP data上LN比BN優(yōu)越在哪里,但是是容易說清楚PN對BN的優(yōu)越性的(畢竟PN的誕生就是基于BN在NLP data上的實(shí)驗(yàn)觀測)。
那么問題來了:PN和LN哪個更有效?自然也沒法直接在理論層面上進(jìn)行比較,所以作者跑了一把實(shí)驗(yàn),分別嘗試了機(jī)器翻譯和語言模型任務(wù):
對于上述結(jié)果,小夕也去paperwithcode網(wǎng)站查了一下,目前IWSLT14的SOTA是36.3,論文中的35.9可以排在第二的位置;WMT14 En-De的SOTA是35,論文中的30.1可以排在第五的位置;WikiText-103的SOTA是10.8,論文的結(jié)果排在第八名第位置。由于作者沒有做其他優(yōu)化,看起來總體結(jié)果還是不錯的~當(dāng)然,PN在其他NLP data和任務(wù)上是否有效,還有待進(jìn)一步驗(yàn)證。
由于BN和PN的統(tǒng)計量受batchsize的影響,作者在消融實(shí)驗(yàn)中也探究了不同batchsize的效果:
可以看到PN在整體上還是優(yōu)于LN的。
總結(jié)
由于深度學(xué)習(xí)的不可解釋性,歸一化方法在網(wǎng)絡(luò)中真正的作用和優(yōu)劣一直是個謎。本文針對BN提供了一個新的研究角度,通過對統(tǒng)計量及梯度的穩(wěn)定性觀測,找到了BN為什么在NLP問題上不work的其中一個原因,即數(shù)據(jù)分布的震蕩和異常值導(dǎo)致train/test不一致。基于該觀測證據(jù),作者對BN進(jìn)行了對應(yīng)的改進(jìn),提出了更適合NLP data的冪歸一化PowerNorm,得到了優(yōu)于原生BN的效果,且在部分任務(wù)上超過了LN的表現(xiàn)。
另外,看到這里后,相信會有很多小伙伴會關(guān)心BERT+PN的效果。燃鵝眾所周知,要復(fù)現(xiàn)BERT的預(yù)訓(xùn)練過程是非常不可描述的,所以作者這里沒有給出相應(yīng)實(shí)驗(yàn),也是合乎情理的。
所以目前結(jié)構(gòu)創(chuàng)新都不會用BERT去驗(yàn)證,機(jī)器翻譯和LM任務(wù)確實(shí)是常規(guī)benchmark。是否真正有用,可能需要慢慢被大家用起來才知道。
后臺回復(fù)【0407】獲取論文PDF噢~
夕小瑤的賣萌屋
_
關(guān)注&星標(biāo)小夕,帶你解鎖AI秘籍
訂閱號主頁下方「撩一下」有驚喜哦
參考文獻(xiàn)
[1]Ali Rahimi. Nuerips 2017 test-of-time award presentation, December 2017: https://www.zachpfeffer.com/single-post/2018/12/04/Transcript-of-Ali-Rahimi-NIPS-2017-Test-of-Time-Award-Presentation-Speech[2]How does batch normalization help optimization?: https://papers.nips.cc/paper/7515-how-does-batch-normalization-help-optimization.pdf
[3]PyHessian: Neural networks through the lens of the Hessian.: https://arxiv.org/pdf/1912.07145.pdf
[4]Understanding and Improving Layer Normalization: https://arxiv.org/abs/1911.07013
[5]Improving Deep Transformer with Depth-Scaled Initialization and Merged Attention: https://arxiv.org/abs/1908.11365
[6]Fixup Initialization: Residual Learning Without Normalization: https://arxiv.org/abs/1901.09321
[7]Rethinking Batch Normalization in Transformers: https://arxiv.org/abs/2003.07845
[8]詳解深度學(xué)習(xí)中的Normalization,BN/LN/WN: https://zhuanlan.zhihu.com/p/33173246
總結(jié)
以上是生活随笔為你收集整理的LayerNorm是Transformer的最优解吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一份来自清华的数据分析笔记,请查收!
- 下一篇: 2021 年 1 月程序员薪资出炉,持续