早停!? earlystopping for keras
为了获得性能良好的神经网络,网络定型过程中需要进行许多关于所用设置(超参数)的决策。超参数之一是定型周期(epoch)的数量:亦即应当完整遍历数据集多少次(一次为一个epoch)?如果epoch数量太少,网络有可能发生欠拟合(即对于定型数据的学习不够充分);如果epoch数量太多,则有可能发生过拟合(即网络对定型数据中的“噪声”而非信号拟合)。
早停法旨在解决epoch数量需要手动设置的问题。它也可以被视为一种能够避免网络发生过拟合的正则化方法(与L1/L2权重衰减和丢弃法类似)。
目的还是解决过拟合!
早停法背后的原理其实不难理解:
- 将数据分为定型集和测试集
- 每个epoch结束后(或每N个epoch后):
- 用测试集评估网络性能
- 如果网络性能表现优于此前最好的模型:保存当前这一epoch的网络副本
- 将测试性能最优的模型作为最终网络模型
keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbose=0, mode='auto')
当监测值不再改善时,该回调函数将中止训练
参数
-
monitor:需要监视的量
-
patience:当early stop被激活(如发现loss相比上一个epoch训练没有下降),则经过
patience
个epoch后停止训练。 -
verbose:信息展示模式
-
mode:‘auto’,‘min’,‘max’之一,在
min
模式下,如果检测值停止下降则中止训练。在max
模式下,当检测值不再上升则停止训练。