Deeplearning4jにおけるEarlyStoppingConfigurationは、学習が進む中で 過学習(オーバーフィッティング)を防ぎ、最適なエポック数で学習を停止するための設定を行うための仕組みです。この設定を使うことで、一定条件を満たした場合に自動的にトレーニングを終了させることができます。
1. 基本概念
EarlyStoppingConfiguration は EarlyStoppingTrainer とともに使われ、以下のような条件を元に学習を中断します:
-
スコア(損失、精度など)が改善しなくなった場合
-
一定の評価メトリクスの最大エポック数に達した場合
-
トレーニングの総時間が一定時間を超えた場合
-
学習に失敗(例外発生)した場合
2. 主な設定項目
主な構成要素の詳細
| 設定名 | 説明 |
|---|---|
epochTerminationConditions(...) |
学習を終了する条件(エポック単位)を指定します。例:MaxEpochsTerminationConditionやScoreImprovementEpochTerminationCondition |
iterationTerminationConditions(...) |
イテレーション単位での終了条件。例:MaxTimeIterationTerminationCondition |
scoreCalculator(...) |
モデルの評価方法。例:DataSetLossCalculatorやClassificationScoreCalculatorなど |
evaluateEveryNEpochs(...) |
評価を行う頻度(Nエポックごと) |
modelSaver(...) |
最良モデルの保存先。例:LocalFileModelSaver, InMemoryModelSaver |
3. EarlyStoppingTrainerの使用
設定が完了したら、EarlyStoppingTrainerを使ってモデルを学習させます。
EarlyStoppingResult で取得できる情報
EarlyStoppingResult で取得できる情報-
最良モデルのエポック
-
各エポックでのスコア
-
終了理由(最大エポック、スコア改善なし、例外など)
4. よく使われるTerminationConditionsの例
-
MaxEpochsTerminationCondition(int maxEpochs) -
ScoreImprovementEpochTerminationCondition(int maxEpochsWithoutImprovement) -
MaxTimeIterationTerminationCondition(long time, TimeUnit unit)
5. メリット
-
過学習の防止
-
学習時間の短縮
-
自動的に最適なモデルを保存可能
6. 注意点
-
評価データ(バリデーションまたはテスト)の適切な分割が必要
-
モデル保存方法を明示的に指定しないと最良モデルの復元ができない
生成日:2025/05/23