本文结构:
- 什么是梯度消失?
- 梯度消失有什么影响?
- 是什么原因?
- 解决方案有哪些?
- 如何选择激活函数?
1. 什么是梯度消失?
梯度消失,常常发生在用基于梯度的方法训练神经网络的过程中。
当我们在做反向传播,计算损失函数对权重的梯度时,随着越向后传播,梯度变得越来越小,这就意味着在网络的前面一些层的神经元,会比后面的训练的要慢很多,甚至不会变化。
2. 有什么影响?
网络的前面的一些层是很重要的,它们负责学习和识别简单的模式,也是整个网络的基础,如果他们的结果不准确的话,那么后面层结果也会不准确。
而且用基于梯度的方法训练出参数,主要是通过学习参数的很小的变化对网络的输出值的影响有多大。如果参数的改变,网络的输出值贡献很小,那么就会很难学习参数,花费时间会非常长。
3. 梯度消失的原因?
在训练神经网络时,为了让损失函数越来越小,其中一种优化的方法是梯度下降。梯度下降法简单的来说就是在权重的负梯度方向更新权重,如下面这个公式所示,一直到梯度收敛为零。(当然在实际过程中,会通过设定一个超参数叫做最大跌代数来控制,如果迭代次数太小,结果就会不准确,如果迭代次数太大,那么训练过程会非常长。)
这里就需要计算参数的梯度,方法是用反向传播。
为了推导一下梯度消失的原因,我们来看一个最简单的神经网络的反向传播过程。