#機械学習
#python
#Chainer

chainerにearly stoppingを追加してもらった話

More than 1 year has passed since last update.


Chainer, Early Stopping

下記の2つのプルリクエストを通して,

chainerにearly stoppingを追加してもらいました.

(とても丁寧なレビューをしていただいた徳居さんに感謝...!)

このearly stoppingは,kerasのEarlyStoppingを翻訳した形で実装しています.

これの意味するところは,EarlyStoppingTriggerは学習を打ち切る処理のみを行なっているということです.

学習停止時点までで監視していた指標でもっとも良い性能を発揮した重みを読み込むためには,

@koreyouさんがChainerでのEarly stoppingを再考するで紹介してくださっているように,

MaxValueTrigger(MinValueTrigger)とsave/restoreを組み合わせた機構をtrainerに追加する必要があります.

これはkerasのModelCheckpointに相当します.

early stoppingを使うためには,以下のようにトリガを作成します.

monitorでearly stoppingが監視する指標を設定します.

max_triggerはearly stoppingが起きなかった場合にどこまで学習を行うかを指定します.(exampleでの該当箇所)

stop_trigger = triggers.EarlyStoppingTrigger(

monitor='validation/main/loss',
max_trigger=(20, 'epoch'))

あとは,このstop_triggerをtrainerに渡してあげればよいです.(exampleでの該当箇所)

trainer = training.Trainer(updater, stop_trigger, out=args.out)

つかってください,よろしくお願いします!