1. 程式人生 > >Hulu機器學習問題與解答系列 | 二十三:神經網絡訓練中的批量歸一化

Hulu機器學習問題與解答系列 | 二十三:神經網絡訓練中的批量歸一化

導致 xsl 泛化能力 恢復 不同 詳細 過程 ice ini

來看看批量歸一化的有關問題吧!記得進入公號菜單“機器學習”,復習之前的系列文章噢。

今天的內容是

【神經網絡訓練中的批量歸一化】

場景描述

深度神經網絡的訓練中涉及諸多手調參數,如學習率,權重衰減系數,Dropout比例等,這些參數的選擇會顯著影響模型最終的訓練效果。批量歸一化(Batch Normalization, BN)方法從數據分布入手,有效減弱了這些復雜參數對網絡訓練產生的影響,在加速訓練收斂的同時也提升了網絡的泛化能力。

問題描述

  1. BN基本動機與原理是什麽?

  2. BN的具體實現中怎樣恢復前一層學習到的特征分布?

  3. 簡述BN在卷積神經網絡中如何使用?

背景知識:統計學習,深度學習

解答與分析

1. BN的基本動機與原理是什麽?

神經網絡訓練過程的本質是學習數據分布,訓練數據與測試數據的分布不同將大大降低網絡的泛化能力,因此我們需要在訓練開始前對所有輸入數據進行歸一化處理。

然而隨著網絡訓練的進行,每個隱層的參數變化使得後一層的輸入發生變化,從而每一批(batch)訓練數據的分布也隨之改變,致使網絡在每次叠代中都需要擬合不同的數據分布,增大了訓練的復雜度以及過擬合的風險。

Batch Normalization方法是針對每一批數據,在網絡的每一層輸入之前增加歸一化處理(均值為0,標準差為1),將所有批數據強制在統一的數據分布下,即對該層的任意一個神經元(不妨假設為第k維) 技術分享圖片

采用如下公式:

技術分享圖片

2. BN的具體實現中怎樣恢復前一層學習到的特征分布?

按照上式直接進行歸一化會導致上層學習到的數據分布發生變化,以sigmoid激活函數為例,BN之後數據整體處於函數的非飽和區域,只包含線性變換,破壞了之前學習到的特征分布。為了恢復原始數據分布,具體實現中引入了變換重構以及可學習參數γ,β:

技術分享圖片

其中

技術分享圖片

分別為輸入數據分布的方差和偏差,對於一般的網絡,不采用BN操作時,這兩個參數高度依賴前面網絡的學習到的連接權重(對應復雜的非線性)。而在BN操作中提取出來後,γ,β變成了該層的學習參數,與之前網絡層的參數無關,從而更加有利於優化的過程。

完整的Batch Normalization網絡層的前向傳導過程公式如下:

技術分享圖片

3. 簡述BN在卷積神經網絡中如何使用?

卷積神經網絡中每一層操作後得到一系列特征圖(feature maps),卷積層上的BN同樣使用類似權值共享的策略,將每張特征圖做為一個處理單元,即全連接網絡中的單個神經元,進行歸一化操作。

具體實現中,假設網絡訓練中每個batch包含b個樣本,特征圖個數為f,特征圖的寬高分別為w, h,那麽,每個特征圖所對應的全部神經元個數為b * w * h,利用這些神經元我們可得到一組學習參數γ,β用於對該特征圖進行BN操作。詳細過程可參考問題2中的公式,其中mb * w * h,為BN操作中的mini-batch。


下一題預告

【隨機梯度下降法】

場景描述

深度學習得以在近幾年迅速占領工業界和學術界的高地,重要原因之一是數據量的爆炸式增長。如下圖所示,隨著數據量的增長,傳統機器學習算法的性能會進入平臺期,而深度學習算法因其強大的表示能力,性能得以持續增長,甚至在一些任務上超越人類。因此有人戲稱,“得數據者得天下”。

技術分享圖片

經典的優化方法,例如梯度下降法,每次叠代更新需要用到所有的訓練數據,這給求解大數據、大規模的優化問題帶來了挑戰。掌握基於大量訓練數據求解模型的方法,對於掌握機器學習,尤其是深度學習至關重要。

問題描述

針對訓練數據量過大的問題,當前有哪些優化求解算法?

Hulu機器學習問題與解答系列 | 二十三:神經網絡訓練中的批量歸一化