21 我正在训练一个模型(递归神经网络)来对4种类型的序列进行分类。在我进行训练时,我看到训练损失不断减少,直到正确分类训练批次中超过90%的样本为止。但是,几个时代之后,我注意到训练损失增加了,而我的准确性却下降了。这对我来说似乎很奇怪,因为我希望在训练集上表现会随着时间的推移而改善,而不会恶化。我正在使用交叉熵损失,我的学习率为0.0002。 更新:事实证明学习率太高。较低的足够低的学习率,我不会观察到这种行为。但是我仍然觉得这很奇怪。关于这种情况发生的原因,欢迎任何好的解释 machine-learning neural-networks loss-functions rnn training-error — dins2018 source
6 训练CNN时,我有类似的行为,这是因为我使用了梯度下降和学习率下降的方法来进行误差计算。您是否已显着增加了迭代次数,并检查了这种行为是否由于新的低学习率而在很晚之后出现? — Freundlicher source 实际上,是的,但是有一点是,对于足够低的学习率,它将永远不会再上升。我正在寻找一种理论上合理的解释,为什么会发生这种情况 — dins2018 您使用哪种优化算法? — Freundlicher '18 我使用 — ld 1 我认为您的学习率很小,因此很接近本地最小值,以至于损失值再次略微增加(因为您超过最小值)的点需要太多迭代。损耗值的这种增加归因于亚当(Adam),在超过局部最小值并进行一定数量的迭代时,一小部分数除以甚至更少的数,损耗值便爆炸。 — Freundlicher 2 您可以设置beta1 = 0.9和beta2 = 0.999。那是必须与这种行为相抵触的共同价值观。 — Freundlicher
0 随着学习率的提高,您将在与梯度相反的方向上移动太多,并且可能会偏离局部最小值,从而增加损失。学习速率安排和梯度裁剪可以提供帮助。 — namuchan95 source 欢迎来到简历。要获得好评,最好提供一个更完整的答案,请参阅stats.stackexchange.com/help/how-to-answer以获得指导。 — ReneBt