ダークサイドにようこそ!

Follow The Darksideの諸行は無常

【Keras】過学習を防ぐためにEarlyStoppingを使うときはpatienceの値に注意

Kerasのコールバックには、過学習を防止するためのEarlyStoppingという関数があります。

コールバック - Keras Documentation

こいつは監視対象の値の変化が停止した時に訓練を自動でストップしてくれます。よく見かけるのはバリデーションデータに対する損失関数の値「val_loss」に対して減少が停止したときに学習をストップさせるというやつです。

es_cb = EarlyStopping(monitor='val_loss', patience=0, verbose=1, mode='auto')

こいつの引数に「patience」というのがあり、訓練が停止して値が改善しなくなってからのエポック数を指定できるのですが、デフォルトでは「0」となっています。

実際に学習させてみると分かるのですが、一回でも「val_loss」の減少が止まる(値が増える)と学習がストップするのです。肌感として学習中に損失関数の値が多少上下するのはよくあることで、「patience = 0」で学習がうまくいったことはありませんでした。

学習状況によりけりですが、EarlyStoppingを使う際のpatienceの値はある程度増やしておくのが良いという備忘録でした……