はじめに

fast.aiの Lesson2の動画をみているのだけれども、これがいい。

次から次へと新しい手法が紹介され、 それらはすべてfast.aiライブラリに実装されているとのこと。

そして、画像分類コンペのゴールデンルールが示される。

  1. Enable data augmentation, and precompute=True
  2. Use lr_find() to find highest learning rate where loss is still clearly improving
  3. Train last layer from precomputed activations for 1-2 epochs
  4. Train last layer with data augmentation (i.e. precompute=False) for 2-3 epochs with cycle_len=1 Unfreeze all layers
  5. Set earlier layers to 3x-10x lower learning rate than next higher layer
  6. Use lr_find() again
  7. Train full network with cycle_mult=2 until over-fitting

参考:

あまり理解していないので間違っていることを書くかもしれなけれども、 講座で紹介されたテクニックのメモ。

ゴールデンルールで使われているテクニック

学習率(learning rate)のサーチ

learning rate, 学習率を決定するための Practicalな方法。 学習率は、感覚で最適な値を探すことが多いが、もっと系統立てて探そうよという取り組み。

この論文が元になっている。

Learning Rate Schedulerという機能によって、はじめは小さい値からはじめて次第に大きくしていく。 このとき、Lossの変化をplotしていくことで、変化の極小値の値を採用する。

fast.aiライブラリでは、lr_findというメソッドに実装されている。

cyclic LR schedule

Cyclic LR scheduleは、学習率をcosine曲線にそって変更することで鞍点を抜け出す。

differential learning rate

fine-tuneするときの学習率を、 はじめのレイヤは小さく、おわりのレイヤは大きく設定することで、学習を最適化する。

cyclic_melt

Cyclic LR scheduleの学習率の変化を、epochが増えるに従って緩やかにしていく。 Cyclicの周期を1epock, 2epock, 4epockと変えていく。

Test Time Augmentation (TTA)

Data Augmentationを 推論フェーズでも使おうということ。 これによって、validationセットに対して Data Augumentaitionを適用して 予測をし、 たとえば一つの画像を4つに増やしたとき、精度はその平均をとることになる。

まとめ

まとめると、以下の手法が紹介された。

  • LR find
  • Cyclic LR
  • differential LR
  • Test Time Augmentation

ゴールデンルールにしたがえばworld-classな精度が簡単にでるよとのこと。

fast.ai Part1 lesson2では、以下のKaggleコンペが例題として登場し、解説される。

手頃なKaggle画像コンペに参加して、腕試しをしてみたい。