BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)

基础知识(梯度爆炸和梯度消失):

梯度爆炸:可以用这个图直观呈现,也就是梯度变化为正无穷或者负无穷(个人理解)。

BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)

梯度消失: 简单来说就是梯度接近0,神经网络的权重不再更新,继续训练学习不到图像的特征了。

解决梯度消失和爆炸的方法:

1.网路结构的改变,如RNN通过梯度截断来处理,LSTM通过门控制系统来解决梯度爆炸问题

2. **函数sigmod函数改为RULE函数,避免梯度消失

3.  通过加正则约束(BN可以看作是一种正则)来解决梯度爆炸

BN(batch norm)的原理:

将样本规范化至0均值,1方差

BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)

BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)

BN层的作用和缺点:

防止梯度弥散(个人理解就是梯度消失)

可以支持大的学习率,加速收敛

可以替代其他正则如dropout

缺点:

有的数据集不适合BN 

防止梯度消失(举例):

以sigmoid函数为例,

BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)

BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)

从图中可以看出,sigmoid函数和他对应导数的曲线,可以看出sigmiod函数的梯度在0附近的时候变化是最大的,梯度也是最大的。归一化数据的话,就能让梯度维持在比较大的值和变化率。

防止梯度爆炸:

在方向传播的过程中,每一层的梯度都是由上一层的梯度乘以本层的数据得到。如果归一化的话,数据均值都在0附近,很显然,每一层的梯度不会产生爆炸的情况。。

 

此外,何凯明大神提出了group normalization的方式,在很小batch size的情况下实现了很好的规范化效果。如图

BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)