【深度學(xué)習(xí)】批歸一化(BatchNorm)與層歸一化(LayerNorm):技術(shù)背景、原理及基于Pytorch的代碼詳解
批歸一化(Batch Normalization)和層歸一化(Layer Normalization)是深度學(xué)習(xí)中廣泛應(yīng)用的兩種數(shù)據(jù)歸一化方法,用于改善神經(jīng)網(wǎng)絡(luò)的訓(xùn)練性能。本文將從提出這兩種技術(shù)的原論文出發(fā),詳細(xì)闡述技術(shù)背景、原理及基于Pytorch的實(shí)現(xiàn)方式。
1.批歸一化(Batch Normalization)
批歸一化由谷歌的Sergey Ioffe和Christian Szegedy于2015年在論文“Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”中提出。
(1)技術(shù)背景:深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練十分復(fù)雜,因?yàn)樵谟?xùn)練過程中隨著前一層網(wǎng)絡(luò)參數(shù)的變化,下一層網(wǎng)絡(luò)的輸入分布也會(huì)發(fā)生變化。而更低的學(xué)習(xí)率和更精細(xì)的參數(shù)初始化又會(huì)減慢模型訓(xùn)練速度,特別是會(huì)讓具有飽和非線性的模型收斂變得十分困難,如使用Sigmoid激活函數(shù)時(shí),容易陷入梯度消失之中。
Ps:飽和非線性是指激活函數(shù)在輸入值較大或較小時(shí),其輸出趨于恒定,導(dǎo)數(shù)接近于零的現(xiàn)象,如Sigmoid和Tanh激活函數(shù)。
(2)技術(shù)原理:批歸一化則是通過標(biāo)準(zhǔn)化輸入來解決上述問題,將歸一化作為模型架構(gòu)的一部分,對每次訓(xùn)練中的小批量樣本執(zhí)行歸一化,使得我們可以使用更高的學(xué)習(xí)率且能降低對參數(shù)初始化的要求。同時(shí),在某些情況下還能充當(dāng)正則化使用,可以替代Dropout技術(shù)。
(3)批歸一化詳細(xì)計(jì)算步驟:
需要特別注意的是,批歸一化中模型在測試時(shí)使用的是訓(xùn)練中累積的全局均值和方差替代小批量樣本的統(tǒng)計(jì)值,有關(guān)全局均值和方差的計(jì)算可見下述詳細(xì)代碼的實(shí)現(xiàn),更加清晰明了。
(4)基于Pytorch的實(shí)現(xiàn)
Pytorch中提供了nn.BatchNorm1d、nn.BatchNorm2d 和 nn.BatchNorm3d,對應(yīng)不同輸入維度的批歸一化層,如下所示:
【參數(shù)詳解】
(5) 使用Python手動(dòng)實(shí)現(xiàn)批歸一化
2.層歸一化(Layer Normalization)
層歸一化由多倫多大學(xué)的Jimmy Lei Ba等人于2016年于論文“Layer Normalization”中提出。
(1)技術(shù)背景:批歸一化的效果取決于小批量的大小,且在循環(huán)神經(jīng)網(wǎng)絡(luò)中的應(yīng)用受到明顯的限制。同時(shí),批歸一化也不能應(yīng)用于在線學(xué)習(xí)任務(wù)或小批量必須很小的極大分布式模型。
Ps:循環(huán)神經(jīng)網(wǎng)絡(luò)中循環(huán)神經(jīng)元的輸入總和通常隨序列長度的變化而變化,因此對其應(yīng)該針對不同時(shí)間步長進(jìn)行不同的統(tǒng)計(jì)。
(2)技術(shù)原理:層歸一化則是通過計(jì)算單個(gè)樣本中所有特征值的均值和方差來實(shí)現(xiàn)輸入數(shù)據(jù)的歸一化,可以直接應(yīng)用于循環(huán)神經(jīng)網(wǎng)絡(luò)。與批歸一化一樣的是在歸一化之后也提供了自適應(yīng)偏差和增益兩個(gè)可學(xué)習(xí)參數(shù)來增強(qiáng)模型的表達(dá)能力。與批歸一化不同的是,層歸一化在訓(xùn)練和測試的時(shí)候執(zhí)行完全相同的計(jì)算。
(3)層歸一化詳細(xì)計(jì)算步驟:
(4)基于Pytorch的實(shí)現(xiàn)
Pytorch中提供了nn.LayerNorm實(shí)現(xiàn)層歸一化層,適合處理任何維度的輸入,如下所示:
【參數(shù)詳解】
(5)使用Python手動(dòng)實(shí)現(xiàn)層歸一化
本文轉(zhuǎn)載自???南夏的算法驛站???,作者:趙南夏
