深度神经网络中当网络层数过多时会出现一些问题,例如梯度消失(gradient vanishing problem)和梯度爆炸(gradient exploding problem)问题。网络中前层的梯度计算是来自于后面层上梯度的乘积,当存在过多的层次时,就出现了内在本质上的不稳定场景。
神经网络中的激活函数通常使用sigmoid函数
可以看出sigmoid的导数(sigma'left(x ight))最大值为(frac{1}{4}),而初始化的网络权值|w|通常都小于1,因此(|sigma'left(z ight)w|leqfrac{1}{4}),因此对于上面的链式求导,层数越多,求导结果(frac{partial C}{partial b_1})越小,因而导致梯度消失的情况出现。梯度爆炸问题的出现原因即(|sigma'left(z ight)w|>1),也就是w比较大的情况。
实际上,梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的