4.5.1 梯度消失现象

在理论上的深度网络比浅层网络更加强大,但在实际中会发现深度神经网络并不能比浅层网络性能好太多,不同层的学习速度差异很大,根本的原因是的学习的速度下降了。</br>
在某些深度神经网络中,在隐藏层BP的时候梯度倾向于变小。这意味着在前面的隐藏层中的神经元学习速度要慢于后面的隐藏层。这个现象也被称作是消失的梯度问题。

4.5.2 梯度消失原因分析

假设一神经网络,有三层隐藏层且每一层都只有一个单一的神经元:\(w1,w_2,…\)是权重,b1,b2,是偏置,C则是某个代价函数,从第 j个神经元的输出aj=σ(zj),其中σ是通常的 S 型激活函数,\(z_j=w_j∙a{j-1}+b_j\)是神经元的带权输入,代价函数C 是网络输出a4的函数。

梯度消失模型

梯度消失模型

计算第一个隐藏神经元梯度 C/b1

假设对偏置 b1 进行了微小的调整Δb1,会导致网络中剩下的元素一系列的变化。首先会对第一个隐藏元输出产生意个Δa1的变化,这样就会导致第二个神经元的带权输入产生 Δz2的变化,从第二个神经元输出随之发生 Δa2的变化,以此类推,最终会对代价函数产生 ΔC的变化: C/b1ΔCΔb1

{a1=σ(z1)=σ(w1a0+b1)Δa1=σ(w1a0+b1)b1Δb1=σ(z1)Δb1z2=w2a1+b2Δz2=σ(z2)a1Δa1=w2Δa1=w2σ(z1)Δb1......ΔC=σ(z1)w2σ(z2)w3σ(z3)w4σ(z4)Ca4Δb1Cb1=σ(z1)w2σ(z2)w3σ(z3)w4σ(z4)Ca4

梯度消失问题:

  • S函数导数在 σ(0)=1/4 时达到最高。若使用标准方法来初始化网络中的权重,那么会使用一个均值为 0 标准差为 1 的高斯分布。因此所有的权重通常会满足 |wj|<1,则wj×σ(zj)<1/4
  • 当进行了所有这些项的乘积时,最终结果肯定会指数级下降,项越多,乘积的下降的越快,即梯度消失。
    S型函数导数
    S型函数导数

梯度激增问题:

若项wj×σ(zj)变得很大(超过 1),这时候梯度会在 BP 的时候发生指数级地增长.

  • 首先将网络的权重设置得很大,比如 w1=w2=w3=w4=100
  • 然后选择偏置使得 σ(zj) 项不会太小:若保证每个神经元的带权输入是 zj=0,σ(zj)=1/4

4.5.3 梯度不稳定问题解决思路

本质原因:

  • 在前面的层上的梯度是来自后面的层上项的乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景。
  • 若使用标准的基于梯度的学习算法,在网络中的不同层会出现按照不同学习速度学习的情况。sigmoid 网络中前面的层的梯度会以指数级地速度消失。

解决办法:

唯一让所有层都接近相同的学习速度的方式是所有这些项的乘积都能得到一种平衡。若没有某种机制或者更加本质的保证来达成平衡,那网络就很容易不稳定了。