我在训练神经网络时经常使用“提前停止”,例如在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
)。在这种情况下,我相信模型仍然需要学习一些东西,即使这不会立即转化为验证损失的改进。