Keras 提前停止:监控“损失”或“val_loss”?

数据挖掘 神经网络 喀拉斯 早停
2021-10-07 02:55:45

我在训练神经网络时经常使用“提前停止”,例如在Keras中:

from keras.callbacks import EarlyStopping

# Define early stopping as callback
early_stopping = EarlyStopping(monitor='loss', patience=5, mode='auto', restore_best_weights=True)

# ...THE MODEL HERE...

# Call early stopping in .fit
history = model.fit_generator(..., callbacks=[early_stopping])

问题:我经常想知道是监控损失(monitor='loss')还是验证损失(monitor='val_loss')更好。从文学作品中是否有一些启示?什么是最佳实践?

我的直觉是,监控验证损失可以对学习过程提供更直接的反馈,因为如果验证损失在某些时期后没有进一步增加,那么似乎就没有什么可学的了。

另一方面 -dropout例如当我使用时 - 损失通常会“落后于”验证损失(loss > val_loss)。在这种情况下,我相信模型仍然需要学习一些东西,即使这不会立即转化为验证损失的改进。

1个回答

验证损失。整体训练损失应该不断减少,因此监控它没有那么有意义。如果您的问题是验证丢失中的噪音,请增加耐心。