结合资料,对于Batch Normalization有了一些自己的理解。
1.BN可以解决梯度消失的问题。
假设激活函数为sigmoid.
al=sigmoid(hl)=sigmoid(al−1∗wl)
因为在反向传播中:
∂g∂w=∂g∂al∗∂al∂hl∗∂hl∂w=∂g∂al∗∂al∂hl∗∂hl∂al−1∗∂al−1∂hl−1∗∂hl−1∂w=...
如果
hl
非常大,根据sigmoid图像的特点,在两边值的导数几乎为0,只有中间y轴附近值导数值比较大。所以,经过若干次链式求导,最终
∂g∂w
接近为0,这就是梯度消失。
如果经过了Batch Normalization,可以使得每一层的
h
的均值为0,标准差为1,也就是数据集中在y轴附近,这样就使得梯度比较大,解决了梯度消失的问题。
2.BN可以解决每一层数据不稳定的问题。
在网络中有很多层,每一层的数据都要经过权重计算,如果权重大部分大于1的话,最后的数据可能非常大,如