畳み込みニューラルネットワーク(Convolutional neural network)

CNN

畳み込みニューラルネットワーク(Convolutional neural network; CNN)は、画像解析を行う深層学習のアルゴリズムの一つである。CNN は畳み込みとニューラルネットワークの 2 つの部分からなる。CNN では、まず、入力された画像に対して畳み込み処理を適用し、入力画像から特徴を抽出する。次に、その特徴をニューラルネットワークに入力し、分類させる。畳み込み演算を行うことで、チャンネル数を増やしたり、チャンネル数を減らしたりすることができる。

畳み込みニューラルネットワークは、特徴を抽出するための畳み込み層と分類を行うためのニューラルネットワークで構成されている。

畳み込み処理

畳み込み処理は、一般的に畳み込み演算とプーリング演算からなる。畳み込み演算は、画像全体に対してフィルタをかけて、そのフィルタを通して、画像の局所領域の特徴を検出する。プーリング演算は、畳み込み演算により得られた特徴量をノイズに対してより頑健な特徴量に仕上げている。

畳み込み演算

畳み込み演算では、入力画像(行列データ)の全体に対して、行列上 1 マスずつ動かしながら、フィルタをかけている。例えば、3 × 3 の行列を用意して、これをフィルタとして、モノクロ画像(1 チャンネル)の左上から畳み込み演算を行うと次のようになる。

畳み込みニューラルネットワークの畳み込み層の例1

次に、右へ 1 ピクセルをずらして、もう一度畳み込み演算を行う。

畳み込みニューラルネットワークの畳み込み層の例2

右へ 1 ピクセルをずらして、畳み込み演算を行う。

畳み込みニューラルネットワークの畳み込み層の例3

右へ 1 ピクセルをずらして、畳み込み演算を行う。

畳み込みニューラルネットワークの畳み込み層の例4

1 行目の畳み込みが完了すると、2 行目に移動してから引き続き畳み込み演算を行う。

畳み込みニューラルネットワークの畳み込み層の例5

このような畳み込み演算を行うと、最終的に画像は次のように畳み込まれる。

畳み込みニューラルネットワークの畳み込み層の例6

ゼロパッティング

畳み込み演算を行うと、画像のサイズ上下 1 ピクセルずつ、左右 1 ピクセルずつ小さくなる。畳み込み演算によって画像が小さくなるのを防ぐために、入力画像(行列)の周りにゼロを埋めるのが一般的である。これをゼロパッティングという。

畳み込みニューラルネットワークで、ゼロパッディングさせることによって畳み込みによるサイズ縮小を抑えることができる。

畳み込み演算(カラー画像)

カラー画像の場合は、R、G、B の 3 つのチャンネルが存在する。この場合、R、G、B それぞれのチャンネルに対してフィルタをかけて、それぞれの畳み込み後の行列の総和を計算して、1 枚の新しいチャンネルを出力する。

RGBカラー画像の畳み込みニューラルネットワークの畳み込み層の例1

もう 1 セットのフィルタ行列を用意することで、新たにチャンネルを 1 つ出力できる。

RGBカラー画像の畳み込みニューラルネットワークの畳み込み層の例3

さらに別の 1 セットのフィルタ行列を用意することで、新たにチャンネルを 1 つ出力できる。

RGBカラー画像の畳み込みニューラルネットワークの畳み込み層の例3

このようにフィルタ行列を数多く用意することで、複数のチャンネルを新たに生成できるようになる。以下のように、1 枚のカラー画像を入力すると、うまくフィルタ行列の値を調整することで、横線の特徴量を検出できたり、縦線の特徴量を検出できたり、あるいは輪郭線を検出できたりすることができるようになる。フィルタ行列の各要素の値を、学習を通して決めている。

RGBカラー画像の畳み込みニューラルネットワークの畳み込み層の例4

最大値プーリング

プーリング演算では、ある大きさの枠を決めて、その枠を既存画像の行列データに当てはめてから、その領域内にあるデータに対して何らかの演算を行なっている。CNN では、一般的には、枠領域内に存在している数値のうち最大値を出力 max pooling が行われている。プーリング演算によって画像サイズが大きく減少し、より特徴的な情報しか残らなくなる。例えば、3 × 3 の枠で max pooling を行うと、次のようになる。

畳み込みニューラルネットワークのプーリング層の計算例1

プーリング演算は、畳み込み演算とは異なり、マス目を 1 ずつ動かすのではなく、枠線がオーバーラップしないように画像全体に対してプーリング演算を行う。

畳み込みニューラルネットワークのプーリング層の計算例2

このプーリング演算を画像の終わりまで行うと、次のようになる。

畳み込みニューラルネットワークのプーリング層の計算例2

References

  • 定番の Convolutional Neural Network をゼロから理解する. DeepAge. 2016. LINK: Website