優化與訓練

提前停止(early stopping)

/ UR-lee STOP-ing /

提前停止,是一種「見好就收」的紀律。模型在訓練時,它在訓練資料上的誤差會一路下降——但到了某個點,它就不再真正地學習,而開始死記那些具體的樣本,連同其中的雜訊。提前停止盯著一份單獨的驗證集,一旦那上面的表現不再改善,就立刻叫停訓練,哪怕你若讓它繼續跑,訓練誤差還會接著降。

其做法既簡單又廉價。你留出一份模型從不在上面訓練的驗證集,每過一個輪次就查一次驗證損失。只要它還在降,就繼續。等它觸底、開始回升——這是過擬合露頭的標誌——你就停下,並保留驗證表現最佳那一刻的模型版本,而不是最後那一版。通常會允許一小段寬限期(「耐心」),免得一次帶雜訊的小回升就觸發過早的叫停。

它是現有最實用的正則化手段之一:幾乎不花什麼代價,無需改動模型,又直接對準過擬合——辦法就是乾脆不在收益遞減的那個點之後繼續訓練。麻煩在於,它完全依賴一份靠得住的驗證集——如果那份集子沒有代表性,或者你針對它調得太過火,你就可能在錯誤的時刻停下,或者反過來悄悄地對驗證資料過擬合。

在50個輪次裡,訓練損失自始至終穩步下降。驗證損失則降到第18個輪次,之後開始悄悄回升。提前停止保留第18輪的模型,丟掉其餘的——後面那些輪次只是在死記訓練資料裡的怪癖,那會損害真實世界的表現。

在驗證損失觸底時停下,而不是在訓練損失觸底時。

提前停止只有在你用驗證表現來判定「最佳」時才管用,絕不能用訓練損失來判——訓練損失幾乎總是一路下降,一直降過模型已經開始過擬合的那個點。

又稱
early termination提前停止早停早期停止