導入
アンサンブル学習を用いることで単体モデルよりも優れた性能を出すことが期待されます。
今回はCIFAR10の画像分類においてアンサンブル学習の効果を試してみようと思います。
アンサンブル学習について
アンサンブル学習について何種類か紹介します。今回は異なる複数のモデルを用いるため下記の分類には該当しませんので飽くまで参考になります。
バギング
複数のモデルを組み合わせてモデルを作成する方法です。キーワードは複数の弱学習器で多数決、あるいは平均値をとることとなります。
Bootstrap aggregatingがバギングという名前の由来らしいです。
ブースティング
複数のモデルを組み合わせることはバギングと同じですが、こちらは直列的に組み合わせることが特徴です。前のモデルで間違えたところを補正するように学習します。
モデル選択
アンサンブルさせるモデルを選択したいと思います。
層数を変更する、チャンネル数を変更する、なども効果はありますが多様性のあるモデルを選択することで、より効果的に精度向上を図ることができます。
今回は以下の事前学習済みモデルを転移学習させ、単体精度とアンサンブル精度を比較していきます。
- ResNet18
- EfficientNet-B0
- DenseNet
学習
学習条件
ざっくりとした条件ですが下表に基づき学習します。
他にはアーリーストッピングや層化k-foldなど導入してます。
Item | Detail |
---|---|
バッチサイズ | 128 |
最適化アルゴリズム | AdamW |
学習率 | 0.001 |
学習結果
ResNet
層が浅く表現力が弱いためなのかF1スコアは最も低い結果になりました。
DenseNet121
ResNetと比較して精度は高くなりましたが、EfficientNetと比較すると精度はやや劣る結果になりました。
EfficientNet
EfficientNetは論文上でも過去のモデルと比較して、SoTAに近い精度を出しています。今回も同様、F1スコアは他二つに比べて最も優秀です。
アンサンブル結果
そしてこちらが3つのモデルをアンサンブルした結果です。
上段がResNet,DenseNet,EfficientNet単体での予測精度、下段がそれらをアンサンブルさせた予測精度となります。単体でも十分な精度を出せていますが、3つのモデルをアンサンブルさせることで精度を改善させることが確認できました。
特筆すべきは単なる多数決でアンサンブルさせた精度よりも確率平均としてアンサンブルさせることで更なる精度向上が図れました。
総括
今回、ResNet,DenseNet,EfficientNetを転移学習させた単体モデルとアンサンブルモデルとの精度比較を行いました。
EfficientNet単体でも高精度な結果となりましたが、多様なモデルとアンサンブルさせることで更なる精度向上が可能となりました。
実務上は精度を上げることとモデル作成→学習で発生する工数のバランスを見極めることが大切となりそうですが、Kaggleなどではメダルを獲得できるかどうかを分けるポイントとなるため非常に重要なテクニックの一つだと思います。