皆さんは、CNNとは何かご存知でしょうか。IT業界にいる方は耳にしたことがあるかもしれません。しかし、一般的にはまだまだ馴染みのない言葉で、聞いたことすらない方や、CNNとは何のことかわからない方も多いのではないでしょうか。
そこで本記事では、CNNとは何なのか、その概念や仕組み、特徴、そして似ている言葉としてあげられるRNNとの違いについて解説していきます。最後にはCNNの活用事例もご紹介しているので、ぜひ参考にしてみてください。
CNNとは?
そもそもCNNとは、「Convolutional Neural Network」の略語です。日本語では、「畳み込みニューラルネットワーク」と呼ばれており、データを元に直接学習することができるディープラーニングのためのものです。CNNは、いくつもの深い層を持っているニュートラルネットワークであり、物体や顔、シーンを認識するための画像認識の分野で活躍しているネットワークです。その名の通り、プーリング層や畳み込み層と呼ばれるいくつかの層を積み上げて構成されているのです。画像認識のタスクにおいて、優れた機能による高い精度でデータの重要な特徴を感知し、学習すると言われています。
CNNの仕組みや特徴について
では、CNNはどのような仕組みで成り立っていて、どのような特徴を持っているのでしょうか。下記でより詳しく見ていきましょう。
・構成要素
CNNは、多数の層を持っており、その層のそれぞれが画像検出を学習します。そのため、CNNの仕組みを理解するには、まず初めにCNNの構成要素について理解しなければなりません。
特徴量と特徴マップ
CNNにおいて画像処理を行う際に、フィルタを使用して入力層データ中でスキャンしたデータや、フィルター自体の持つデータとの差異を、畳み込みの結果として畳み込み層に書き込んだものを「特徴量」と呼びます。そして、入力層の全データをスキャンすることでできる、畳み込みの結果の値の集まりを「特徴マップ」と呼びます。
さらに、「畳み込み(convolution)」、「プーリング(pooling)」、「全結合層(Affine)」の3つの層についても理解しておく必要があります。
畳み込み層
畳み込み層とは、フィルターを使用して画像の特徴を抽出する層です。検出したい画像(入力画像と呼ばれます)を一連の畳み込みフィルターに通した後、それぞれのフィルターが画像の特定の特徴を活性化し、抽出します。CNNにおいて、非常に重要な役割を担っています。
プーリング層
続いてプーリング層とは、畳み込み層抽出された画像の特徴の解像度を一段階下げる役割を担う層です。特徴マップを、空間的な局所ごとに代表値に集約することによって、特徴マップの空間的な解像度を下げる動きをしています。一言で表すと、畳み込み層の情報を集約する層で、ダウンサンプリング層とも呼ばれます。
全結合層
そして最後は、全結合層です。全結合層は、通常のニューラルネットワークにおける隠れ層と出力層の役割を担っており、これまで出力してきた画像が私たちが日常で使うような、「犬」や「いちご」と言ったような一次元のものに判別できるようにします。
・画像処理の流れや仕組みについて
改めて、CNNにおける画像処理の流れや仕組みについて以下でまとめました。
- 畳み込み層で、入力画像にフィルターを用いてフィルター処理を行い、特徴を抽出する。(これにより、抽出されたデータが特徴マップ。)
- 処理した画像をプーリング層に流し込み、空間サイズを縮小する。
- 全結合層に流し込み、一次元出力ができる形態に変換する。
- 画像認識が可能になる。
このように、CNNを用いた画像処理は、手順自体は非常にシンプルです。馴染みのない方には、1つ1つの用語や仕組み、構造が複雑に感じるかもしれませんが、さほど難しいものではないのです。CNNは、通常のニューラルネットワークと似ていますが、入力データが画像であるという点のみ異なります。
CNNとRNNの違い
ここまで、CNNの仕組みや画像処理の流れ、構成要素について解説してきましたが、CNNと頻繁に混同されがちなのが、RNNです。そこで以下では、CNNとRNNの違いについて記載していきます。
前述した通り、CNNは日本語で畳み込みニューラルネットワークと呼ばれ、いくつもの深い層を持っており、画像認識の分野で活躍しているニューラルネットワークです。CNNでは、畳み込み層が主な学習部分です。構造的には、複数の畳み込み層を直線的に繰り返し使用するため、同じ層の使い回しはしません。一方でRNNは、再帰型ニューラルネットワークと呼ばれており、同じ全結合層を毎度使い回し、再帰的に使用します。これにより、CNNが画像認識によく用いられるのに対し、RNNは系列データの入力や作成に用いられることが多くあります。
つまり、CNNとRNNには構造の違いがあり、CNNでは空間方向に対して同じ畳み込みフィルタを再利用するのに対し、RNNでは再帰型によって系列データへの対応を行なっているのです。混同されがちなCNNとRNNですが、役割は明確に異なります。
CNNでできることとは?活用事例
では最後に、CNNでできることや活用事例をご紹介します。
類似検索機能
まず代表的なのが、画像の類似検索機能です。ホットペッパービューティーや、中国のアリババの通販サイトなどでは、自分が求めているデザインや商品を、画像で検索することができます。自分のスマホに保存した画像を、サイトまたはアプリ上で検索し、その画像と類似しているデザインや商品を表示する機能です。これらはまさにCNNを活用した事例であり、私たちの生活でもっとも想像しやすい事例の1つかもしれません。
画像説明文章の自動作成
また、Googleが開発した機能である、画像の説明文章の自動作成にもCNNが活用されています。この機能は、CNNを利用して画像の特徴や状況を分析させ、その情報をRNNに使用させることで可能になりました。画像認識のためのデータをRNNに使用させることで、文章の自動作成が実現しています。
このように、すでにCNNは活用されており、今後さらなる発展が期待されている技術なのです。
まとめ
いかがでしたか?今回は、CNNについて、概念や仕組み、特徴、そしてRNNとの違い、最後に活用事例をご紹介しました。今後、どのような活用方法が出てくるのか、CNNの技術の動きに注目です。