训练神经网络时,是什么导致训练/测试错误突然下降?


18

在神经网络训练期间,我已经看到测试/训练误差的曲线图在某些时期突然下降了几次,我不知道是什么原因导致这些性能跳跃:

ResNet测试错误

该图像取自Kaiming He's Github,但许多论文中也出现了类似的图。


一篇相关的论文:Smith等。2018年不要削弱
amoeba

Answers:


7

他们改变了学习速度。请注意,下降恰好是30和60个纪元,显然是有人手动设置的。


在第3.4节中,它解释了当错误达到
平稳状态

2

想想“优化前景”。例如,如果您的网络只有两个权重,则可以在表面上绘制这两个权重的所有组合,其中每个点的高度表示如果使用该函数,则成本函数返回的误差量(x,y )作为您的两个权重。您试图移动到此表面上的最低点以获取最低级别的错误。
有时问题是表面会变得非常疯狂,尤其是在具有数百万个参数(而不只是两个)的网络中。您可能会陷入进度缓慢的鞍点,然后突然被吊索击落到向下的山丘中。
这是一个动画,可以帮助您直观地看到这一点 。您可以看到,更基本的梯度下降算法更容易卡在这些位置。
在此处输入图片说明

可能还有其他原因,但这是您最常听到的原因。网络中可能会有一堆单元达到饱和激活状态(或者在relu的情况下,一个单元仅由很少量的训练输入激活),并且当一个单元脱离饱和状态时引发连锁反应,使其余部分脱离饱和,权重突然增加梯度流?我还没有研究过类似的东西,但是如果有人有其他原因要补充,我会很感兴趣。


1
-1。这不能回答问题,或者至少不清楚它是如何实现的,以及为什么您写的内容是相关的。为什么降低学习率会使自己​​的成绩不及格?
变形虫

甚至还不清楚动画是否正确,因为SGD(按照定义)每次迭代都会看到不同的优化表面。在此图中,优化表面是固定的,因此我不清楚如何在此处说明SGD。SGD“点”的行为更像是全批次梯度下降,其中优化表面在整个训练过程中固定不变。
乔什
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.