CNNってなんですか(1)
わかったことがたくさんあって、これ以上まとめるのを放置すると
書くのを諦めてしまうので、今日は予定を変更してわかったことを書きます。
本当は「Deep Learningってなんですか」っていうタイトルで書きたいんだけど
Deep Learningって明確な定義を見つけられなかたので、やめます。
代わりにCNNってなんですかっていうのを順を追って書いていきたい。
所詮ブログなので、間違い上等。
もしも違うところがあって、詳しい人がいたら後学のために指摘してください。
では始めていきます。
CNNってなんですか
Convolutional Neural Networkの略
よく画像認識の分野で使われるNeural Networkの一種
Neural Networkってなんですか
Neural(Neuronの) Network
その名の通り人間の脳細胞の動きを模した、機械学習のしくみ
(ちゃんというと数学モデルみたいなことになるのかしら)
人間の脳細胞?
脳細胞の動き?
これがくりかえされて、腕を動かすとか
そういう脳からの命令になるとどっかで聞いた
例えば、スポーツで同じ動きを繰り返すと、動きがスムーズになる。
これは、特定のNeuron同士の結合が強まり、命令がスムーズに出せるようになるから
...らしい。
これを模すとは
さらに、特定のNeuronとの結合の強さを表現したいので
「重み」をかけてやれば良い
一番単純なモデルはパーセプトロンと呼ばれるやつ。
実際これ以外のモデルがあるのかよく知らない。
(制限ボルツマンマシンとかのノードもそうなのかしら?)
ともかく
これを次々とつなげたものがNeural Network
で、これで何ができるの???
一つのNeuronだと、A or Bが判断できます。
(パーセプトロンの場合、線形分離できる場合だけだけど)
(数式書いたり、説明してもいいんだけど、数式打つの辛いので単純パーセプトロンとかでググッてください)
複数のNeuronを組み合わせることで、もっと複雑な条件下でのA or Bを判断できたり 画像認識とかができます。
なんで画像認識できるの?
注意: 以下は、自分なりの理解です。違う可能性も大いにあります。
まず、画像をinputします
そして、その画像が何を表しているか教えてやります(例:猫)
これを画像をかえて何回も繰り返しinputします。
すると猫に共通するパターン(概念?)を見つけだしてくれます。
こういう部分があれば猫なんだと、理解してくれる。
あとは、判断させたい画像を新たにinputして、その部分があるかどうかを判断させる
これで、入力画像が猫 or not を判断できる。
...みたいな話っぽい
猫などに共通するパターンをどうやってみつけるの
画像の一部分をトリミングしたり、ぼかしり、重ねあわせたりいろんな処理をさせます。
すると、なぜか共通パターンがうまれるっぽい。
なんでそんなことになるのか、よくわかっていないらしい。
画像のどの部分をトリミングして、どれくらいぼかすか、かさねあわせるか。
いろんな処理をすると、いろんな処理の組み合わせがうまれる。
結果いろんなパターンがうまれるが
本当に猫に共通するパターンを重視して
どうでもいいパターンは無視したい
これを、さっきの「重み」と「しきい値」を変えることで決定させるのが Neural Networkで決定すべきパラメータ