在训练深度神经网络时,梯度消失和梯度爆炸现象分别由哪些因素引发?请结合激活函数、权重初始化方法、网络结构等方面给出相应的解决策略。
考察说明
考查对深度学习中梯度消失与梯度爆炸成因及常用应对方法的理解。
回答思路
- 【回答框架 1】梯度消失与梯度爆炸源于反向传播中梯度连乘。深层网络对每层权重更新时,梯度需乘以各层激活函数导数与权重矩阵。若导数或权重的绝对值小于1,连乘使梯度指数衰减,靠近输入层梯度趋近于0,即梯度消失;若大于1,则梯度指数增长,导致权重剧烈震荡或发散,即梯度爆炸。
- 【回答框架 2】激活函数是核心因素之一。Sigmoid和Tanh导数在两端饱和,其导数值域分别小于0.25和1,易引发梯度消失,尤其在深层网络。ReLU在正区间导数为1,能缓解梯度消失,但负区间导数为0可能导致神经元死亡。Leaky ReLU、ELU等变体通过保留负部分改善该问题。
- 【回答框架 3】权重初始化方式影响初始梯度幅度。过小初始化会使梯度消失,过大则易爆炸。Xavier初始化适用于Sigmoid、Tanh,根据输入输出维度调整方差;He初始化适用于ReLU系列,方差设为2/n。合理的初始化使各层信号方差在传播中保持稳定。
- 【回答框架 4】网络结构方面的措施包含残差连接,如ResNet通过捷径连接保证梯度至少有一条通路直接回传,极大缓解深层梯度消失。Batch Normalization将每层输入归一化,稳定分布和梯度。LSTM/GRU的门控机制能控制长期信息流动,缓解RNN中梯度消失。
- 【回答框架 5】针对梯度爆炸的常见手段是梯度裁剪,即设定阈值,当梯度范数超过则缩放至阈值,防止参数更新过大。此外,调整学习率、使用优化器如Adam也间接降低梯度爆炸影响。实践中需组合多种方法,并经过实验验证。
- 【关键点 1】梯度连乘导致消失或爆炸,取决于激活函数导数和权重绝对值是否小于或大于1。
- 【关键点 2】ReLU及变体、Xavier/He初始化、残差网络、Batch Normalization与门控机制可有效缓解梯度消失。
- 【关键点 3】梯度裁剪是应对梯度爆炸的直接而有效方法。
- 【易错点 1】不能将梯度消失完全归因于深层网络本身,需联系激活函数和初始化。
- 【易错点 2】ReLU并非万能,神经元死亡问题需关注,需考虑Leaky ReLU等替代。
- 【易错点 3】梯度裁剪阈值需合理设定,过高无效,过低使收敛过慢。