梯度消失和爆炸

梯度消失和梯度爆炸:

梯度消失和梯度爆炸可以从同一个角度来解释, 根本原因是神经网络是根据链式求导法, 根据损失函数指导神经元之间的权重经行更新, 神经元的输入在经过激活函数激活, 通常, 如果我们选择sigmoid为激活函数:
通常,若使用的激活函数为sigmoid函数,其导数为:

这样可以看到,如果我们使用标准化初始w,那么各个层次的相乘都是0-1之间的小数,而激活函数f的导数也是0-1之间的数,其连乘后,结果会变的很小,导致梯度消失。若我们初始化的w是很大的数,w大到乘以激活函数的导数都大于1,那么连乘后,可能会导致求导的结果很大,形成梯度爆炸。

如何解决?

    1. 更换激活函数,如Relu, Tanh, 但Tanh的导数也是小于1的, 也有可能发生梯度消失/爆炸

由上图可知,ReLU函数的导数,在正值部分恒为1,因此不会导致梯度消失或梯度爆炸问题。

另外ReLU函数还有一些优点:

计算方便,计算速度快
解决了梯度消失问题,收敛速度快

    1. 参数阶段, 将w截取到一个范围内, wgan就是这样做的
    1. 残差连接
    1. BN
    1. 正则化,惩罚参数项目

https://blog.csdn.net/weixin_39853245/article/details/90085307

猜你喜欢

转载自www.cnblogs.com/zhouyc/p/12505364.html
今日推荐