神经网络与深度学习(5):梯度消失问题

本文总结自《Neural Networks and Deep Learning》第5章的内容。 网络

 

问题引入

随着隐藏层数目的增长,分类准确率反而降低了。为何?函数

 

消失的梯度问题(The vanishing gradient problem)

先看一组试验数据,当神经网络在训练过程当中, 随epoch增长时各隐藏层的学习率变化。学习

两个隐藏层:[784,30,30,10]spa

 三个隐藏层:[784,30,30,30,10]3d

 四个隐藏层:[784,30,30,30,30,10]blog

能够看到:前面的隐藏层的学习速度要低于后面的隐藏层。get

这种现象广泛存在于神经网络之中, 叫作消失的梯度问题(vanishing gradient problem)
另一种状况是内层的梯度被外层大不少,叫作激增的梯度问题(exploding gradient problem)神经网络

更加通常地说,在深度神经网络中的梯度是不稳定的,在前面的层中或会消失,或会激增。这种不稳定性才是深度神经网络中基于梯度学习的根本问题。network

 

产生消失的梯度问题的缘由

先看一个极简单的深度神经网络:每一层都只有一个单一的神经元。以下图:方法

代价函数C对偏置b1的偏导数的结果计算以下:

先看一下sigmoid 函数导数的图像:

该导数在σ′(0) = 1/4时达到最高。如今,若是咱们使用标准方法来初始化网络中的权重,那么会使用一个均值为0 标准差为1 的高斯分布。所以全部的权重一般会知足|wj|<1。从而有wjσ′(zj) < 1/4。

这其实就是消失的梯度出现的本质缘由了。

 

能够考虑将权重初始化大一点的值,但这可能又会形成激增的梯度问题。

根本的问题其实并不是是消失的梯度问题或者激增的梯度问题,而是在前面的层上的梯度是来自后面的层上项的乘积。因此神经网络很是不稳定。惟一可能的状况是以上的连续乘积恰好平衡大约等于1,可是这种概率很是小。

因此只要是sigmoid函数的神经网络都会形成梯度更新的时候极其不稳定,产生梯度消失或者激增问题。

 

解决梯度消失问题

使用ReLU。
使用ReL 函数时:gradient = 0 (if x < 0), gradient = 1 (x > 0)。不会产生梯度消失问题。
相关文章
相关标签/搜索