為什么Transformer要用LayerNorm?
來(lái)源:知乎
文章僅作學(xué)術(shù)分享,著作權(quán)歸屬原作者,侵刪
深海(阿里巴巴算法工程師)回答:
Batch Normalization 也是可以用的,但為什么不用,我們來(lái)分析一下問(wèn)題。
我們回到RNN,RNN其實(shí)也能夠使用Batch Normalization ,但它為什么不用?是因?yàn)樽冮L(zhǎng)嗎,變長(zhǎng)序列我們也是能夠padding到同一個(gè)長(zhǎng)度進(jìn)行訓(xùn)練的,至于為什么不用,是因?yàn)锽N對(duì)一個(gè)Batch中對(duì)應(yīng)位置的分量進(jìn)行歸一化,這就存在一定的問(wèn)題,因?yàn)橐粋€(gè)Batch中對(duì)應(yīng)位置的分量不一定有意義,它可能是padding的結(jié)果。
實(shí)際上LSTM訓(xùn)練的時(shí)候我們會(huì)把一個(gè)batch中的序列按照長(zhǎng)度降序,長(zhǎng)度短的計(jì)算完了就不帶它繼續(xù)計(jì)算了,相當(dāng)于batch size縮小了,batch size越小,BN的意義也就越小了。
在Transformer中也是一樣的,比如我們用絕對(duì)位置編碼的BERT,把序列長(zhǎng)度都padding或者裁剪到512,那么不存在變長(zhǎng)問(wèn)題,也不存在LSTM中batch縮小的問(wèn)題,那么為什么不用BN而是用LN呢?我的理解是因?yàn)殡m然序列長(zhǎng)度一致了,但是好多embedding是沒(méi)有意義的,有意義的embedding不應(yīng)該和它們的分布一致,如果BN會(huì)導(dǎo)致有意義的embedding損失信息,所以embedding你就自己和自己歸一化吧。
所以,可以用BN,但是可能LN更合適。
有想法歡迎討論。
補(bǔ)充一下,Normalization 的作用很明顯,把數(shù)據(jù)拉回標(biāo)準(zhǔn)正態(tài)分布,因?yàn)樯窠?jīng)網(wǎng)絡(luò)的Block大部分都是矩陣運(yùn)算,一個(gè)向量經(jīng)過(guò)矩陣運(yùn)算后值會(huì)越來(lái)越大,為了網(wǎng)絡(luò)的穩(wěn)定性,我們需要及時(shí)把值拉回正態(tài)分布。

葉兀(愛(ài)丁堡大學(xué)?人工智能碩士)回答:
這個(gè)問(wèn)題看起來(lái)很簡(jiǎn)單,但是卻非常有價(jià)值。很多人現(xiàn)在并不關(guān)心。
我們要先看一下,不管在哪個(gè)維度上做noramlization,本質(zhì)都是為了讓數(shù)據(jù)在這個(gè)維度上歸一化,因?yàn)樵谟?xùn)練過(guò)程中,上一層傳遞下去的值千奇百怪,什么樣子的分布都有。
BatchNorm就是通過(guò)對(duì)batch size這個(gè)維度歸一化來(lái)讓分布穩(wěn)定下來(lái)。
LayerNorm則是通過(guò)對(duì)Hidden size這個(gè)維度歸一化來(lái)讓某層的分布穩(wěn)定。
BN取的是不同樣本的同一個(gè)特征,而LN取的是同一個(gè)樣本的不同特征。
在BN和LN都能使用的場(chǎng)景中,BN的效果一般優(yōu)于LN,原因是基于不同數(shù)據(jù),同一特征得到的歸一化特征更不容易損失信息。
但是有些場(chǎng)景是不能使用BN的,例如batchsize較小或者在RNN中,這時(shí)候可以選擇使用LN,LN得到的模型更穩(wěn)定且起到正則化的作用。LN能應(yīng)用到小批量和RNN中是因?yàn)長(zhǎng)N的歸一化統(tǒng)計(jì)量的計(jì)算是和batchsize沒(méi)有關(guān)系的。
SwitchableNorm是將BN、LN、IN結(jié)合,賦予權(quán)重,讓網(wǎng)絡(luò)自己去學(xué)習(xí)歸一化層應(yīng)該使用什么方法。
額外補(bǔ)充一點(diǎn)吧。對(duì)于NLP任務(wù)來(lái)說(shuō),我們希望的是每句話內(nèi)分布一致,即hidden size維度,所以LN可以做到;batch的分布norm沒(méi)有什么意義。
——The ?End——


