1. 程式人生 > >深度學習中的BN層

深度學習中的BN層

機器學習中很著名的trick,非常值得學習的一篇文獻:《Batch Normalization: Accelerating Deep Network Training by  Reducing Internal Covariate Shift》。看了幾篇相關文章後,寫這篇部落格是為了自己的理解。
BN(batch normalization)演算法最重要的特點就是初始時加速訓練速度,具有快速訓練收斂的特性。

(1)你可以選擇比較大的初始學習率,讓你的訓練速度飆漲。以前還需要慢慢調整學習率,甚至在網路訓練到一半的時候,還需要想著學習率進一步調小的比例選擇多少比較合適,現在我們可以採用初始很大的學習率,然後學習率的衰減速度也很大,因為這個演算法收斂很快。當然這個演算法即使你選擇了較小的學習率,也比以前的收斂速度快,因為它具有快速訓練收斂的特性;

(2)你再也不用去理會過擬閤中drop out、L2正則項引數的選擇問題,採用BN演算法後,你可以移除這兩項了引數,或者可以選擇更小的L2正則約束引數了,因為BN具有提高網路泛化能力的特性;

(3)再也不需要使用使用區域性響應歸一化層了(區域性響應歸一化是Alexnet網路用到的方法,搞視覺的估計比較熟悉),因為BN本身就是一個歸一化網路層;

(4)可以把訓練資料徹底打亂(防止每批訓練的時候,某一個樣本都經常被挑選到)。