Batch Normalization 详解

BN是在**层之前添加的。作用是把下一层(**层)的输入量标准化,更容易学习到数据之中的规律。Batch Normalization 详解
从上图可以看出,如果没有标准化,前面遇到较大的值之后,下一层的**函数就很难进行处理了。比如tanh,此时Wx2已经大于1,基本**已经没有作用了,不敏感了。

Batch Normalization (BN) 就被添加在每一个全连接和激励函数之间.

从下图可以看出,进行了BN的数的分布在-1到1之间,这样**函数也能相应的起到作用。
Batch Normalization 详解
**之后:可以看出,经过BN,**之后输出值分布更加均匀,而没有BN的由于**函数已经不敏感,所以分布到了饱和阶段。

Batch Normalization 详解

BN的算法

也就是每一个值 减去 均值再除以方差得到了标准化后的值。
值得注意的是,标准化之后还有一步小小的反向操作, 将 normalize 后的数据再扩展和平移. 原来这是为了让神经网络自己去学着使用和修改这个扩展参数 gamma, 和 平移参数 β。倘若BN没有作用,则对应的参数会用来改变而优化。

最后的BN就是输出。
Batch Normalization 详解