イメージが大事
先日畳み込みニューラルネットの実装を学んだ際、そのモデルのイメージが無いとコードの長さや複雑さに圧倒されてしまうなと感じました。
そこで今回は畳み込みニューラルについて、私なりのイメージを共有したいと思います。皆さんの学習の一助になれば嬉しいです。
畳み込みニューラルネットは2段構成
畳み込みニューラルネットを考えるとき私はざっくりと畳み込み層とプーリング層とフィルターを思い浮かべます。この2つの層でフィルターがどのように使われるかを把握できると実際のコードを見たとき理解しやすいです。
畳み込み層
この層ではフィルターが1つ出てきます。このフィルターは入力データより小さいサイズで、少しづつずらしながら重ねることで入力データの特徴量を抽出します。
フィルターを通す様子から私は「畳み込み」を「データに含まれる情報を集約すること」と変換して考えています。
プーリング層
この層では入力データのチャンネル(入力データの次元とも考えられます)の数だけフィルターが登場します。例えば色付き画像データならRGBの3つの色の次元があるので、チャンネルは3になります。
このチャンネル毎に様々なフィルターを使って、畳み込み層と同じように特徴量を抽出します。
抽出した特徴量を活性化関数に入力してなにかしらのクラスに判別されます。
実際のコードではプーリング層の後に行列データをベクトルデータに変換する工程もありますが大事な部分はこれまでに説明した感じになります。
おわり
私なりの説明をしてみました。
「こう考えるといいよ」というアイデアをお持ちの方はコメントをくださると私も勉強になり助かります!