查询RNN的不稳定损失曲线

数据挖掘 rnn 火炬 顺序
2022-02-21 18:36:40

我目前正在构建用于预测的序列模型,并尝试使用 RNN、LSTM 和 GRU。

我注意到的不寻常之处是高度不稳定的损失曲线,其中损失有时会回到前几个时期的损失水平。有趣的是,从 RNN 到 LSTM 再到 GRU,这种情况的严重性降低了。

有人知道为什么会这样吗?

作为参考,这里是以下模型的损失曲线,跨越 500 个 epoch。

循环神经网络

长短期记忆体

格鲁乌

1个回答

可能有一些其他因素会影响这一点,例如使用模拟退火(在NN 上下文中)或其他学习率计划。您是否使用特定的 LR 计划?

一个时间表可能是 LR 减少 50%,每次连续 5 个 epoch 的验证损失没有减少。这将有助于越来越接近最小的损失。但是,我们知道有可能会陷入局部最小值,这可能远非最优,因此我们可以通过再次增加 LR 来改变现状,这实际上会使算法陷入局部最小值并继续前进到一个新的最小值(至少这是希望)。这种时间表通常会产生像你看到的那样的损失曲线。

另一种选择很简单,即您的批次大小非常小,并且每隔一段时间,您就会得到一个批次,其中包含您的模型真正难以处理的示例,因此该批次(以及时代)的损失与其他时代。

最后一个想法 - 更多地考虑您的数据 - 如果它是时间序列,例如股票价格或天气 - 可能会发生政权更迭/转变意味着底层功能或系统突然切换到新模式。这样的事情可能会使您的模型暂时失去气味,从而在损失曲线上产生颠簸。


关于术语的一点:LSTM 和 GRU 架构本身就是 RNN。循环网络是这样一种网络,其中连接不仅在网络中向前移动,而且还可以横向跨层或向后移动。所以它是一个更通用的术语,而 LSTM/GRU 层是 RNN 的具体示例。

如果您可以对您的三个模型架构多说一点,也许使用哪个名称可能会更清楚 - 甚至可能更好地理解这些损失曲线:-)