本文是笔者使用EarlyStopping的心得,很多是笔者自己的思考,欢迎大家讨论指教。
具体EarlyStop的使用请参考官方文档和源代码。
EarlyStopping是什么
EarlyStopping是Callbacks的一种,callbacks用于指定在每个epoch开始和结束的时候进行哪种特定操作。Callbacks中有一些设置好的接口,可以直接使用,如’acc’,’val_acc’,’loss’和’val_loss’等等。
EarlyStopping则是用于提前停止训练的callbacks。具体地,可以达到当训练集上的loss不在减小(即减小的程度小于某个阈值)的时候停止继续训练。
为什么要用EarlyStopping
根本原因就是因为继续训练会导致测试集上的准确率下降。
那继续训练导致测试准确率下降的原因猜测可能是1. 过拟合 2. 学习率过大导致不收敛 3. 使用正则项的时候,Loss的减少可能不是因为准确率增加导致的,而是因为权重大小的降低。
当然使用EarlyStopping也可以加快学习的速度,提高调参效率。
EarlyStopping的使用与技巧
一般是在model.fit函数中调用callbacks,fit函数中