【そうきうちきり】

早期打ち切り(Early Stopping) とは?

最終更新:
💡 「もう伸びない」と見極めたら潔くストップする、賢い練習の切り上げ方

訓練中に検証データなどの指標を監視し、設定した条件で改善が見られなくなったら訓練を止める手法。過学習や不要な計算を抑えるために使うが、停止条件や使うモデルの選び方を決める必要がある。

📌 このページのポイント
最良の時点と、停止の時点は違う 訓練損失 検証損失 損失(小さいほど良い) 0.0 0.5 1.0 1 2 3 4 5 6 エポック(訓練の周回) 最良 停止 最良:4回目 → 停止:6回目 改善なしを2回待つ例(patience=2)
仮の損失値を使い、毎エポック評価する例です。最良時点のモデルを使うには、保存・復元の設定を確認します。
ひよこ ひよこ
何を見て途中でやめるの?
ペンギン先生 ペンギン先生
典型的には、訓練とは別の検証データで損失や正解率を測るよ。訓練データでの成績が良くなり続けても、検証では悪くなることがある。監視する指標の改善が設定した条件で止まったら、訓練を打ち切るんだ。
ひよこ ひよこ
一回でも悪くなったら止める?
ペンギン先生 ペンギン先生
すぐに止めず、patienceで改善を待つ回数を指定できるよ。図では毎エポック評価し、検証損失が最良の4回目のあと、5・6回目の2回続けて改善しないので6回目で停止する例だね。損失なら小さい方、正解率なら大きい方が良いことにも注意しよう。
ひよこ ひよこ
待つ回数は10にすればいい?
ペンギン先生 ペンギン先生
全ての学習に合う値はないよ。小さすぎると一時的な停滞で止まり、大きすぎると不要な計算が増えることがある。評価の頻度、指標の揺れ、改善とみなす最小変化量などを合わせて決め、検証データで確かめよう。
ひよこ ひよこ
停止したモデルが一番良いの?
ペンギン先生 ペンギン先生
改善を待つ間に成績が悪くなれば、停止時点と最良時点は違うよ。KerasのEarlyStoppingはrestore_best_weightsを指定して最良時点の重みを復元できるけれど、既定値はFalse。チェックポイントへの保存も含め、何を最終的に使うか確認するんだ。
ひよこ ひよこ
ペンギン先生 ペンギン先生
勾配ブースティングでも使われるよ。XGBoostにはEarlyStoppingコールバックがあり、監視する評価データと指標を指定できる。設定名や最良モデルの扱いはライブラリで違うので、同じパラメーターで動くとは考えないようにしよう。
ひよこ ひよこ
止めれば過学習を必ず防げる?
ペンギン先生 ペンギン先生
訓練の続けすぎを抑える手段だけれど、保証ではないよ。検証データの選び方や、条件を何度も調整する影響もある。停止条件の選択に使う検証データと、最後の性能確認に使うテストデータを分けて扱おう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「早期打ち切り」って出てきたら「検証スコアが伸び悩んだら訓練をやめる仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Early Stopping」 = 早期停止・早期打ち切り
💬 earlyは早い段階、stoppingは停止。あらかじめ決めた最大回数まで続けず、指標に基づく条件で訓練を終えることだよ

参考資料

← 用語集にもどる