過度配適:解讀損失曲線

如果所有損失曲線在您第一次訓練模型時就會像這樣,那麼機器學習就會變得簡單許多:

圖 20. 這張圖表顯示訓練機器學習模型時的理想損失曲線。損失曲線會將損失繪製在 y 軸上,並將訓練步驟數繪製在 x 軸上。隨著訓練步驟數量增加,損失一開始會很高,然後以指數方式下降,最後趨於平緩,達到最小損失。
圖 20. 理想的損失曲線。

不幸的是,損失曲線通常很難解讀。運用您對損失曲線的直覺,解決本頁的練習題。

練習 1:振盪損失曲線

圖 21. 損失曲線 (y 軸為損失,x 軸為訓練步驟數),其中損失並未趨於平坦。但損失會不規則地擺動。
圖 21. 振盪損失曲線。
您可以採取哪些三種做法,嘗試改善圖 21 所示的損失曲線?
根據資料結構檢查資料,找出錯誤的示例,然後從訓練集中移除這些示例。
是的,這是所有機型的最佳做法。
降低學習率。
是的,在偵錯訓練問題時,通常建議降低學習率。
將訓練集縮減為少量可信的範例。
雖然這項技巧聽起來很人工,但其實是個不錯的做法。假設模型會在少數可信賴的範例上收斂,您就可以逐步新增更多範例,或許就能找出哪些範例會導致損失曲線出現波動。
增加訓練集的範例數量。
這麼做雖然很誘人,但極不可能解決問題。
提高學習率。
一般來說,如果模型的學習曲線顯示有問題,請勿提高學習率。

練習 2. 損失曲線出現大幅跳升

圖 22. 損失曲線圖,顯示損失值在特定數量的訓練步驟後開始減少,然後隨著後續訓練步驟突然增加。
圖 22.損失大幅增加。
請問下列哪兩個陳述指出圖 22 中爆炸損失的可能原因?
輸入資料包含一或多個 NaN,例如因除以零而導致的值。
這種情況比你想像中更常見。
輸入資料包含大量異常值。
有時,由於批次的隨機排序不當,一個批次可能會包含許多異常值。
學習率過低。
學習率極低可能會增加訓練時間,但這並非奇怪的損失曲線成因。
規則化率過高。
沒錯,過高的正則化可能會導致模型無法收斂,但不會導致圖 22 中顯示的奇怪損失曲線。

練習 3. 測試損失與訓練損失不一致

圖 23. 訓練損失曲線似乎趨於一致,但在經過一定數量的訓練步驟後,驗證損失開始上升。
圖 23.驗證損失率急劇上升。
下列哪項敘述最能說明訓練和測試集的損失曲線之間存在差異的原因?
模型過度擬合訓練集。
是的,很可能是。可能的解決方案如下:
  • 簡化模型,例如減少特徵數量。
  • 提高正規化率。
  • 確保訓練集和測試集在統計上相等。
學習率過高。
如果學習率過高,訓練集的損失曲線可能就不會像這樣運作。

練習 4. 損失曲線卡住

圖 24. 損失曲線圖表,顯示損失開始與訓練收斂,但接著顯示看起來像矩形波的週期性模式。
圖 24.在特定步驟數後出現混亂的損失。
下列哪個敘述最有可能解釋圖 24 中顯示的異常損失曲線?
訓練集包含重複的範例序列。
這可能是一種可能。請務必充分隨機排列範例。
規則化率過高。
這不太可能是原因。
訓練集包含太多特徵。
這不太可能是原因。