博客專欄

EEPW首頁(yè) > 博客 > Batch Normalization原理與實(shí)戰(zhàn)(2)

Batch Normalization原理與實(shí)戰(zhàn)(2)

發(fā)布人:計(jì)算機(jī)視覺(jué)工坊 時(shí)間:2022-09-26 來(lái)源:工程師 發(fā)布文章
2 BN測(cè)試

在這里,我們構(gòu)造一個(gè)4層神經(jīng)網(wǎng)絡(luò),輸入層結(jié)點(diǎn)數(shù)784,三個(gè)隱層均為128維,輸出層10個(gè)結(jié)點(diǎn),如下圖所示:

圖片

實(shí)驗(yàn)中,我們主要控制一下三個(gè)變量:

  • 權(quán)重矩陣(較小初始化權(quán)重,標(biāo)準(zhǔn)差為0.05;較大初始化權(quán)重,標(biāo)準(zhǔn)差為10)
  • 學(xué)習(xí)率(較小學(xué)習(xí)率:0.01;較大學(xué)習(xí)率:2)
  • 隱層激活函數(shù)(relu,sigmoid)
2.1 小權(quán)重,小學(xué)習(xí)率,ReLU

測(cè)試結(jié)果如下圖:

圖片

我們可以得到以下結(jié)論:

  • 在訓(xùn)練與預(yù)測(cè)階段,加入BN的模型準(zhǔn)確率都稍高一點(diǎn);
  • 加入BN的網(wǎng)絡(luò)收斂更快(黃線)
  • 沒(méi)有加入BN的網(wǎng)絡(luò)訓(xùn)練速度更快(483.61it/s>329.23it/s),這是因?yàn)锽N增加了神經(jīng)網(wǎng)絡(luò)中的計(jì)算量

為了更清楚地看到BN收斂速度更快,我們把減少Training batches,設(shè)置為3000,得到如下結(jié)果:

圖片

從上圖中我們就可以清晰看到,加入BN的網(wǎng)絡(luò)在第500個(gè)batch的時(shí)候已經(jīng)能夠在validation數(shù)據(jù)集上達(dá)到90%的準(zhǔn)確率;而沒(méi)有BN的網(wǎng)絡(luò)的準(zhǔn)確率還在不停波動(dòng),并且到第3000個(gè)batch的時(shí)候才達(dá)到90%的準(zhǔn)確率。

2.2 小權(quán)重,小學(xué)習(xí)率,Sigmoid

圖片

學(xué)習(xí)率與權(quán)重均沒(méi)變,我們把隱層激活函數(shù)換為sigmoid??梢园l(fā)現(xiàn),BN收斂速度非常之快,而沒(méi)有BN的網(wǎng)絡(luò)前期在不斷波動(dòng),直到第20000個(gè)train batch以后才開(kāi)始進(jìn)入平穩(wěn)的訓(xùn)練狀態(tài)。

2.3 小權(quán)重,大學(xué)習(xí)率,ReLU

圖片

在本次實(shí)驗(yàn)中,我們使用了較大的學(xué)習(xí)率,較大的學(xué)習(xí)率意味著權(quán)重的更新跨度很大,而根據(jù)我們前面理論部分的介紹,BN不會(huì)受到權(quán)重scale的影響,因此其能夠使模型保持在一個(gè)穩(wěn)定的訓(xùn)練狀態(tài);而沒(méi)有加入BN的網(wǎng)絡(luò)則在一開(kāi)始就由于學(xué)習(xí)率過(guò)大導(dǎo)致訓(xùn)練失敗。

2.4 小權(quán)重,大學(xué)習(xí)率,Sigmoid

圖片

在保持較大學(xué)習(xí)率(learning rate=2)的情況下,當(dāng)我們將激活函數(shù)換為sigmoid以后,兩個(gè)模型都能夠達(dá)到一個(gè)很好的效果,并且在test數(shù)據(jù)及上的準(zhǔn)確率非常接近;但加入BN的網(wǎng)絡(luò)要收斂地更快,同樣的,我們來(lái)觀察3000次batch的訓(xùn)練準(zhǔn)確率。

圖片

當(dāng)我們把training batch限制到3000以后,可以發(fā)現(xiàn)加入BN后,盡管我們使用較大的學(xué)習(xí)率,其仍然能夠在大約500個(gè)batch以后在validation上達(dá)到90%的準(zhǔn)確率;但不加入BN的準(zhǔn)確率前期在一直大幅度波動(dòng),到大約1000個(gè)batch以后才達(dá)到90%的準(zhǔn)確率。

2.5 大權(quán)重,小學(xué)習(xí)率,ReLU

圖片

當(dāng)我們使用較大權(quán)重時(shí),不加入BN的網(wǎng)絡(luò)在一開(kāi)始就失效;而加入BN的網(wǎng)絡(luò)能夠克服如此bad的權(quán)重初始化,并達(dá)到接近80%的準(zhǔn)確率。

2.6 大權(quán)重,小學(xué)習(xí)率,Sigmoid

圖片

同樣使用較大的權(quán)重初始化,當(dāng)我們激活函數(shù)為sigmoid時(shí),不加入BN的網(wǎng)絡(luò)在一開(kāi)始的準(zhǔn)確率有所上升,但隨著訓(xùn)練的進(jìn)行網(wǎng)絡(luò)逐漸失效,最終準(zhǔn)確率僅有30%;而加入BN的網(wǎng)絡(luò)依舊出色地克服如此bad的權(quán)重初始化,并達(dá)到接近85%的準(zhǔn)確率。

2.7 大權(quán)重,大學(xué)習(xí)率,ReLU

圖片

當(dāng)權(quán)重與學(xué)習(xí)率都很大時(shí),BN網(wǎng)絡(luò)開(kāi)始還會(huì)訓(xùn)練一段時(shí)間,但隨后就直接停止訓(xùn)練;而沒(méi)有BN的神經(jīng)網(wǎng)絡(luò)開(kāi)始就失效。

2.8 大權(quán)重,大學(xué)習(xí)率,Sigmoid

圖片

可以看到,加入BN對(duì)較大的權(quán)重與較大學(xué)習(xí)率都具有非常好的魯棒性,最終模型能夠達(dá)到93%的準(zhǔn)確率;而未加入BN的網(wǎng)絡(luò)則經(jīng)過(guò)一段時(shí)間震蕩后開(kāi)始失效。

8個(gè)模型的準(zhǔn)確率統(tǒng)計(jì)如下:

圖片

總結(jié)

至此,關(guān)于Batch Normalization的理論與實(shí)戰(zhàn)部分就介紹道這里。總的來(lái)說(shuō),BN通過(guò)將每一層網(wǎng)絡(luò)的輸入進(jìn)行normalization,保證輸入分布的均值與方差固定在一定范圍內(nèi),減少了網(wǎng)絡(luò)中的Internal Covariate Shift問(wèn)題,并在一定程度上緩解了梯度消失,加速了模型收斂;并且BN使得網(wǎng)絡(luò)對(duì)參數(shù)、激活函數(shù)更加具有魯棒性,降低了神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練和調(diào)參的復(fù)雜度;最后BN訓(xùn)練過(guò)程中由于使用mini-batch的mean/variance作為總體樣本統(tǒng)計(jì)量估計(jì),引入了隨機(jī)噪聲,在一定程度上對(duì)模型起到了正則化的效果。

參考資料:

[1] Ioffe S, Szegedy C. Batch normalization: accelerating deep network training by reducing internal covariate shift[C]// International Conference on International Conference on Machine Learning. JMLR.org, 2015:448-456.

[2] 吳恩達(dá)Cousera Deep Learning課程

[3] 詳解深度學(xué)習(xí)中的Normalization,不只是BN

[4] 深度學(xué)習(xí)中 Batch Normalization為什么效果好?

[5] Udacity Deep Learning Nanodegree

[6] Implementing Batch Normalization in Tensorflow

本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉