為了獲得性能良好的神經網絡,網絡定型過程中需要進行許多關於所用設置(超參數)的決策。超參數之一是定型周期(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
模式下,當檢測值不再上升則停止訓練。