深度學(xué)習(xí)中的Norm
在深度學(xué)習(xí)中會(huì)經(jīng)常遇到BatchNorm、LayerNorm、InstanceNorm和GroupNorm,四者區(qū)別如下:
除此之外還有SwitchableNorm的方法,下面會(huì)逐一進(jìn)行介紹。
BatchNorm
BatchNorm 的處理對(duì)象是對(duì)一批樣本的同一個(gè)通道特征,BatchNorm 是對(duì)這批樣本的同一維度特征計(jì)算均值和方差做歸一化,BatchNorm在CV領(lǐng)域應(yīng)用較多。
BatchNorm的好處有以下三點(diǎn):
1、提高梯度在網(wǎng)絡(luò)中的流動(dòng)。Normalization能夠使特征全部縮放到[0,1],這樣在反向傳播時(shí)候的梯度都是在1左右,避免了梯度消失現(xiàn)象。
2、提升學(xué)習(xí)速率。歸一化后的數(shù)據(jù)能夠快速的達(dá)到收斂。
3、減少模型訓(xùn)練對(duì)初始化的依賴。
LayerNorm
LayerNorm 的處理對(duì)象是每單個(gè)樣本的所有通道特征,LayerNorm 是對(duì)這單個(gè)樣本的所有維度特征計(jì)算均值和方差做歸一化。LayerNorm在NLP領(lǐng)域應(yīng)用較多。
由于不同維度的特征量綱往往不同,那么我們?yōu)槭裁催€要使用LayerNorm呢?因?yàn)镹LP領(lǐng)域中,LayerNorm更為合適。
如果我們將一批文本組成一個(gè)batch,那么BatchNorm是對(duì)每句話的同一維特征(同一個(gè)位置)進(jìn)行操作,而我們理解文本是一句話一句話地閱讀,這不符合NLP的規(guī)律。
而LayerNorm則是針對(duì)一句話進(jìn)行歸一化的,且LayerNorm一般用在第三維度,如[batchsize, seq_len, dims]中的dims,一般為詞向量的維度等等,這一維度各個(gè)特征的量綱應(yīng)該相同。因此也不會(huì)遇到上面因?yàn)樘卣鞯牧烤V不同而導(dǎo)致的歸一化縮放問(wèn)題。
InstanceNorm
InstanceNorm的處理對(duì)象是每單個(gè)樣本的同一個(gè)通道特征,InstanceNorm是對(duì)單個(gè)樣本同一個(gè)維度特征計(jì)算均值和方差做歸一化,InstanceNorm在風(fēng)格化遷移應(yīng)用較多。
因?yàn)樵趫D像風(fēng)格化中,生成結(jié)果主要依賴于某個(gè)圖像實(shí)例,所以對(duì)整個(gè)batch歸一化不適合圖像風(fēng)格化中,因而對(duì)HW做歸一化??梢约铀倌P褪諗?,并且保持每個(gè)圖像實(shí)例之間的獨(dú)立。
GroupNorm
GroupNorm的處理對(duì)象是每單個(gè)樣本的同一組通道特征,GroupNorm是對(duì)單個(gè)樣本同一組維度特征計(jì)算均值和方差做歸一化。
SwitchableNorm
SwitchableNorm是將BatchNorm、LayerNorm、InstanceNorm結(jié)合,賦予不同的權(quán)重,讓網(wǎng)絡(luò)自適應(yīng)地學(xué)習(xí)歸一化層。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-613854.html
附錄
Pytorch官網(wǎng)——Normalization Layers文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-613854.html
到了這里,關(guān)于深度學(xué)習(xí):BatchNorm、LayerNorm、InstanceNorm、GroupNorm和SwitchableNorm的理解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!