7.5.6 越深度越困难吗
虽然“神经网络是否越深度越强大”这个问题的答案还不明确,但是,“神经网络的深度越高,训练难度就越大”这个结论可以暂时认为是正确的。神经网络的结构越复杂,层次越深,涉及的因素就越多,面临的挑战势必更多,这里笔者举一对最为经典的问题—“梯度消失”(Gradient Vanishing)和“梯度爆炸”(Gradient Exploding)来展开说明。
训练神经网络主要依靠迭代算法来优化,譬如第 6 章讲过的梯度下降优化算法,它的基本思路是每次迭代都以梯度向量为指导,按照梯度负反向和梯度的大小调整权值,逐步逼近,最后得到全局最优值,误差反向传播算法属于梯度下降优化算法的一种特定形式。在以上语境里,“梯度消失”问题是指从输出层开始,每经过一个隐层,指导更新权值的梯度向量就变小一些,这样,接近于输出层的权值更新相对正常,但在误差传播的远端,越靠近输入层的梯度越小,网络权值更新就会变得越慢。当隐层深度特别深时,经过若干次传递以后,梯度已变为一个接近于零的小数,导致这些隐层的权值几乎不会再发生改变,一直等于网络初始化时赋予的权值,此时的深层神经网络模型,其实等价于只有后几层在工作、其他层都在“偷懒摸鱼”的浅层神经网络模型。而“梯度爆炸”问题则与此相反,如果每经过一个隐层梯度向量都增大一些的话,在最接近输入层的那些靠前的隐层,每次权值更新都会发生很大的变化,这样带来的结果是轻则使得训练无法稳定收敛,重则导致数据越界溢出。
为何会产生梯度消失和梯度爆炸问题呢?如果读懂了前面误差反向传播算法的推导过程的话,这个问题其实很容易回答,以 E 表示损失函数输出值,x表示隐层的输出值,w 表示权值,s 表示加权和,∂ 表示激活函数,那最后推导出的梯度计算的公式如下:
第 7 章 深度学习时代
277