训练损失随时间增加[重复]


21

我正在训练一个模型(递归神经网络)来对4种类型的序列进行分类。在我进行训练时,我看到训练损失不断减少,直到正确分类训练批次中超过90%的样本为止。但是,几个时代之后,我注意到训练损失增加了,而我的准确性却下降了。这对我来说似乎很奇怪,因为我希望在训练集上表现会随着时间的推移而改善,而不会恶化。我正在使用交叉熵损失,我的学习率为0.0002。

更新:事实证明学习率太高。较低的足够低的学习率,我不会观察到这种行为。但是我仍然觉得这很奇怪。关于这种情况发生的原因,欢迎任何好的解释

损失先减少后增加

Answers:


6

训练CNN时,我有类似的行为,这是因为我使用了梯度下降和学习率下降的方法来进行误差计算。您是否已显着增加了迭代次数,并检查了这种行为是否由于新的低学习率而在很晚之后出现?


实际上,是的,但是有一点是,对于足够低的学习率,它将永远不会再上升。我正在寻找一种理论上合理的解释,为什么会发生这种情况
dins2018

您使用哪种优化算法?
Freundlicher '18

我使用
ld

1
我认为您的学习率很小,因此很接近本地最小值,以至于损失值再次略微增加(因为您超过最小值)的点需要太多迭代。损耗值的这种增加归因于亚当(Adam),在超过局部最小值并进行一定数量的迭代时,一小部分数除以甚至更少的数,损耗值便爆炸。
Freundlicher

2
您可以设置beta1 = 0.9和beta2 = 0.999。那是必须与这种行为相抵触的共同价值观。
Freundlicher

1

因为学习率太大,所以会发散而无法找到损失函数的最小值。在某些时期后使用调度程序降低学习速度将有助于解决问题


0

随着学习率的提高,您将在与梯度相反的方向上移动太多,并且可能会偏离局部最小值,从而增加损失。学习速率安排和梯度裁剪可以提供帮助。


欢迎来到简历。要获得好评,最好提供一个更完整的答案,请参阅stats.stackexchange.com/help/how-to-answer以获得指导。
ReneBt
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.