Neural-Networks
如何正確使用提前停止來訓練深度神經網絡?
我有一個深度神經網絡模型,我需要在包含大約 100,000 個示例的數據集上對其進行訓練,我的驗證數據包含大約 1000 個示例。因為訓練每個示例需要時間(每個示例大約 0.5 秒)並且為了避免過度擬合,我想應用提前停止來防止不必要的計算。但是我不確定如何通過提前停止來正確訓練我的神經網絡,有幾件事我現在不太了解:
- 什麼是好的驗證頻率?我應該在每個時期結束時檢查我的模型驗證數據嗎?(我的批量大小是 1)
- 在開始收斂到更好的價值之前,前幾個時期可能會產生更差的結果嗎?在這種情況下,我們是否應該在檢查提前停止之前訓練我們的網絡幾個 epoch?
- 驗證損失可能會上下波動的情況如何處理?在那種情況下,提前停止可能會阻止我的模型進一步學習,對吧?
先感謝您。
什麼是好的驗證頻率?我應該在每個時期結束時檢查我的模型驗證數據嗎?(我的批量大小是 1)
沒有黃金法則,在每個 epoch 之後計算驗證錯誤是很常見的。由於您的驗證集比您的訓練集小得多,因此它不會大大減慢訓練速度。
在開始收斂到更好的價值之前,前幾個時期可能會產生更差的結果嗎?
是的
在這種情況下,我們是否應該在檢查提前停止之前訓練我們的網絡幾個 epoch?
你可以,但問題是你應該跳過多少個時期。所以在實踐中,大多數時候人們不會跳過任何紀元。
驗證損失可能會上下波動的情況如何處理?在那種情況下,提前停止可能會阻止我的模型進一步學習,對吧?
人們通常定義一個耐心,即如果驗證集沒有進展,則在提前停止之前等待的 epoch 數。耐心通常設置在 10 到 100 之間(10 或 20 更常見),但這實際上取決於您的數據集和網絡。
耐心 = 10 的示例: