こんにちは、すきにーです。
今日はCNNについて書こうと思います。
①CNNとは
CNNとは「convolutional nearal network」の略であり、
日本語にすると「畳み込みニューラルネットワーク」と訳されます。
画像認識の分野でよく使われるニューラルネットワークです。
畳み込みニューラルネットワークときいて、
「畳み込みとは何ぞや?」と思いますよね。
もうちょっとで説明しますね。
先にCNNの構造を説明します。
②CNNの構造
CNNは主に3つの層構造で構成されています。
・畳み込み層
・プーリング層
・全結合層
です。
これらが合わさることで、画像を認識できるようになるんです。
すごいですよね。
③畳み込み層の役割
畳み込み層の役割は、一言でいえば「畳み込む対象の特徴を抽出すること」です。
フィルター(カーネル)を使って、画像とフィルターの値を掛け合わせます。
そうすることで特徴が抽出されます。
(特徴が抽出される仕組みまで書きたいんですけど、うまく言葉にかけないですね。
アウトプットって難しい)
④プーリング層の役割
プーリング層の役割は「重要な情報を残しながら情報を縮小すること」になります。
この画像だと最大値を残して他をなくしていますね。
こうすることで、画像内で対象物の位置がずれたり、角度が変わっても対応できるようになります(ロバスト性が向上するとも言います)。
⑤全結合層の役割
全結合層では、最終的な識別を行うために、情報を一次元にします。
これは猫だ!とか、これは海が写った風景画だ!とかを判断できるようにする前準備って感じです。
⑥出力層
出力層で最終的な識別を行います。
これは猫だ!とか、これは海が写った風景画だ!とかを判断します。
畳み込み層、プーリング層でやってきたことを全結合が一次元にまとめて、
出力層が結果を発表するという流れですね。
⑥活性化関数
畳み込み層でReLu関数
全結合層でもReLu関数
出力層でsoftmax関数
を使うことが多いです。
⑦終わりに
これで畳み込み層に関する説明は終わりです。
コンピューターは画像を視ることはできないけど、認識することはできるというのはすごいですね。
たとえば猫がどういう姿をしているのか、視覚的には分からないけど、
画像の特徴を把握することで猫と認識できているというのは想像がつかないですね。
次回はtensorflowを使ったCNNの実装をやっていこうか、RNNの説明をしようかで迷ってます。
以上です。
Qiita初記事でした。
読んでいただきありがとうござました。