微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重置Adam优化器可减少验证损失

如何解决重置Adam优化器可减少验证损失

我正在 LibriSpeech 上训练递归神经网络。我尝试过关于学习率,批处理大小,的不同变体。在每一次训练中,有一件事情是相似的,即验证损失在7个时期后达到了饱和。我认为这可能是由于过度拟合。但是,我注意到一个奇怪的行为,即重置 Adam 优化器后,即它是插槽变量 m v ,经过7个训练周期后,验证损失减少到新的 minima ,比之前的值更低,然后开始围绕该值振荡其余的培训。我推测由于训练时间较长, 插槽v 变量比 插槽m 变量要小得多。因此,重置它们后,就会发生这种未知行为。我不确定。因此,在每固定数量的步骤之后,我们是否需要重置 Adam 优化器?否则,为什么 validation 减少到新的更低的 minima ?我使用的是 beta_1 beta_2 epsilon 认值用于 Tensorflow

中的 Adam 优化器

解决方法

不确定是什么造成了这种行为,但我相信您可以通过使用可调的学习率来避免这种情况。 keras回调ReduceLROnPlateau使此操作变得容易。文档为here.,用于监控验证损失,如果验证损失未能减少指定数量(耐心)的连续时期,它将自动将学习率降低指定的因数。我使用的系数是.6,耐心值为1。请尝试一下,希望您的验证损失能够达到较低的水平,而无需重置优化程序。

,

重置窗口绝对不是标准做法(至少据我所知)。就您而言,重置势头可能会导致有效学习率的短期提高,因为重置势头会解释您的两个观察结果:

  • 网络突然改善:重置充当“ kickstarter”,即网络能够跳出先前的本地最小值。这表明它以前被卡在这里,即学习率太小(如果误差曲线平坦或下降非常缓慢)或太大(如果它在此点附近振荡)

  • 最后的振荡:步长的增加导致新的局部最小值,但现在太大了,无法实际跳出,因此发生了振荡。

尽管您进行了有趣的观察,但仍需要进行更多研究才能验证这是一致的行为,而不仅仅是传闻。通常(和您的情况),我总是建议对学习率和批量大小进行一次网格搜索(记住,通过重复两次配置以重复两次来考虑随机初始权重),直到找到合适的训练曲线为止。 t太早饱和或过度拟合,同时又不会在很小但很多的梯度更新上浪费太多的培训资源。 early stoppingeven if you're using Adam都有助于解决这一问题。只要您对调优过程有一定的耐心,这些已建立且经过充分研究的做法几乎总会奏效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。