社会人博士を始めるにあたり、CNNの様々なモデルやテクニックについて勉強したので、忘れないようまとめておきます。
体験談も書いていますので、よければそちらもご覧ください。
参考文献は以下のサーベイ論文です。図もこちらから引用させていただきました。
ILSVRCで振り返るCNNの進化
・AlexNet, ZFNet(2012, 2013)
それまでのデファクトスタンダードだった、SIFT+Fisher Vector+SVMに大差をつけて優勝。
各パラメータはWeight decay(l2正則化)により正則化が行われている。lossが減少しなくなったタイミングで、学習率を1/10にする。
この最適化手法は、現在においてもベストプラクティス。
全結合層部分のパラメータが多く、過学習を起こしやすいため、dropoutにより抑えている。しかし、学習ステップが2倍になったと報告されている。
1層目のカーネルが大きすぎるため、極端に高周波、低周波の情報が取得されてしまう。また、ストライドも大きいため、エリアシングを起こしていた。
→ZFNetで改善された。
・GoogLeNet(2014)
図1のような、Inceptionモジュールが導入される。
本来なら、5x5のフィルタだけで表現できるはずだが、パラメータ数が増えすぎてしまう
→明示的にフィルタサイズを複数にし、パラメータ数を削減する
Global Average Poolingを最終層に導入し、全結合層を利用しない
→パラメータ数を削減し、過学習を防ぐ。このGAPの利用は、現在でもベストプラクティス。
・VGGNet(2014)
・すべて3x3の畳み込みにした
5x5の畳み込みは、2層の3x3畳み込みと同一のreceptive fieldでパラメータが25→18に削減
・Xavierの初期値を用いることで、深い層の学習を可能にした
・ResNet(2015)
図2に示すResidualモジュールを利用する。ショートカットを用いることで、より深い層のネットワークを学習可能。
ReLUを用いる場合の初期値を導出(Heの初期値)
・SENet(2017)
チャンネル方向のAttention機構。基本的にはどのネットワークにも適用可能。
・Xception
Inceptionの改良。Separable convolution(depthwise convolutionとpointwise convolutionに分解)を用いることで、パラメータ数を削減。結果的に、ResNetやInception-v3よりも高精度な認識性能。
学習時間と性能比較
モデルによって学習時間がかなり差があるようです。
まとめ
VGGやResNetなど、たくさんあるCNNのネットワークについて、サーベイ論文をもとに解説しました。
意外にあまり認識されていないかもしれませんが、CNNは音声データにも非常によく使われます。
以下の記事では、ミスチルの曲分類の実験やアマゾンエコーに使われているCNN技術について解説していますので、よければそちらもご覧ください。
ys0510.hatenablog.com
ご意見、ご質問、調べてほしいことなどあれば、コメントください。
励みになりますので、お気に入り登録もよろしくお願いいたします!