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测试部分

 

猜你喜欢

转载自blog.csdn.net/dayuqi/article/details/85116531