畳み込みニューラルネットワーク(CNN)

・畳み込み演算:

画像1

上の図のように画像は結局0~255の二次元の行列である。この二次元行列に以下の演算を行うことが畳み込み演算である。

画像2

左の行列が画像に相当する。真ん中の行列は畳み込みの重みw(フィルター)で、右の行列が畳み込み結果である。

・畳み込み層:画像など高次元データを処理する際に用いられる特殊なネットワーク構造。上記のフィルターの値を最適化することが畳み込みニューラルネットワークの学習を意味する。通常ではフィルター数が複数である。

・バイアス:

画像3

・パディング:画像の周囲に0を詰める(下記はpadding=1)

画像4

・ストライド:フィルターの移動数

画像5

・チャンネル:画像ではグレー画像(チャンネル=1)、カラー画像(RGB、チャンネル=3)がある。フィルターもチャネルがあり、入力画面にチャンネルを合わさなければいけない。

・プーリング層:max-pooling(下記)、average-poolingがある。

画像6

確認テスト:サイズ6×6の入力画像を、サイズ2×2のフィルタで畳み込んだ時の出力画像のサイズを答えよ。なおストライドとパディングは1とする。

回答:計算公式がある。

(入力サイズ+ 2*パディング - フィルターサイズ) / スライド + 1

( 6  + 2*1 - 2 )/1 + 1 = 7

・畳み込みニューラルネットワーク(CNN):通常のニューラルネットワーク(Dense、全結合ともいう)では一次の入力しか対応しない、画像を処理するには画像という二次元行列を一次元化(平坦化、flatten)する必要がある。畳み込み層は全結合と比べて非常にパラメータが少ないため、いまの画像処理の基本構造となっている。

画像7

以下のニューラルネットワーク構築図の表現もよく使われる

画像8

考察

・CNNは理解するのは簡単であるが、そのフィルターのパラメータの更新(学習)は数学的に複雑である。しかし、結局は掛け算の集まりであり、誤差伝搬を運用できる。幸いなことに、ディープランニングのフレームワークを使用する限りその過程を考慮する必要がない。

・学習の能力の強さだけ見ると全結合が一番強いが、計算量が膨大である。畳み込み層はこの膨大な計算量を解消するために使われている。CNNの最後の層は全結合を使用することがほとんどである。

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