kabaohのブログ

仕事ができなすぎて辛いので、趣味に逃げるカバ野郎

CNNってなんですか(1)

わかったことがたくさんあって、これ以上まとめるのを放置すると
書くのを諦めてしまうので、今日は予定を変更してわかったことを書きます。

本当は「Deep Learningってなんですか」っていうタイトルで書きたいんだけど
Deep Learningって明確な定義を見つけられなかたので、やめます。
代わりにCNNってなんですかっていうのを順を追って書いていきたい。

所詮ブログなので、間違い上等。
もしも違うところがあって、詳しい人がいたら後学のために指摘してください。

では始めていきます。

CNNってなんですか

Convolutional Neural Networkの略
よく画像認識の分野で使われるNeural Networkの一種

Neural Networkってなんですか

Neural(Neuronの) Network
その名の通り人間の脳細胞の動きを模した、機械学習のしくみ
(ちゃんというと数学モデルみたいなことになるのかしら)

人間の脳細胞?

f:id:kabaoh:20160902223354p:plain



脳細胞の動き?

f:id:kabaoh:20160902223925p:plain
これがくりかえされて、腕を動かすとか
そういう脳からの命令になるとどっかで聞いた

例えば、スポーツで同じ動きを繰り返すと、動きがスムーズになる。 これは、特定のNeuron同士の結合が強まり、命令がスムーズに出せるようになるから

...らしい。

これを模すとは

f:id:kabaoh:20160902224454p:plain



さらに、特定のNeuronとの結合の強さを表現したいので f:id:kabaoh:20160902224653p:plain

「重み」をかけてやれば良い

一番単純なモデルはパーセプトロンと呼ばれるやつ。
実際これ以外のモデルがあるのかよく知らない。
(制限ボルツマンマシンとかのノードもそうなのかしら?)


ともかく
これを次々とつなげたものがNeural Network


で、これで何ができるの???

一つのNeuronだと、A or Bが判断できます。
(パーセプトロンの場合、線形分離できる場合だけだけど)
(数式書いたり、説明してもいいんだけど、数式打つの辛いので単純パーセプトロンとかでググッてください)

複数のNeuronを組み合わせることで、もっと複雑な条件下でのA or Bを判断できたり 画像認識とかができます。

なんで画像認識できるの?

注意: 以下は、自分なりの理解です。違う可能性も大いにあります。

まず、画像をinputします
そして、その画像が何を表しているか教えてやります(例:猫)
これを画像をかえて何回も繰り返しinputします。 すると猫に共通するパターン(概念?)を見つけだしてくれます。

こういう部分があれば猫なんだと、理解してくれる。
あとは、判断させたい画像を新たにinputして、その部分があるかどうかを判断させる
これで、入力画像が猫 or not を判断できる。
...みたいな話っぽい  

猫などに共通するパターンをどうやってみつけるの

画像の一部分をトリミングしたり、ぼかしり、重ねあわせたりいろんな処理をさせます。
すると、なぜか共通パターンがうまれるっぽい。
なんでそんなことになるのか、よくわかっていないらしい。

画像のどの部分をトリミングして、どれくらいぼかすか、かさねあわせるか。
いろんな処理をすると、いろんな処理の組み合わせがうまれる。 結果いろんなパターンがうまれるが 本当に猫に共通するパターンを重視して どうでもいいパターンは無視したい

これを、さっきの「重み」と「しきい値」を変えることで決定させるのが Neural Networkで決定すべきパラメータ