为了获得性能良好的神经网络,网络定型过程中需要进行许多关于所用设置(超参数)的决策。超参数之一是定型周期(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模式下,当检测值不再上升则停止训练。