EarlyStoppingConfigurationの設定

Deeplearning4jにおけるEarlyStoppingConfigurationは、学習が進む中で 過学習(オーバーフィッティング)を防ぎ、最適なエポック数で学習を停止するための設定を行うための仕組みです。この設定を使うことで、一定条件を満たした場合に自動的にトレーニングを終了させることができます。


1. 基本概念

EarlyStoppingConfigurationEarlyStoppingTrainer とともに使われ、以下のような条件を元に学習を中断します:

  • スコア(損失、精度など)が改善しなくなった場合

  • 一定の評価メトリクスの最大エポック数に達した場合

  • トレーニングの総時間が一定時間を超えた場合

  • 学習に失敗(例外発生)した場合


2. 主な設定項目

java
EarlyStoppingConfiguration<MultiLayerNetwork> esConf = new EarlyStoppingConfiguration.Builder<MultiLayerNetwork>() .epochTerminationConditions(new MaxEpochsTerminationCondition(50)) // 最大エポック数 .iterationTerminationConditions(new MaxTimeIterationTerminationCondition(20, TimeUnit.MINUTES)) // 最大時間 .scoreCalculator(new DataSetLossCalculator(testDataIterator, true)) // 評価スコア(例:テスト損失) .evaluateEveryNEpochs(1) // 評価間隔(エポック単位) .modelSaver(new InMemoryModelSaver<>()) // モデル保存方法(メモリ、ディスクなど) .build();

主な構成要素の詳細

設定名 説明
epochTerminationConditions(...) 学習を終了する条件(エポック単位)を指定します。例:MaxEpochsTerminationConditionScoreImprovementEpochTerminationCondition
iterationTerminationConditions(...) イテレーション単位での終了条件。例:MaxTimeIterationTerminationCondition
scoreCalculator(...) モデルの評価方法。例:DataSetLossCalculatorClassificationScoreCalculatorなど
evaluateEveryNEpochs(...) 評価を行う頻度(Nエポックごと)
modelSaver(...) 最良モデルの保存先。例:LocalFileModelSaver, InMemoryModelSaver

3. EarlyStoppingTrainerの使用

設定が完了したら、EarlyStoppingTrainerを使ってモデルを学習させます。

java
EarlyStoppingTrainer trainer = new EarlyStoppingTrainer(esConf, model, trainDataIterator); EarlyStoppingResult<MultiLayerNetwork> result = trainer.fit();

EarlyStoppingResult で取得できる情報

  • 最良モデルのエポック

  • 各エポックでのスコア

  • 終了理由(最大エポック、スコア改善なし、例外など)


4. よく使われるTerminationConditionsの例

  • MaxEpochsTerminationCondition(int maxEpochs)

  • ScoreImprovementEpochTerminationCondition(int maxEpochsWithoutImprovement)

  • MaxTimeIterationTerminationCondition(long time, TimeUnit unit)


5. メリット

  • 過学習の防止

  • 学習時間の短縮

  • 自動的に最適なモデルを保存可能


6. 注意点

  • 評価データ(バリデーションまたはテスト)の適切な分割が必要

  • モデル保存方法を明示的に指定しないと最良モデルの復元ができない

生成日:2025/05/23