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

」神經網路訓練中的批量歸一化「

[場景描述]

深度神經網路的訓練中涉及諸多手調參數,如學習率,權重衰減係數,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」微信公號,點擊菜單欄「機器學習」獲得更多系列文章。下期再見。

weixin.qq.com/r/_EMrM0T (二維碼自動識別)


推薦閱讀:

為什麼計算機、人工智慧不是萬能的
從基礎概念到實現,小白如何快速入門PyTorch
響鈴:人工智慧熱潮襲來,誰在薅羊毛,誰會享紅利?
微軟AI單憑文字就可作畫,誰最先受到衝擊?

TAG:人工智慧 | 機器學習 | 面試問題 |