qshinoの日記

Powershell関係と徒然なこと

CNN の基礎

CNNの基礎

最近AIと言えば、ディープラーニングやCNN / Convolutional Neutal Netorkという言葉と共に語られている。その中でCNNとは何かを基礎から説明したものが中々見つからない。そこで、簡単にまとめる。

CNNの構造例

良くあるCNNの構造

(Convolution  N + Pooling)  M + Fully Connected * K

N : ~5 のフィルタ M: 〜30前後 K: 0..2

SoftMax関数を使った層がある場合もある。

CNN の階層

CNNの主要な階層は下記三種類。

  1. Convolution 層
  2. Pooling層
  3. Fully Connected層

Convolution層

日本語では畳み込み層お予備、filterを適用して畳み込み計算を行う層。複数のfilterがよく使われる。

Pooling

圧縮して扱いやすくする。例えば、2x2の行列を最大値一つに圧縮する。

Fully Connected

全結合ネットワークにより判断を行う。 各出力ノードは、例えば y = ∑k_i * x_i

filter

元データに適用する行列。

出力= filter( 元データ )

出力は内積

フィルタに必要なパラメータは、

  1. フィルタの数K
  2. 移動幅F
  3. パディングP
  4. 大きさS

元画像の両端に0パディングPサイズのパディングをし、大きさSのフィルタを移動幅Fでズラしながら適用する。

y = wT x + b

y product w filter b bias T 転置

ReLU

活性化関数として、良く使われる。

Softmax関数

参考

https://qiita.com/icoxfog417/items/5fd55fad152231d706c2

StanfordのCNN講座

http://cs231n.stanford.edu/index.html