深層学習とは
深層学習とは様々な種類のニューラルネットワークを結合し構築されたネットワークです。
ニューラルネットワークとは、人間の神経細胞の仕組みを再現した計算モデルで、入力データに対して重み付けや活性化関数などの処理を行って出力データを生成します。
ニューラルネットワークは大きくフィードフォワード型のネットワーク、CNNネットワーク、RNNネットワークに分類できます。この中でも今回は主に画像認識の分野で多く採用されているCNNネットワークについて解説していきます。
深層学習は画像認識の他にも音声認識、将棋AIなど様々な場面で活用されており、深層学習に関する知識は今後より一層求められると考えられます。
ぜひ、この記事を最後までご覧いたければ幸いです。
CNNネットワーク解説
概要
CNNネットワークとは畳み込みニューラルネットワークとも呼ばれ主に画像データを扱う際などに用いられています。
また、CNNネットワークはネオコグニトロンというFukushima(1980)で提唱された、人間が持つ視覚野の神経細胞の画像の濃淡パターンを検出する単純型細胞と特徴の位置が変動しても同一の特徴であるとみなす複雑型細胞の2つの働きを模すという発想から生まれたネットワークを元に作られています。
基本動作としては畳み込み層とプーリング層を組み合わせることで複数の局所的な情報を徐々に取り出し、結合していくニューラルネットワークになります。
それでは畳み込み層とプーリング層での処理について詳しく見ていきましょう。
畳み込み層
畳み込み層は画像などの情報に対し畳み込み処理を行い、特徴を抽出する層になります。
具体的には入力(画像データであることが多いです)よりも小さいカーネル(フィルター)を使用して以下の様に入力とカーネルの値をそれぞれ掛け合わせて総和を取ることにより、出力として特徴マップへと変換していきます。
上式では𝑆を特徴マップ、𝐼を入力画像、𝐾をカーネル、𝑖, 𝑗を座標としています。
畳み込み処理の様子を図示すると以下のようになります。
このように畳み込み層ではフィルタの値をどうするかによって、入力から得られる特徴が変化します。
このような畳み込みの処理は人間の視覚野がもつ局所受容野に対応しており、移動普遍性の獲得に貢献しているとも言えます。例えば1ピクセルずれた物体を見ても、人間は同じ物体だと認識できるが、通常のニューラルネットワークでは、入力の位置がずれてしまうので全く別の入力として扱われてしまいますが、畳み込み処理を行うことによりこの様な位置のずれに強いモデルを構築することが可能となります。
プーリング層
続いてプーリング層について説明します。プーリング層とは局所的な領域からある決められたルールに従い重要な特徴のみを抽出するダウンサンプリング層であり、以下の図のような最大値プーリングや最小値プーリング、平均値プーリングなどが知られています。
上図からもわかる通り、プーリング層には学習すべきパラメータは存在しないので計算効率の改善が期待できます。また他にもプーリング層を使用することで画像のずれに対する頑健性を獲得することができることや次の層への入力データを小さくすることができること、出力の大きさを調整することで、可変サイズの入力が扱えるといったメリットもあります。
【参考】AlexNet
通常、画像認識モデルなどを構築する際は、畳み込み層やプーリング層を多数結合していくアプローチが取られます。
今回は参考としてAlexNetをご紹介します。
AlexNetは下図のように畳み込み層、プーリング層、畳み込み層、プーリング層、畳み込み層、畳み込み層、畳み込み層、プーリング層、全結合層(3層)という構造を持ち、2012年のILSVRCで圧倒的な精度を残しました。結果として今日につながるAIブームを作る立役者となりました。
ネットワーク学習方法【概要】
実際のAIプロジェクトの際はCNNネットワークなどを用いてモデルを構築した後に大量の学習データを用いてモデルのパラメータを学習します。
CNNネットワークの学習対象は畳み込み層です。畳み込み層ではフィルタの値をどうするかによって、画像から得られる特徴が変化しました。つまりCNNネットワークにおいて学習とはそれぞれのフィルタをどのような値にするかを学習していくということであり、このフィルタの値がフィードフォワード型ネットワークでの重みWに相当します。Wについて詳しく知りたい方は下記リンクを参考にしてください。
実際に学習する際はモデルの出力データや教師データなどから損失関数を定義し、損失関数が最小となるよう誤差逆伝播法を用いながら学習していきます。損失関数としては出力データと教師データの誤差の平均2乗和から算出されるMES(Mean Squared Error)などが有名です。
誤差逆伝播法など学習方法については後ほど解説記事を投稿しようと思います。
終わりに
以上、深層学習で最も基本となるCNNネットワークについての解説でした。
ネットワークの概要は掴んでいただけたかと思うので、より深く学習される方は専門書などの足がかりにしていただけますと幸いです。
ご清覧ありがとうございました。