摘要:為了解決這個(gè)問(wèn)題出現(xiàn)了批量歸一化的算法,他對(duì)每一層的輸入進(jìn)行歸一化,保證每層的輸入數(shù)據(jù)分布是穩(wěn)定的,從而加速訓(xùn)練批量歸一化歸一化批,一批樣本輸入,,個(gè)樣本與激活函數(shù)層卷積層全連接層池化層一樣,批量歸一化也屬于網(wǎng)絡(luò)的一層,簡(jiǎn)稱。
【DL-CV】數(shù)據(jù)預(yù)處理&權(quán)重初始化<前篇---后篇>【DL-CV】正則化,Dropout
先來(lái)交代一下背景:在網(wǎng)絡(luò)訓(xùn)練的過(guò)程中,參數(shù)的更新會(huì)導(dǎo)致網(wǎng)絡(luò)的各層輸入數(shù)據(jù)的分布不斷變化,那么各層在訓(xùn)練的過(guò)程中就需要不斷的改變以適應(yīng)這種新的數(shù)據(jù)分布,從而造成網(wǎng)絡(luò)訓(xùn)練困難,收斂變慢(而且網(wǎng)絡(luò)越深越難),在論文中這個(gè)問(wèn)題被稱為“Internal Covariate Shift”。為了解決這個(gè)問(wèn)題出現(xiàn)了批量歸一化的算法,他對(duì)每一層的輸入進(jìn)行歸一化,保證每層的輸入數(shù)據(jù)分布是穩(wěn)定的,從而加速訓(xùn)練
批量歸一化(Batch Normalization/BN)Normalization——“歸一化”
Batch——“批”,一批樣本輸入,batch_size=m,m個(gè)樣本
與激活函數(shù)層、卷積層(cnn)、全連接層(FC)、池化層一樣,批量歸一化也屬于網(wǎng)絡(luò)的一層,簡(jiǎn)稱BN。BN通常用在FC/cnn之后,激活函數(shù)層之前,他對(duì)FC/cnn的輸出的每一維進(jìn)行歸一化(歸一化至:均值0、方差為1),然后變換重構(gòu)后再把數(shù)據(jù)喂給下一層網(wǎng)絡(luò)。
歸一化對(duì)輸入數(shù)據(jù)的每一維xk(每一列)進(jìn)行歸一化得到$hat{x}^{k}$
$$hat{x}^{(k)} = frac{x^{k} - E[x^{k}]}{sqrt{Var[x^{k}]}}$$
通過(guò)該公式我們強(qiáng)行把數(shù)據(jù)歸一化,特征分布成功被壓縮至標(biāo)準(zhǔn)差為1。但這種變化是有破壞性的,原來(lái)的特征分布都被搞亂了那還學(xué)個(gè)鬼?——為了解決這一問(wèn)題,我們對(duì)歸一化后的數(shù)據(jù)再進(jìn)行變換重構(gòu),以恢復(fù)原來(lái)的特征
變換重構(gòu)對(duì)于歸一化后輸入$hat{x}^{k}$,我們?cè)僖雰蓚€(gè)可供學(xué)習(xí)的參數(shù)$gamma$和$eta$使
$$y^{k} = gamma^{k}hat{x}^{k}+eta^{k}$$
注意如果$gamma^{k}=sqrt{Var[x^k]}$,$eta^{k}=E[x^k]$時(shí),是可以恢復(fù)原有的特征的。這就是引入這兩個(gè)參數(shù)的意義,雖然網(wǎng)絡(luò)不太可能學(xué)習(xí)到$gamma^{k}=sqrt{Var[x^k]}$,$eta^{k}=E[x^k]$,但是好歹通過(guò)學(xué)習(xí)到這兩個(gè)參數(shù)盡可能地回復(fù)原有的特征(實(shí)踐中的表現(xiàn)說(shuō)明這是有用的)
最后總結(jié)BN操作:(m是mini batch size,根號(hào)中的ε是一個(gè)很小的數(shù)防止分母為0)
上面講了這么多其實(shí)都是訓(xùn)練時(shí)的BN算法,訓(xùn)練時(shí)是一個(gè)一個(gè)batch進(jìn)去的,訓(xùn)練完成后得到$gamma$和$eta$。但是在測(cè)試時(shí),我們只是丟一個(gè)樣本進(jìn)去讓網(wǎng)絡(luò)預(yù)測(cè),試問(wèn)一個(gè)樣本何來(lái)均值和方差?
均值和方差最好的來(lái)源是整個(gè)訓(xùn)練集,但是整個(gè)訓(xùn)練集往往太大,我們不太想算。能不能從現(xiàn)成的 mini batch 的均值和方差(因?yàn)樵谟?xùn)練時(shí)算了出來(lái))估計(jì)出整個(gè)訓(xùn)練集的均值和方差呢——當(dāng)然可以,因?yàn)閙ini batch是隨機(jī)取樣的:
$$E[x] = E_B[mu_B]$$
$$Var[x] = frac{m}{m-1}E_B[sigma_B^2]$$
即平均值為所有mini-batch的平均值的平均值,而方差為每個(gè)batch的方差的無(wú)偏估計(jì)。當(dāng)網(wǎng)絡(luò)訓(xùn)練完后,我們通過(guò)訓(xùn)練時(shí)保存下來(lái)的每個(gè)batch的均值與方差估算出全局均值與方差供測(cè)試時(shí)使用,也就是說(shuō)當(dāng)網(wǎng)絡(luò)訓(xùn)練完后每個(gè)BN層中的均值也和標(biāo)準(zhǔn)差也會(huì)隨之確定。
能選擇較大的初始學(xué)習(xí)率,提高訓(xùn)練收斂速度
你再也不用去理會(huì)過(guò)擬合中drop out、L2正則項(xiàng)參數(shù)的選擇問(wèn)題,采用BN算法后,你可以移除這兩項(xiàng)了參數(shù),或者可以選擇更小的L2正則約束參數(shù)了,因?yàn)锽N自帶正則化的特性,能提高網(wǎng)絡(luò)泛化能力
減少梯度爆炸/消失的出現(xiàn),特別對(duì)于tanh,sigmoid這類(lèi)會(huì)兩端飽和的激活函數(shù)
減少對(duì)參數(shù)初始化的依賴,就算參數(shù)初始化得不好,在BN的加持下網(wǎng)絡(luò)還是表現(xiàn)較好
雖然BN是2015才提出來(lái)的(看上去像個(gè)新米),但是他表現(xiàn)也超凡,BN算法已經(jīng)被大量使用于深度學(xué)習(xí)中,真的是nb
補(bǔ)充Batch Normalization 論文
以上的BN使用是基于全連接層的,輸入數(shù)據(jù)都是二維矩陣。BN也可以用在cnn中,用法不同,可以參考此文章
推薦 BN導(dǎo)讀
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19809.html
摘要:為了解決這個(gè)問(wèn)題出現(xiàn)了批量歸一化的算法,他對(duì)每一層的輸入進(jìn)行歸一化,保證每層的輸入數(shù)據(jù)分布是穩(wěn)定的,從而加速訓(xùn)練批量歸一化歸一化批,一批樣本輸入,,個(gè)樣本與激活函數(shù)層卷積層全連接層池化層一樣,批量歸一化也屬于網(wǎng)絡(luò)的一層,簡(jiǎn)稱。 【DL-CV】數(shù)據(jù)預(yù)處理&權(quán)重初始化【DL-CV】正則化,Dropout 先來(lái)交代一下背景:在網(wǎng)絡(luò)訓(xùn)練的過(guò)程中,參數(shù)的更新會(huì)導(dǎo)致網(wǎng)絡(luò)的各層輸入數(shù)據(jù)的分布不斷變化...
閱讀 2056·2021-09-07 10:24
閱讀 2114·2019-08-30 15:55
閱讀 2070·2019-08-30 15:43
閱讀 695·2019-08-29 15:25
閱讀 1097·2019-08-29 12:19
閱讀 1964·2019-08-23 18:32
閱讀 1552·2019-08-23 17:59
閱讀 971·2019-08-23 12:22