深度神经网络中梯度消失的原因及解决
我们总听到说梯度消失梯度消失,究竟是什么原因呢。
梯度消失
上图是我们的简单3隐层神经网络,我们采取sigmod函数作为每个神经元的**函数。即,每层输入为:
输出为:
则根据求导的链式法则有:
这里我们就可以看出一些猫腻了。因为有梯度的连乘,而万一梯度一直小于1,则会在传递过程中越来越小,知道消失!碰巧我们的sigmod函数(如下图左)的导数(下图右)不大于1/4。就这样梯度在逐层传递中“消失了”。
解决
我们可以想个办法来解决这个问题。比如用一个导数最大值不是1/4的函数?嗯,挺好。但是最好也别太大,否则就会梯度爆炸。
人们发现