为什么 LSTM 模型的损失会在几个 epoch 后上升?

Why does the loss of the LSTM model rise up over several epochs?

我为回归建立了一个简单的 LSTM 模型,这是一个多对多模型。模型的损失在开始时有所下降,但在几个时期内有所上升。我哪里错了?

我有 运行 8 个 CPU 核上的纪元数从 200 到 600 的模型,但结果保持不变。

这是我的代码。

model = Sequential()
model.add(LSTM(50, activation='relu', return_sequences=True, input_shape=(n_steps, n_features)))
model.add(LSTM(50, activation='relu'))
model.add(Dense(output_steps))
model.compile(optimizer='adam', loss='mse')

预计亏损会逐渐减少,波动不大

然而我看到的结果如下

7143/7143 [==============================] - 2s 281us/step - loss: 6595.8919
Epoch 63/200
7143/7143 [==============================] - 2s 289us/step - loss: 6557.3760
Epoch 64/200
7143/7143 [==============================] - 2s 280us/step - loss: 6947.0848
Epoch 65/200
7143/7143 [==============================] - 2s 282us/step - loss: 6439.9647
Epoch 66/200
7143/7143 [==============================] - 2s 277us/step - loss: 6583.3354
Epoch 67/200
7143/7143 [==============================] - 2s 278us/step - loss: 6724.0296
Epoch 68/200
7143/7143 [==============================] - 2s 279us/step - loss: 6457.0547
Epoch 69/200
7143/7143 [==============================] - 2s 278us/step - loss: 6371.6533
Epoch 70/200
7143/7143 [==============================] - 2s 279us/step - loss: 6644.9585
Epoch 71/200
7143/7143 [==============================] - 2s 277us/step - loss: 6340.0420
Epoch 72/200
7143/7143 [==============================] - 2s 279us/step - loss: 9484.5966
Epoch 73/200
7143/7143 [==============================] - 2s 277us/step - loss: 10975.8083
Epoch 74/200
7143/7143 [==============================] - 2s 275us/step - loss: 10174.8291
Epoch 75/200
7143/7143 [==============================] - 2s 282us/step - loss: 9863.0310
Epoch 76/200
7143/7143 [==============================] - 2s 278us/step - loss: 9882.6081
Epoch 77/200
7143/7143 [==============================] - 2s 280us/step - loss: 9398.1880

您使用的学习率对于第 71 轮之后的优化来说可能太大了。这样做的原因是,与较晚时期的误差相比,学习率可能相对大于开始时的误差。

您可以使用较小的学习率,或者您可以单调减少 lr 作为解决方案。

祝你好运:-)