梯度消失-


  1. 定义
  2. 梯度消失(Gradient Vanishing)是指在深度神经网络的反向传播过程中,梯度(用于更新模型参数的信号)变得越来越小,趋近于零的现象。这使得模型参数更新缓慢,甚至无法有效更新,导致训练过程效率低下,模型难以收敛到一个较好的状态。例如,在一个很深的多层感知机(MLP)中,随着反向传播的进行,梯度可能会在逐层传递时逐渐衰减,最终导致底层的神经元几乎无法更新。

  3. 产生原因

  4. 激活函数的选择:许多传统的激活函数,如Sigmoid函数和Tanh函数,在其输入值处于某些区间时,导数非常小。以Sigmoid函数$f(x)=\frac{1}{1 + e^{-x}}$为例,当$x$的绝对值较大时,其导数$f^\prime(x)$趋近于零。在深度神经网络中,随着信号向前传播,神经元的输出可能会使后续激活函数的输入落入这些导数很小的区间。在反向传播时,根据链式法则,梯度是各层激活函数导数的乘积,这些小的导数相乘会导致梯度越来越小。
  5. 深度神经网络结构:在非常深的网络中,梯度在反向传播时需要经过许多层。每经过一层,梯度都要乘以该层的激活函数导数以及权重等因素。如果每层的这些因素导致梯度有一定程度的衰减,那么经过多层累积后,梯度就会显著减小。例如,在一个有100层的神经网络中,假设每层使梯度衰减为原来的0.9,那么经过100层后,梯度就会变得极小。

  6. 引发的问题

  7. 训练缓慢:由于梯度消失,模型参数更新的步长变得极小。这意味着在训练过程中,模型需要更多的迭代次数才能收敛。例如,在一个图像分类任务中,正常情况下可能需要100次迭代就能达到较好的准确率,但如果出现梯度消失,可能需要数千次甚至更多的迭代,大大增加了训练时间和计算资源的消耗。
  8. 模型无法有效学习:当梯度趋近于零时,底层的神经元权重几乎无法更新。这使得模型无法有效地学习到输入数据的复杂特征,尤其是那些需要通过多层抽象才能得到的特征。例如,在自然语言处理任务中,对于句子的语义理解可能需要对单词的顺序和组合进行多层的特征提取,但梯度消失会阻碍模型对这些底层特征的学习,导致模型性能不佳。

  9. 解决方法

  10. 选择合适的激活函数:ReLU(Rectified Linear Unit)及其变体是解决梯度消失问题的有效选择。ReLU函数$f(x)=\max(0,x)$在$x > 0$时,导数为1,不存在梯度消失的问题。Leaky - ReLU函数是ReLU的一个变体,它在$x < 0$时也有一个较小的非零导数,例如$f(x)=\max(0.01x,x)$,这样在反向传播时,梯度不会因为神经元输出为负而消失。
  11. 残差网络(ResNet)架构:ResNet通过引入残差连接来缓解梯度消失问题。在传统的神经网络中,输入信号经过一系列层的变换得到输出,而在ResNet中,输出是输入加上经过一系列层变换后的信号,即$y = x + F(x)$,其中$x$是输入,$F(x)$是经过一些层变换后的函数。这种结构使得梯度可以直接通过残差连接“跳过”一些层,避免了梯度在多层传递过程中的过度衰减。
  12. 梯度提升方法:一些改进的梯度计算方法,如LSTM(Long - Short Term Memory)中的门控机制,通过控制信息的流动来防止梯度消失。在LSTM中,有输入门、遗忘门和输出门,这些门可以根据输入和当前状态来决定信息的保留和更新程度,从而使得梯度能够在较长的序列中有效地传播,避免因序列过长导致的梯度消失。