1. 程式人生 > >吳恩達深度學習筆記(七) —— Batch Normalization

吳恩達深度學習筆記(七) —— Batch Normalization

學習 bat 中括號 和平 一個 內容 batch 可能 加權

主要內容:

一.Batch Norm簡介

二.歸一化網絡的激活函數

三.Batch Norm擬合進神經網絡

四.測試時的Batch Norm

一.Batch Norm簡介

1.在機器學習中,我們一般會對輸入數據進行歸一化處理,使得各個特征的數值規模處於同一個量級,有助於加速梯度下降的收斂過程。

2.在深層神經網絡中,容易出現梯度小時或者梯度爆炸的情況,導致訓練速度慢。那麽,除了對輸入數據X進行歸一化之外,我們是否還可以對隱藏層的輸出值進行歸一化,從而加速梯度下降的收斂速度呢?答案是可以的。

3.Batch Norm,即基於mini-batch gradient descent的歸一化,將其應用於深層神經網絡。

二..歸一化網絡的激活函數

1.一般地,我們並非對a[0](a[0]即輸入值X)、a[1]、a[2]……等進行歸一化,而是對z[1]、z[2]……等進行歸一化(沒有z[0])。

2.對於第l層的某個batch數據,計算出z[l]的均值和方差,然後對其進行歸一化,使其均值為0,方差為1:

技術分享圖片(註意,z的上標i表示數據,而非層數。在課程中層數使用中括號[],這裏不標示層數是為了簡便。)

3.但是,我們不總希望隱藏單元總是含有均值為0,方差為1,也許隱藏單元有了不同的分布會有意義。(這裏沒能想明白,大概的意思是:如果總是“均值為0,方差為1”,那麽深層神經網絡的表示能力就減弱。)所以就再對其進行縮放和平移:

技術分享圖片

其中,β、γ是需要學習的參數。所以總的來說,需要學習四類參數:w、b、β、γ。

三.Batch Norm擬合進神經網絡

1.在一次梯度下降中(用的batch可能不同),z[1]、z[2]……的均值和方差可能一直在變化,所以對於第l層,需要重新計算z[l]的均值和方差,然後再對其歸一化

技術分享圖片

2.當進行了一次梯度下降之後,就利用下一個batch繼續梯度下降(大括號標示batch):

技術分享圖片

四.測試時的Batch Norm

由於每一層中z的均值和方差在每一次梯度下降時都是變化的(與平常的機器學習的不同,機器學習中只需對輸入數據X進行歸一化,X的均值和方差是恒定的),所以在測試時,用哪個均值和方差進行歸一化就成了一個問題。

解決方法是:在訓練的過程中,利用指數加權平均去追蹤和計算,最終得到用於測試數據的均值和方差。

吳恩達深度學習筆記(七) —— Batch Normalization