梯度爆炸和梯度消失以及解决方案

梯度爆炸和消失

两种情况下梯度消失经常出现,一是在深层网络中,二是采用了不合适的激活函数,比如sigmoid。梯度爆炸一般出现在深层网络和权值初始化值太大的情况下,下面分别从这两个角度分析梯度消失和爆炸的原因。

数学说明

参考博客

这边我做了做了一个两个隐层梯度的推导,看的出来层数逐渐变多,影响最大的便是权值w和激活函数,他们中的任意一个大于1或者小于1,连乘都会造成梯度的消失和爆炸。

梯度消失的一个例子

接近output层的参数基本已经收敛,收敛后基本训练就结束了,但是前面接近input的参数还是随机的。

一般的深层神经网络都具有这样的缺陷,这边提一下rnn的梯度的问题,rnn即便是浅层,也是会出现梯度的问题,尤其是当它time_step越长的时候,建模的序列越长它就越是容易遗忘,这就是梯度出问题,本质上它每一刻之间的梯度传递也是连乘的,激活函数和权值影响也是一样的。解决方案就是lstm,主要解决的是梯度消失的问题,也就是遗忘问题。

梯度爆炸是很容易发现的,它会让你的参数爆掉,使用梯度剪切就很好解决但梯度消失不太容易发现

解决方案

  • 替换其他激活函数

扫描二维码关注公众号,回复: 2451062 查看本文章

注意这边并没有退化成线性模型,每当权值发生变化,神经元接受的输入也就发生变化,激活的区域也就发生变化,其实它是局部线性的。
待续

猜你喜欢

转载自blog.csdn.net/ding_xiaofei/article/details/81198850
今日推荐