Machine learning 卷积神经网络会受到消失梯度的影响吗?

Machine learning 卷积神经网络会受到消失梯度的影响吗?,machine-learning,neural-network,classification,conv-neural-network,Machine Learning,Neural Network,Classification,Conv Neural Network,我想我在什么地方读到过,卷积神经网络不像标准的sigmoid神经网络那样,在层数不断增加的情况下,会受到消失梯度问题的影响。但我一直无法找到“为什么” 它真的没有问题吗?还是我错了,这取决于激活功能? [我一直使用校正线性单元,因此我从未测试过卷积神经网络的Sigmoid单元]卷积神经网络(如标准Sigmoid神经网络)确实存在消失梯度问题。克服消失梯度问题的最推荐方法是: 分层预训 激活函数的选择 你们可能会看到,用于计算机视觉问题的最先进的深度神经网络(如优胜者)已经使用卷积层作为其网络

我想我在什么地方读到过,卷积神经网络不像标准的sigmoid神经网络那样,在层数不断增加的情况下,会受到消失梯度问题的影响。但我一直无法找到“为什么”

它真的没有问题吗?还是我错了,这取决于激活功能?
[我一直使用校正线性单元,因此我从未测试过卷积神经网络的Sigmoid单元]

卷积神经网络(如标准Sigmoid神经网络)确实存在消失梯度问题。克服消失梯度问题的最推荐方法是:

  • 分层预训
  • 激活函数的选择
你们可能会看到,用于计算机视觉问题的最先进的深度神经网络(如优胜者)已经使用卷积层作为其网络的前几层,但它不是解决消失梯度的关键。关键通常是逐层贪婪地训练网络。当然,使用卷积层还有其他几个重要的好处。特别是在输入尺寸较大(图像像素)的视觉问题中,建议在第一层使用卷积层,因为它们的参数比完全连接的层少,并且第一层的参数不会达到数十亿(这将使网络容易过度拟合)


然而,对于一些任务(如),使用校正线性单元可以缓解消失梯度的问题(与传统的S形函数相反)

最近的进展缓解了深层神经网络中消失梯度的影响。预付款包括:

  • GPU在深层神经网络训练中的应用
  • 使用更好的激活功能。(此时,校正线性单位(ReLU)似乎工作得最好。)
  • 有了这些进步,深层神经网络甚至可以在没有分层预训练的情况下进行训练

    资料来源:
    我们不使用Sigmoid和Tanh作为激活函数,这会导致消失梯度问题。目前,我们大多使用基于RELU的激活函数来训练深度神经网络模型,以避免此类复杂情况并提高精度

    这是因为如果RELU激活的梯度或斜率大于0,则为1。Sigmoid导数的最大斜率为.25,这意味着在反向过程中,将渐变乘以小于1的值,如果层越来越多,将渐变乘以小于1的值,使渐变越来越小。RELU激活通过将梯度斜率设置为1来解决此问题,因此在反向传播过程中,不会出现梯度逐渐变小的情况。但是它们却保持不变,这就是RELU解决消失梯度问题的方法

    然而,关于RELU需要注意的一点是,如果你的值小于0,那么神经元就死了,而传递回的梯度是0,这意味着在反向传播过程中,如果你的值小于0,你将有0个梯度被传递回


    另一种选择是Leaky RELU,它为小于0的值提供了一些梯度。

    第一个答案是从2015年开始的,有点过时

    今天,CNN通常也使用batchnorm——尽管有一些争论为什么这会有帮助:发明人提到了协变量转移: 还有其他理论,如平滑损失情况:

    无论哪种方法,它都有助于显著处理与CNN相关的消失/爆炸梯度问题。在CNN中,您还可以应用链规则来获取渐变。也就是说,第一层的更新与N个数的乘积成正比,其中N是输入数。与最后一层的更新相比,这个数字很可能相对较大或较小。这可以通过观察快速增长的随机变量乘积的方差来看出,乘以的变量越多:


    对于具有长输入序列(即长度为L)的循环网络,情况通常比CNN更糟,因为那里的乘积由L个数组成。RNN中的序列长度L通常比CNN中的层数N大得多。

    是的,我在其他地方读到,校正后的线性单元没有消失梯度问题。我知道自动编码器和波尔兹曼机器是以贪婪的分层方式训练的。卷积神经网络也是这样吗?雷卢斯并非完全摆脱了消失梯度问题,但他们的问题较少。也可以在卷积网络上执行贪婪的分层预训练。它可以像自动编码器一样不受监督,也可以在将层连接到输出时受监督。我相信他们确实监督了这篇论文的预培训:我再次阅读了这篇论文(在我最后的评论中)。不清楚他们是否使用贪婪的分层预训练。他们只是说训练前。目前我还没有其他关于卷积网络分层训练的参考资料,但这是可能的。@Roy这里有一个例子,解释了为什么其他激活函数,比如sigmoid函数,会导致梯度消失。这里有足够的数学让你理解真正的原因。这与问题无关:“使用GPU训练深层神经网络”如果你用GPU训练CNN,那么你就不会受到消失梯度的影响。希望它是清晰的事实上,我认为一个更恰当的说法是,通过使用GPU,你可以使用更小的学习率(计算时间不会是一个问题),这在某种程度上减少了消失的风险。@BsHe这比dnth说的更有意义