CNNについて
こんにちは。1年のhirotです。KCSでは主にAI班で活動しています。
と言っても、4月から12月にいたるまでに身に着けた知識はゼロに近く四捨五入したら初心者になるレベルですが…
しかし、今回はそんな僕が三田祭期間中に多少勉強したCNNの仕組みについて簡単に書いていきたいと思います。
★CNNとは
画像処理や音声認識など様々なところで使われるニューラルネットワークの一つです。主に「全結合層」「出力層」「畳み込み層」「プーリング層」の4層で構成されていて、これらを組み合わせることで処理を行えるという仕組みです。
例えば、「今持ってるたくさんの写真の動物が犬か猫か調べたい」という時に使用します。
★全結合層とは
1つの写真が持っている様々なデータをすべてまとめて扱いやすいように変換し、それにより得られたデータを活性化関数というもので差別化を行う層です。
例えれば、「この写真の動物の目と鼻と口は犬っぽい。だけど耳は猫っぽいなぁ」と識別します。
★出力層とは
全結合層で得られた結果を分析して、最終的な結果を出す層です。
例えれば、「犬成分の方が多い。だからこの動物は犬率75%だ」と出力します。
★畳み込み層とは
従来のニューラルネットワークは上の「全結合層」と「出力層」で構成されていました。しかし、ここで使われている「全結合層」にはデータをまとめる際に必要なデータを無くしてしまうという欠点があり、処理精度が高くありませんでした。
そこであらかじめ必要な情報を出しておくように改善され、その際用いられたのが「畳み込み層」です。
例えば、
と表される画像があった時、
畳み込みフィルタ-(特徴を浮かばせるもの)を通すと、
となり、出てきた緑色が特徴付けられた画像になります。
例えれば、「この動物は口が長くて、耳はピンと立っているな」と特徴を見つけます。
★プーリング層とは
取り扱っているデータの詳細情報を消去して、認識の幅を持たせる層です。
このように1つの画像のある程度の範囲の最大値をとったり、平均化を行ったりします。
例えれば、「この動物の鼻に水滴がついてるけど、これは情報の一つにいれなくても平気だな」と考慮しなくていい情報を無くします。
★そして全部合わせてCNN
初めに述べたようにCNNはこれらの層を合わせて機能します。
順番は「畳み込み層→プーリング層」を何回か行った後、得たデータで「全結合層→出力層」となります。
とても大雑把な仕組みはこのような感じです。
★最後に
かなり雑になりましたが、CNNの仕組みについて書かせて頂きました。
Deeplearningに触れたことが無い人にも分かって頂けたら幸いです。
何か間違いがあったらすいません_(。。;)_