1. 程式人生 > >Internal Covariate Shift以及Batch Normalization

Internal Covariate Shift以及Batch Normalization

1 Internal Covariate Shift 意思個人的理解是在多層網路訓練中,後面層次的神經網路接受到的節點受到前面層次的網路引數變化導致該層輸入資料的分佈發生了變化.泛指,在多層資料網路中各層之間引數變化引起的資料分佈發生變化的現象.

2 其危害一是導致後層網路引數要適應分佈的變化,導致實際上的學習率降低,危害二是容易陷入梯度飽和,後層引數更新慢.分佈帶來的改變是導致導數方向變化莫測,引數更新慢導致收斂慢.

3 解決方案一 ,白化.pAC白化是讓資料,均值為0,方差為1. ZAC白化是讓資料均值為0,方差相同.

   白化方案的缺點是改變了資料的表達能力,以及計算量大

4 batch normalization 原理

Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]}

\sigma^2=\frac{1}{m}\sum_{i=1}^m(Z^{[l](i)}-\mu)^2      

\mu=\frac{1}{m}\sum_{i=1}^mZ^{[l](i)}

\tilde{Z}^{[l]}=\gamma\cdot\frac{Z^{[l]}-\mu}{\sqrt{\sigma^2+\epsilon}}+\beta   

A^{[l]}=g^{[l]}(\tilde{Z}^{[l]})

5 測試階段

首先保留每組minibatch的u和 sigma

   \mu_{test}=\mathbb{E} (\mu_{batch})   \sigma^2_{test}=\frac{m}{m-1}\mathbb{E}(\sigma^2_{batch})

 

BN(X_{test})=\gamma\cdot \frac{X_{test}-\mu_{test}}{\sqrt{\sigma^2_{test}+\epsilon}}+\beta  

 

6 batch normalization 好處

  1 對每一層的引數調節其 方差和均值到一定範圍, 達到層和層的解耦.

  2 網路反向傳播不再對引數sacle變化敏感,表現為比較好的抵抗 過大的學習率和大初始權重的影響. 這能加快收斂速度.

  3 緩解梯度消失

  4 一定的正則化作用

 

7實驗對比  https://zhuanlan.zhihu.com/p/34879333 請看BN測試部分