在深度學習領域中,有很多防止過擬合的技術,而早期停止試其中一個比較常見的技巧。本文想談談早期停止。
什麼是早期停止
早期停止的核心概念非常簡單,在模型訓練的過程中,我們不讓它一直訓練到收斂,而是在某個適當的時點提前終止訓練。關鍵在於適當的定義,這個時點並非隨意選擇,而是透過監控模型在驗證集上的表現來決定。
標準的模型訓練流程是,將歷史數據劃分為訓練集與驗證集。模型在訓練集上學習,每一輪訓練結束後,計算模型在驗證集上的預測誤差。在訓練初期,隨著模型逐漸學習到數據中的真實規律,訓練集與驗證集的誤差會同步下降。但到了某個臨界點之後,模型開始過度學習訓練集中的特定模式,此時訓練集的誤差會持續下降,但驗證集的誤差反而開始上升。這個驗證集誤差由降轉升的轉折點,就是早期停止應該發生的時機。
早期停止之所以有效,是因為它直接打斷了模型過度擬合的過程。當模型開始記住訓練數據中的雜訊時,驗證集誤差會立即反映這個現象,而早期停止機制則在這個現象惡化之前就終止訓練,保留了模型在泛化能力最佳時的狀態。
停止條件的設定策略
早期停止的判決條件是另一個需要謹慎設計的面向。最單純的做法是設定一個固定閾值,當驗證集誤差在連續數輪訓練中沒有出現明顯改善時,即停止訓練。更具體地說,我們可以定義一個耐心參數,代表模型在驗證集誤差未創新低的情況下,最多可以容忍多少輪繼續訓練。當連續未創新低的輪數超過耐心參數時,訓練便終止,並回朔到驗證集誤差最低的那一輪所對應的模型權重。
耐心參數的設定需要權衡兩個互相衝突的目標:
- 若耐心參數設得太小,模型可能在驗證集誤差因隨機波動而暫時上升時就過早停止,錯失了進一步學習的機會。
- 若耐心參數設得太大,則模型可能已經在驗證集誤差上升的階段多訓練了許多輪,導致了一定程度的過度擬合。
另一種常見的停止條件是設定絕對的改善門檻,亦即驗證集誤差的下降幅度必須超過某個最小比例,才被視為有意義的改善。這種做法可以避免模型因為極小幅度的誤差改善而持續訓練,浪費計算資源,同時也能減少因隨機雜訊造成的虛假改善。
原文出處:voltima_quant (@voltima_quant) 於 Threads · 查看原文

