【发布时间】:2020-09-22 14:41:54
【问题描述】:
我正在 LibriSpeech 上训练一个循环神经网络。我尝试了关于学习率、批量大小等的不同变化。等。在每次训练中,有一件事是相似的,即验证损失在 7 个 epoch 后达到饱和。我认为这可能是由于过度拟合。但是,我注意到一个奇怪的行为,在重置 Adam 优化器之后,即它的插槽变量 m 和 v ,经过 7 个 epoch 的训练后,validation loss 降低到比前一个更低的新 minima,然后开始围绕该值振荡其余的训练。我推测由于训练时间较长,slot v 变量与 slot m 变量相比变得更小.所以在重置它们之后,就会发生这种未知的行为。不过我不确定。那么,我们是否需要在每个固定步数之后重置 Adam 优化器?或者如果不是,那么为什么验证损失会降低到一个新的更低的最小值?我正在使用 beta_1、beta_2 和 epsilon 的默认值 用于 Tensorflow
中的 Adam 优化器【问题讨论】:
-
这可能不太适合作为 SO 的问题,因为这可能需要实证研究来验证这是一致的行为,而不仅仅是您偶然观察到的事情。我至少可以告诉你,重置窗口绝对不是标准做法(至少据我所知)。在您的情况下,重置窗口可能会导致有效学习率的短期增加,因为重置动量可以解释您的观察结果,包括最后的振荡。
-
嗨,是的,你是对的,这不是经验行为。我目前的神经网络遇到了这个问题。以前,我从来没有遇到过亚当这样的异常情况。是的,由于重置动量,有效学习率应该会增加。感谢您的直觉。这就解释了为什么验证损失会突然减少。另外,这是否意味着以更仔细的学习率训练我的模型应该可以减少验证损失,而无需重置优化器?
标签: tensorflow deep-learning neural-network recurrent-neural-network