Training NN -3- Weight Initialization

關(guān)鍵詞:小隨機(jī)數(shù)初始化、Xavier initialization、Batch Normalization? 批量歸一化

W = 0

全零初始化:錯(cuò)誤!

在訓(xùn)練完畢后,雖然不知道網(wǎng)絡(luò)中每個(gè)權(quán)重的最終值應(yīng)該是多少,但如果數(shù)據(jù)經(jīng)過(guò)了恰當(dāng)?shù)臍w一化的話,就可以假設(shè)所有權(quán)重?cái)?shù)值中大約一半為正數(shù),一半為負(fù)數(shù)。

如果權(quán)重初始值都為0,那么網(wǎng)絡(luò)中的每個(gè)神經(jīng)元都計(jì)算出同樣的輸出,然后它們就會(huì)在反向傳播中計(jì)算出同樣的梯度,從而進(jìn)行同樣的參數(shù)更新。那么這樣一個(gè)具有很多隱藏單元的網(wǎng)絡(luò)結(jié)構(gòu)就是完全多余的表達(dá),最終該網(wǎng)絡(luò)只能學(xué)到一種特征。這種現(xiàn)象稱為:對(duì)稱權(quán)重(Symmetric ways)

所有權(quán)重相同的問(wèn)題稱為對(duì)稱權(quán)重(Symmetric ways),隨機(jī)初始化解決的就是如何打破這種對(duì)稱性。

Small random numbers

小隨機(jī)數(shù)初始化

實(shí)現(xiàn)方法:W = 0.01 * np.random.randn(D,H) 。其中randn函數(shù)是基于零均值和標(biāo)準(zhǔn)差的一個(gè)高斯分布來(lái)生成隨機(jī)數(shù)的。

根據(jù)這個(gè)式子,每個(gè)神經(jīng)元的權(quán)重向量都被初始化為一個(gè)隨機(jī)向量,而這些隨機(jī)向量又服從一個(gè)多變量高斯分布,這樣在輸入空間中,所有的神經(jīng)元的指向是隨機(jī)的。也可以使用均勻分布生成的隨機(jī)數(shù),但是從實(shí)踐結(jié)果來(lái)看,對(duì)于算法的結(jié)果影響極小。

實(shí)驗(yàn):使用tanh非線性神經(jīng)元,然后對(duì)于權(quán)重進(jìn)行小隨機(jī)數(shù)初始化

tanh with small random init

在第一層,權(quán)重基本符合高斯分布,但是從第三層開(kāi)始權(quán)重的mean和方差都開(kāi)始趨近于0,因?yàn)閠anh也會(huì)發(fā)生權(quán)重彌散現(xiàn)象,將實(shí)數(shù)縮小在(-1,1)的范圍內(nèi),隨著層數(shù)的增加,輸出的數(shù)越來(lái)越小,權(quán)重的方差也越來(lái)越小,那么在反向傳播時(shí),很小的輸出 * 很小的權(quán)重,后面的層基本就不在發(fā)生變化了。

如果使用?W = 1.0 * np.random.randn(D,H) 來(lái)初始化權(quán)重,幾乎所有的神經(jīng)元都將飽和(輸出-1或者1),在反向傳播時(shí),梯度為0,梯度彌散。

更優(yōu)方案:Xavier initialization

使用小隨機(jī)數(shù)初始化存在一個(gè)問(wèn)題,隨著輸入數(shù)據(jù)量的增長(zhǎng),隨機(jī)初始化的神經(jīng)元的輸出數(shù)據(jù)的分布中的方差也在增大。我們可以除以輸入數(shù)據(jù)量的平方根來(lái)調(diào)整其數(shù)值范圍,這樣神經(jīng)元輸出的方差就歸一化到1了。保證了網(wǎng)絡(luò)中所有神經(jīng)元起始時(shí)有近似同樣的輸出分布,實(shí)踐經(jīng)驗(yàn)證明,這樣做可以提高收斂的速度。

w = np.random.randn(fan_in,fan_out) / sqrt(fan_in)。fan_in 輸入數(shù)據(jù)量

tahn - Xavier initialization

優(yōu)化方案:ReLU - Xavier

由上圖可以看出,其實(shí)權(quán)重的方差隨著神經(jīng)網(wǎng)絡(luò)的層數(shù)的增加也在減少,這是在tanh 非線性神經(jīng)元的情況下,如果使用的是ReLU非線性神經(jīng)元的話,由于ReLU自身性質(zhì),一半的輸出會(huì)變成0,那么在反向傳播后,權(quán)重的方差會(huì)減半。所以一般會(huì)加上一個(gè)2倍,來(lái)進(jìn)行權(quán)重初始化

w = np.random.randn(fan_in,fan_out) / sqrt(2.0 / fan_in)

ReLU - Xavier initialization?

權(quán)重初始化是一個(gè)Data - Driven的過(guò)程,可以先用2-3個(gè)神經(jīng)元進(jìn)行嘗試,查看輸出是否符合高斯分布、權(quán)重的方差是否為0,權(quán)重是否爆炸等等。

Batch Normalization? 批量歸一化

BN

初始化權(quán)重很難處理,我們希望激活層的輸出是符合高斯分布。那我們?cè)谌B接層與激活層之間,加上一個(gè)網(wǎng)絡(luò),對(duì)于每個(gè)維度的數(shù)據(jù)計(jì)算均值和方差,然后把他們批量歸一化為高斯分布的數(shù)據(jù)。

但這種做法有一個(gè)致命的缺點(diǎn),盡管這樣把每層的數(shù)據(jù)分布都固定了,但是這種分布不一定是前面一層的要學(xué)習(xí)到的數(shù)據(jù)分布,這樣強(qiáng)行歸一化就會(huì)破壞掉剛剛學(xué)習(xí)到的特征,BN算法的第二步就解決了這個(gè)缺點(diǎn)。?

BN算法在第二步(如下圖)中設(shè)置了兩個(gè)可學(xué)習(xí)的變量γ和β,然后用這兩個(gè)可學(xué)習(xí)的變量去還原上一層應(yīng)該學(xué)到的數(shù)據(jù)分布,添加這種操作的目的就是還原出上一層需要學(xué)習(xí)的數(shù)據(jù)分布,這樣BN就把原來(lái)不固定的數(shù)據(jù)分布全部轉(zhuǎn)換為固定的數(shù)據(jù)分布,而這種數(shù)據(jù)分布恰恰就是要學(xué)習(xí)到的分布,從而加速了網(wǎng)絡(luò)的訓(xùn)練。

BN
BN

以下轉(zhuǎn)載自:知乎- 魏秀參?

為什么要使用BN?

防止“梯度彌散”(0.9^30 = 0.04)。在BN中,是通過(guò)將activation的輸入規(guī)范為均值和方差一致的手段,使得原本會(huì)減小的activation的scale變大。

什么時(shí)候使用BN呢?

在神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)遇到收斂速度很慢,或梯度爆炸等無(wú)法訓(xùn)練的狀況時(shí)可以嘗試BN來(lái)解決。另外,在一般使用情況下也可以加入BN來(lái)加快訓(xùn)練速度,提高模型精度。、

以下轉(zhuǎn)自:CSDN-lhanchao

BN算法在訓(xùn)練和測(cè)試時(shí)的應(yīng)用

BN算法在訓(xùn)練時(shí)的操作就如我們上面所說(shuō),首先提取每次迭代時(shí)的每個(gè)mini-batch的平均值和方差進(jìn)行歸一化,再通過(guò)兩個(gè)可學(xué)習(xí)的變量恢復(fù)要學(xué)習(xí)的特征。 但是在實(shí)際應(yīng)用時(shí)就沒(méi)有mini-batch了,那么BN算法怎樣進(jìn)行歸一化呢?

實(shí)際上在測(cè)試的過(guò)程中,BN算法的參數(shù)就已經(jīng)固定好了,首先進(jìn)行歸一化時(shí)

平均值 = 所有mini-batch的平均值的平均值

方差 ????= 每個(gè)batch的方差的無(wú)偏估計(jì)(無(wú)偏估計(jì)介紹見(jiàn)什么是無(wú)偏估計(jì)?——知乎) 、

BN算法在CNN中的應(yīng)用

BN算法在CNN中往往放在每個(gè)卷積層之后,ReLU操作之前。在CNN中操作時(shí),BN算法把每個(gè)特征圖看作一個(gè)神經(jīng)元,計(jì)算該特征圖對(duì)應(yīng)數(shù)據(jù)的均值和方差進(jìn)行歸一化,并且每個(gè)特征圖對(duì)應(yīng)兩個(gè)學(xué)習(xí)變量γ和β。

具體的算法和代碼可點(diǎn)擊鏈接查看CSDN-lhanchao

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容