[DeeplearningAI筆記]第二章3.4-3.7-Batch NormalizationBN算法
覺得有用的話,歡迎一起討論相互學習~
3.4正則化網絡的激活函數
- Batch歸一化會使你的參數搜索問題變得很容易,使神經網絡對超參數的選擇更加穩定.超參數的范圍會更龐大,工作效果也更好.也會使你更容易的訓練甚至是深層網絡.
- 對於logistic回歸來說
正則化原理
\[u=\frac{1}{m}\sum x^{i}(求出平均值u) \]
\[x=x-u \]
\[\sigma^{2}=\frac{1}{m}\sum(x^{i})^{2}(求出方差) \]
\[x=\frac{x}{\sigma^{2}} \]
-
函數曲線會由類似於橢圓變成更圓的東西,更加易於算法優化.
-
深層神經網絡
- 我們將每一層神經網絡計算得到的z值(在計算激活函數之前的值)進行歸一化處理,即將\(Z^{[L]}\)的值進行歸一化處理,進而影響下一層\(W^{[L+1]}和b^{[L+1]}\)的計算.
- 此時z的每個分量都含有平均值0和方差1,但我們不想讓隱藏單元總是含有平均值0和方差1,例如在應用sigmoid函數時,我們不想使其繪制的函數圖像如圖所示,我們想要變換方差或者是不同的平均值.
第L層神經元正則化公式
\[u=\frac{1}{m}\sum_{i}Z^{i} \]
\[\sigma^{2}=\frac{1}{m}\sum_{i}(Z^{i}-u)^{2}$$$$Z^{i}_{norm}=\frac{Z^{i}-u}{\sqrt{\sigma^2+\epsilon}} \]
\[\check{Z^{i}}=\gamma Z^{i}_{norm}+\beta \]
3.5 將Batch Normalization擬合進神經網絡
- 對於Batch Normalization算法而言,計算出一層的\(Z^{[l]}\)之后,進行Batch Normalization操作,此過程將有\(\beta^{[l]},\gamma^{[l]}\)這兩個參數控制.這一步操作會給你一個新的規范化的\(z^{[l]}\)值.然后將其輸入到激活函數中,得到\(a^{[l]}\)
- 實質上,BN算法是在每一層的\(Z^{[l]}\)和\(a^{[l]}\)之間進行的運算
3.6 Batch Normalization為什么奏效
原因一
- 無論數據的范圍是0~1之間還是1~1000之間,通過歸一化,所有的輸入特征X,都可以獲得類似范圍的值,可加速學習.
原因二
- 如果神經元的數據分布改變,我們也許需要重新訓練數據以擬合新的數據分布.這會帶來一種數據的不穩定的效果.(covariate shift)
- Batch Normalization做的是它減少了這些隱藏值分布變化的數量.因為隨着訓練的迭代過程,神經元的值會時常發生變化.batch歸一化可以確保,無論其怎樣變化,其均值和方差將保持不變.(由每一層的BN函數的參數\(\beta^{[l]},\gamma^{[l]}\)決定其方差和均值)
- Batch Normalization減少了輸入值改變的問題,它的確使這些值變的穩定,即是原先的層改變了,也會使后面的層適應改變的程度減小.也可以視為它減少了前層參數和后層參數之間的聯系.
原因三
- Batch Normalization有輕微的正則化作用.
- BN算法是通過mini-batch計算得出,而不是使用整個數據集,所以會引入部分的噪音,即會在縱軸上有些許波動.
- 縮放的過程從\(Z^{[l]}\rightarrow\check{Z^{[l]}}\)也會引入一些噪音.
- 所以和Dropout算法一樣,它往每個隱藏層的激活值上增加了噪音,dropout有噪音的模式,它使一個隱藏的單元以一定的概率乘以0,以一定得概率乘以1.BN算法的噪音主要體現在標准偏差的縮放和減去均值帶來的額外噪音.這使得后面層的神經單元不會過分依賴任何一個隱藏單元.有輕微的正則化作用.如果你想獲得更好的正則化效果,可以在使用Batch-Normalization的同時使用Dropout算法.
3.7測試時的Batch Normalization
- Batch-Normalization將你的數據以mini-batch的形式逐一處理,但在測試時,你可能需要對每一個樣本逐一處理.我們應該怎么做呢~
Batch-Normalization公式
- 注意 對於u和\(\sigma\)是在整個mini-batch上進行計算,但是在測試時,你不會使用一個mini-batch中的所有數據(因為測試時,我們僅僅需要少量數據來驗證神經網絡訓練的正確性即可.)況且如果我們只使用一個數據,那一個樣本的均值和方差沒有意義,因此我們需要用其他的方式來得到u和\(\sigma\)這兩個參數.
- 運用覆蓋所有mini-batch的指數加權平均數來估算u和\(\sigma\)