消失和爆炸梯度问题:神经网络101

『消失和爆炸梯度问题:神经网络入门』

如何确保你的神经网络不会“死掉”或者“爆炸”

https://www.flaticon.com/free-icons/neural-network. title=“神经网络图标。” 由Paul J.创建—Flaticon.

消失梯度和爆炸梯度是什么?

在之前的一篇文章中,我们解释了神经网络是如何通过反向传播算法进行学习的。主要思想是从输出层开始,通过将误差“传播”到输入层,在这个过程中根据损失函数更新权重。如果你对此不熟悉,我强烈建议你阅读那篇文章:

前向传播和反向传播:神经网络入门

手动和代码解释神经网络如何“训练”和“学习”数据中的模式,使用PyTorch

towardsdatascience.com

权重是使用它们相对于损失函数的偏导数进行更新的。问题是,随着我们接近网络的较低层,这些梯度越来越小。这导致训练网络时,较低层的权重几乎不会改变。这就是所谓的消失梯度问题。

相反地,梯度可能会在层之间继续增大。这是爆炸梯度问题,主要是递归神经网络中的一个问题。

然而,2010年由Xavier Glorot和Yoshua Bengio发表的一篇论文诊断出导致梯度问题发生的几个原因。主要罪魁祸首是S型激活函数和权重的初始化方式(通常是从标准正态分布中初始化)。这种组合导致层之间的方差在饱和时在S型函数的极端边缘处变化。

下面是S型函数的数学方程和曲线图。请注意,在极端值处,梯度变为零。因此,在这些饱和点上没有“学习”发生。

Sigmoid函数。图生成作者使用Python绘制。

现在我们将介绍一些可以减少梯度消失或爆炸的技术。