畳み込みニューラルネットワーク(CNN)
・畳み込み演算:
上の図のように画像は結局0~255の二次元の行列である。この二次元行列に以下の演算を行うことが畳み込み演算である。
左の行列が画像に相当する。真ん中の行列は畳み込みの重みw(フィルター)で、右の行列が畳み込み結果である。
・畳み込み層:画像など高次元データを処理する際に用いられる特殊なネットワーク構造。上記のフィルターの値を最適化することが畳み込みニューラルネットワークの学習を意味する。通常ではフィルター数が複数である。
・バイアス:
・パディング:画像の周囲に0を詰める(下記はpadding=1)
・ストライド:フィルターの移動数
・チャンネル:画像ではグレー画像(チャンネル=1)、カラー画像(RGB、チャンネル=3)がある。フィルターもチャネルがあり、入力画面にチャンネルを合わさなければいけない。
・プーリング層:max-pooling(下記)、average-poolingがある。
・確認テスト:サイズ6×6の入力画像を、サイズ2×2のフィルタで畳み込んだ時の出力画像のサイズを答えよ。なおストライドとパディングは1とする。
・回答:計算公式がある。
(入力サイズ+ 2*パディング - フィルターサイズ) / スライド + 1
( 6 + 2*1 - 2 )/1 + 1 = 7
・畳み込みニューラルネットワーク(CNN):通常のニューラルネットワーク(Dense、全結合ともいう)では一次の入力しか対応しない、画像を処理するには画像という二次元行列を一次元化(平坦化、flatten)する必要がある。畳み込み層は全結合と比べて非常にパラメータが少ないため、いまの画像処理の基本構造となっている。
以下のニューラルネットワーク構築図の表現もよく使われる
考察
・CNNは理解するのは簡単であるが、そのフィルターのパラメータの更新(学習)は数学的に複雑である。しかし、結局は掛け算の集まりであり、誤差伝搬を運用できる。幸いなことに、ディープランニングのフレームワークを使用する限りその過程を考慮する必要がない。
・学習の能力の強さだけ見ると全結合が一番強いが、計算量が膨大である。畳み込み層はこの膨大な計算量を解消するために使われている。CNNの最後の層は全結合を使用することがほとんどである。
この記事が気に入ったらサポートをしてみませんか?