【機械学習】CNNをざっくり把握したかった

【機械学習】CNNをざっくり把握したかった


# cnn # 画像分類

CNNの概要

  • Convolutional Neural Network の頭文字を取ったもの 日本語では、畳み込みニューラルネットワークと言われる
  • 画像認識のために強さを持つ手法 (画像認識以外への応用レもあり。https://pao2.hatenablog.com/entry/2018/08/04/183937)
  • 2012年の画像認識コンペで一気に注目を浴びた手法
  • AI/ディープラーニングブームが起こるきっかけとなった手法

CNNの仕組み

  • ベースとなる考えは、単純な全結合のニューラルネット
  • 全結合層、アクティベーション層の他に、畳み込み(Convolution)層、プーリング(Pooling)層で構成されるネットワーク

畳み込み(Convolution)層

  • 全結合層の場合は、データの形状が無視されてしまう。 単なる1次元のデータとして扱ってしまうので画像らしい情報が抜け落ちてしまうという問題点がある。 (縦横28pxのデータだと独立な784個のデータで学習するだけになる)
  • Convolutionレイヤは画像の形状を正しく理解できる可能性がある

畳み込み層で実際に行われる処理 https://qiita.com/nvtomo1029/items/601af18f82d8ffab551e#52%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF%E5%B1%A4convolution%E3%83%AC%E3%82%A4%E3%83%A4

プーリング(Pooling)層

  • 縦横方向の空間を小さくする演算。 2×2マスの最大値を取るような処理を行うことで、入力データの小さなずれに強くなる。 (1ピクセルだけデータがずれた場合に誤差が少なくなる) 次元が削減されるので計算量が減少する。
  • 畳み込み層では、被りがある(同じデータが2回以上使われる)が、一般的にプーリング層は被りがないように処理される。 ※単純に最大値(または平均値など)を取るだけのため、学習するパラメーターはない。 Convolutionレイヤは画像の形状を正しく理解できる可能性がある

プーリング層で実際に行われる処理 https://qiita.com/nvtomo1029/items/601af18f82d8ffab551e#531%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E5%B1%A4%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF

全体のアーキテクチャ例

AlexNet(2012年のコンペで高精度を叩き出したモデル) http://cvml.ist.ac.at/courses/DLWT_W17/material/AlexNet.pdf

学習されるパラメータ

  • 畳み込み層のフィルターの値
  • 全結合層の重み

中間層の可視化例

CNNの畳み込み層やプーリング層は、画像の特徴を抽出して新たな画像を作るようなものになっています。 そのため、特徴を可視化することも可能です。

https://newtechnologylifestyle.net/vgg16networkvisual/

 

とても有名な本ですが、以下の本を元に勉強しました。 やっぱり自分で実装するのは理解度が雲泥の差ですね…(全部理解しきっていない部分もある)。

 

ゼロから作るディープラーニング