見出し画像

Bag of Tricks for Image Classification with Convolutional Neural Networks

Kaggleの現行コンペである壺コンペのディスカッションで言及されていた論文になります。

ディスカッションの内容を読むと、こちらの論文は画像分類タスクの学習時に役に立つTips集なのかなと思いました。

There are many tricks include: Cosine Learning Rate Decay, Label Smoothing, Knowledge Distillation, Mixup Training, Learning rate warmup, No bias decay in BN, Zero gamma in ResNet block and so on. Very intersting paper from Mu Li et. al.

概要(abstの翻訳)

画像分類研究における最近の進歩の多くは、データ増強や最適化方法の変更など、トレーニング手順の改良に貢献しています。ただし、文献では、ほとんどの改良点は実装の詳細として簡潔に言及されているか、ソースコードにしか表示されません。本稿では、そのような改良点を調査し、ablation studyを通じて最終的なモデルの精度に及ぼす影響を経験的に評価します。これらの改良点を組み合わせることで、さまざまなCNNモデルを大幅に改善できることを示します。たとえば、ImageNetでResNet-50のトップ1の検証精度を75.3%から79.29%に引き上げます。また、画像分類の精度が向上すると、オブジェクト検出やセマンティックセグメンテーションなど、他のアプリケーション分野でも転移学習のパフォーマンスが向上することを実証します。

ここからは自分のコメントです。こちらの論文は精度の向上だけでなく、訓練時のパフォーマンスにも言及しているようです。

「ablation study」というワードを知らなかったので少し調べてみました。

精度向上に役立つ複数の要素があり、その中の一つの要素を抜くと精度が落ちるかどうかでその要素が精度向上に寄与しているかどうかを確認するという意味なんですね。

上記を考慮すると、A, B, Cそれぞれを利用する/しないの8通りの組み合わせを評価することが理想的ということになりますが、構成要素が多くなると評価も大変になり、結果もごちゃごちゃしてしまう可能性があります。
そのようなケースでは、下記のように各構成要素を1つだけ抜いた手法を比較するablation studyを行うことで、提案手法からどの構成要素を抜いたとしても大きく精度が低下することを示し、結果的にどの構成要素も重要であると主張することができます。

論文リンク

Linear scaling learning rate

Batchsizeに合わせて学習率を増やす。

In particular, if we follow He et al. [9] to choose 0.1 as the initial learning rate for batch size 256, then when changing to a larger batch size b, we will increase the initial learning rate to 0.1 × b/256.

Learning rate warmup

初期値の学習率は小さくし、学習が進むたびに増加させる。

In other words, assume we will use the first m batches (e.g. 5 data epochs) to warm up, and the initial learning rate is η, then at batch i, 1 ≤ i ≤ m, we will set the learning rate to be i * (η/m).

Zero γ

ResNetのresidual blocksについて


No bias decay


Low-precision training

一般的にニューラルネットワークの学習は

下記結果からBatchsizeを下げてFP32からFP16へ変更しても、精度は維持むしろ向上さらに学習時間も短縮

結論

畳込みニューラルネットワークの精度向上に寄与するテクニック(trickのうまい訳が見つからなかった)を紹介した。それらのテクニックをカテゴリ毎に、モデルのアーキテクチャデータの前処理損失関数学習率の調整と分類できる。

既存のモデルであるResNet-50、Inception-V3、MobileNetにおいて我々の提案したテクニックを用いると一律に精度が向上した。またテクニックが全てがうまく噛み合って精度がさらに向上する。下の図は提案したテクニックを一つずつ追加しながら精度を測った図、一つ増やすたびに精度が向上している。

また、Image Classificationとは別タスクであるObject DetectionやSemantic Segmentationにも効果があった。

参考


読んでいただきありがとうございます😄 Twitterでも呟いています 👉https://twitter.com/wakame1367