BN层的解释说明(包含梯度消失和梯度爆炸的原理及解决方法)
基础知识(梯度爆炸和梯度消失):
梯度爆炸:可以用这个图直观呈现,也就是梯度变化为正无穷或者负无穷(个人理解)。
梯度消失: 简单来说就是梯度接近0,神经网络的权重不再更新,继续训练学习不到图像的特征了。
解决梯度消失和爆炸的方法:
1.网路结构的改变,如RNN通过梯度截断来处理,LSTM通过门控制系统来解决梯度爆炸问题
2. **函数sigmod函数改为RULE函数,避免梯度消失
3. 通过加正则约束(BN可以看作是一种正则)来解决梯度爆炸
BN(batch norm)的原理:
将样本规范化至0均值,1方差
BN层的作用和缺点:
防止梯度弥散(个人理解就是梯度消失)
可以支持大的学习率,加速收敛
可以替代其他正则如dropout
缺点:
有的数据集不适合BN
防止梯度消失(举例):
以sigmoid函数为例,
从图中可以看出,sigmoid函数和他对应导数的曲线,可以看出sigmiod函数的梯度在0附近的时候变化是最大的,梯度也是最大的。归一化数据的话,就能让梯度维持在比较大的值和变化率。
防止梯度爆炸:
在方向传播的过程中,每一层的梯度都是由上一层的梯度乘以本层的数据得到。如果归一化的话,数据均值都在0附近,很显然,每一层的梯度不会产生爆炸的情况。。
此外,何凯明大神提出了group normalization的方式,在很小batch size的情况下实现了很好的规范化效果。如图