博客專欄

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

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

        發(fā)布人:計算機視覺工坊 時間:2022-09-26 來源:工程師 發(fā)布文章
        2 BN測試

        在這里,我們構造一個4層神經網絡,輸入層結點數784,三個隱層均為128維,輸出層10個結點,如下圖所示:

        圖片

        實驗中,我們主要控制一下三個變量:

        • 權重矩陣(較小初始化權重,標準差為0.05;較大初始化權重,標準差為10)
        • 學習率(較小學習率:0.01;較大學習率:2)
        • 隱層激活函數(relu,sigmoid)
        2.1 小權重,小學習率,ReLU

        測試結果如下圖:

        圖片

        我們可以得到以下結論:

        • 在訓練與預測階段,加入BN的模型準確率都稍高一點;
        • 加入BN的網絡收斂更快(黃線)
        • 沒有加入BN的網絡訓練速度更快(483.61it/s>329.23it/s),這是因為BN增加了神經網絡中的計算量

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

        圖片

        從上圖中我們就可以清晰看到,加入BN的網絡在第500個batch的時候已經能夠在validation數據集上達到90%的準確率;而沒有BN的網絡的準確率還在不停波動,并且到第3000個batch的時候才達到90%的準確率。

        2.2 小權重,小學習率,Sigmoid

        圖片

        學習率與權重均沒變,我們把隱層激活函數換為sigmoid。可以發(fā)現,BN收斂速度非常之快,而沒有BN的網絡前期在不斷波動,直到第20000個train batch以后才開始進入平穩(wěn)的訓練狀態(tài)。

        2.3 小權重,大學習率,ReLU

        圖片

        在本次實驗中,我們使用了較大的學習率,較大的學習率意味著權重的更新跨度很大,而根據我們前面理論部分的介紹,BN不會受到權重scale的影響,因此其能夠使模型保持在一個穩(wěn)定的訓練狀態(tài);而沒有加入BN的網絡則在一開始就由于學習率過大導致訓練失敗。

        2.4 小權重,大學習率,Sigmoid

        圖片

        在保持較大學習率(learning rate=2)的情況下,當我們將激活函數換為sigmoid以后,兩個模型都能夠達到一個很好的效果,并且在test數據及上的準確率非常接近;但加入BN的網絡要收斂地更快,同樣的,我們來觀察3000次batch的訓練準確率。

        圖片

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

        2.5 大權重,小學習率,ReLU

        圖片

        當我們使用較大權重時,不加入BN的網絡在一開始就失效;而加入BN的網絡能夠克服如此bad的權重初始化,并達到接近80%的準確率。

        2.6 大權重,小學習率,Sigmoid

        圖片

        同樣使用較大的權重初始化,當我們激活函數為sigmoid時,不加入BN的網絡在一開始的準確率有所上升,但隨著訓練的進行網絡逐漸失效,最終準確率僅有30%;而加入BN的網絡依舊出色地克服如此bad的權重初始化,并達到接近85%的準確率。

        2.7 大權重,大學習率,ReLU

        圖片

        當權重與學習率都很大時,BN網絡開始還會訓練一段時間,但隨后就直接停止訓練;而沒有BN的神經網絡開始就失效。

        2.8 大權重,大學習率,Sigmoid

        圖片

        可以看到,加入BN對較大的權重與較大學習率都具有非常好的魯棒性,最終模型能夠達到93%的準確率;而未加入BN的網絡則經過一段時間震蕩后開始失效。

        8個模型的準確率統(tǒng)計如下:

        圖片

        總結

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

        參考資料:

        [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] 吳恩達Cousera Deep Learning課程

        [3] 詳解深度學習中的Normalization,不只是BN

        [4] 深度學習中 Batch Normalization為什么效果好?

        [5] Udacity Deep Learning Nanodegree

        [6] Implementing Batch Normalization in Tensorflow

        本文僅做學術分享,如有侵權,請聯系刪文。

        *博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 新密市| 旬阳县| 芜湖县| 于田县| 聊城市| 武宣县| 孝感市| 天全县| 墨玉县| 龙游县| 怀宁县| 灌阳县| 三亚市| 德令哈市| 同心县| 曲阳县| 永登县| 革吉县| 那坡县| 栾川县| 安图县| 吴堡县| 江西省| 军事| 留坝县| 阳西县| 邯郸市| 禄丰县| 农安县| 蓝田县| 双辽市| 仁怀市| 正镶白旗| 简阳市| 扎囊县| 石楼县| 兴城市| 吉水县| 永修县| 临泉县| 土默特左旗|