G検定 CNNまとめ

株式会社リュディアです。今回はG検定でも頻出の CNN (畳み込みニューラルネットワーク)についてまとめてみます。

CNNは主に画像認識、画像生成のような画像、つまり2次元データを扱うのに適したニューラルネットワークです。CNNの元祖としてネオコグニトロンLeNET が有名です。これら2つの手法は一部異なる箇所がありますが基本的な考え方は同じです。対比した表を以下につけておきます。

ネオコグニトロン_LeNET比較

以下の説明では畳み込み層プーリング層という言葉を使います。CNN の基本は "畳み込み層 + プーリング層" のセットを複数セット組み合わせ最終段に全結合層を付加したもの、と考えればよいと思います。

畳み込み層ではカーネルと呼ばれるフィルターを用いて各領域の特徴を抽出します。カーネルサイズをどうするのか?カーネルを適用する際のずらして方は?、つまりストライドがパラメータとなります。一般的にカーネルサイズは 3x3 や 5x 5 が多いようです。ストライドは 1 であることが多いですが計算量との兼ね合いで決めます。

プーリング層は畳み込み層で抽出した特徴を汎化して他のデータとしても扱えるようにします。特徴を厳密に学習すると画像の中で違う角度から写ったものを判別できなくなります。汎化するということは抽出した特徴を一般化することなので他の画像でも同一のものとして判別できるようにぼやかすと考えて問題ないです。そのためプーリング層の出力では活性化関数を使わないことが一般的です。活性化関数は白黒はっきりさせるためのもので汎化とは逆方向の処理になるためです。

全体ネットワークの出力が画像の場合は2次元データのままですが、画像認識の場合は全結合層と Yes/No を出力する活性化関数となります。画像分類の場合は全結合層と確率を表現するソフトマックス関数を適用します。

ただし最近は全結合層を用いない場合が増えており、1つの特徴マップに1つのクラスを対応させることで分類を行う Global Average Pooling と呼ばれる処理を用いることがほとんどです。

ILSVRCの歴史まとめに歴代の ILSVRCで活躍したチームを記載していますが、2012年の AlexNet、2014年の GoogLeNet、VGG、2015年の ResNet はいずれも CNN を拡張したものです。

では、ごきげんよう。

この記事が気に入ったらサポートをしてみませんか?