CNN如何避免消失的梯度问题


15

我已经阅读了很多有关卷积神经网络的文章,并且想知道它们如何避免消失的梯度问题。我知道深度信任网络会堆叠单级自动编码器或其他经过预先训练的浅层网络,因此可以避免此问题,但是我不知道如何在CNN中避免这种情况。

根据维基百科

“尽管存在上述“消失的梯度问题”,但GPU的优越处理能力使普通的反向传播对于多层多层前馈神经网络来说是可行的。”

我不明白为什么GPU处理会消除此问题?


2
维基百科的文章是否没有理由说明GPU为什么有助于解决逐渐消失的梯度问题?是因为即使梯度很小,但由于GPU是如此之快,我们仍然需要通过GPU的大量步骤来改善参数?
查理·帕克

2
究竟。消失的梯度问题是较低层权重以非常小的速率更新的原因,因此需要永远训练网络。但是,与GPU一样,您可以在更短的时间内完成更多的计算(即,权重的更多更新),并且GPU的处理越来越多,消失梯度问题在某种程度上消失了
Sangram

@CharlieParker,您能详细说一下GPU's are fast correlated with vanishing gradients,我可以理解具有大内存带宽的快速逻辑来处理多个矩阵乘法!但您能否解释一下与衍生产品有什么关系?该消失的梯度问题似乎与体重初始化做更多的,是吧!
阿努

Answers:


13

消失的梯度问题要求我们使用梯度下降的小学习率,然后需要许多小的步骤来收敛。如果您的计算机速度较慢,而每个步骤都需要很长时间,则这是一个问题。如果您有一个可以在一天之内执行更多步骤的快速GPU,那么问题就不大了。

有几种方法可以解决梯度消失的问题。我想CNN的最大影响来自从S型非线性单位向整流线性单位的转换。如果考虑一个简单的神经网络,其误差取决于权重w i j,直到y j,其中Ëw一世ĴÿĴ

ÿĴ=F一世w一世ĴX一世

它的梯度是

w一世ĴË=ËÿĴÿĴw一世Ĵ=ËÿĴF一世w一世ĴX一世X一世

如果是逻辑S形函数,则f 'FFF

Fü=最大值0ü

http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf


2
我对整流线性单元有些疑惑。是的,对于S形等,梯度通常很小-但是对于整流线性单位,梯度通常恰好为零。那不是更糟吗?因此,如果一个单元的权重很不幸,它们将永远不会改变。
汉斯·彼得·斯特尔

2
考虑到这一点,出于这个原因,可能使用了泄漏和/或嘈杂的ReLU。
sunside

5
为什么你的第一句话是正确的?即,“消失的梯度问题要求我们使用具有梯度下降的小学习率,然后需要许多小的步骤来收敛。” 为什么我们需要小的学习率来解决消失的梯度问题?如果由于梯度消失而使梯度已经很小,那么我希望减小梯度只会使情况变得更糟。
查理·帕克

2
好问题,我应该更好地解释该声明。消失的梯度问题并不在于所有的梯度都很小(可以通过使用较大的学习率来轻松解决),而是随着您通过网络向后传播,梯度消失了。即,梯度在某些层中较小,而在其他层中较大。如果您使用较大的学习率,则整个过程都会爆炸(因为某些梯度很大),因此您必须使用较小的学习率。使用多种学习率是解决该问题的另一种方法,但以引入更多超参数为代价。
卢卡斯

3
我认为学习率主要与爆炸梯度问题有关。以极低的学习速度将梯度缩小,根本无法阻止梯度消失,因为学习会大大减慢,只是延迟了效果。这种影响本身是由非线性的重复应用和小值的乘积引起的。当然,由于学习能力的强弱,有一种趋势是学习率会降低,但是这与消失的梯度无关,因为它仅控制状态空间的探索程度(在稳定的条件下)。
runDOSrun
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.