ディープラーニングの中でも画像を認識させる手法は研究が盛んにおこなわれています。
中でも「畳み込みニューラルネットワーク(CNN)」は有名な手法です。
それでは、「畳み込みニューラルネットワーク(CNN)」とは、どのようような事に用いられる手法で、どのような構造をしているのでしょうか。
今回は、「畳み込みニューラルネットワーク(CNN)」について学習していきます。
このブログは底辺フリーランサーがG検定を取得して人生を変えようと努力する日記です。
目次
畳み込みニューラルネットワーク(CNN)の基本

Neural nodes, connected together with wired links in electronic cyberspace. 3D rendering image on the subject of ‘Artificial Intelligence’.
畳み込みニューラルネットワーク(CNN)は、順伝播型ネットワークの一種です。
主に画像認識に応用されます。
畳み込みニューラルネットワーク(CNN)の構造は、畳み込み層とプーリング層によって構成されています。
畳み込みニューラルネットワーク(CNN)の畳み込み層とプーリング層は、隣接している層の特定ユニットだけが結合しています。
畳み込みニューラルネットワーク(CNN)の構成は、入力層から出力層へと畳み込み層とプーリング層の順で並んでいます。
隣接している層の間のすべてのユニットが結合している全結合層が配置されます。
入力層近くで画像の局所的な特徴を抽出し、出力層に近づくにつれて画像の全体的な特徴を抽出していきます。
畳み込みニューラルネットワーク(CNN)の流れ
畳み込み層で「パディング」をおこないます。
「パディング」によって入力画像の縁を固定値で埋めます。
このことで、入力画像と同じサイズの出力結果(出力マップ)を得られます。
その後、一定の画素分だけずらしながら「畳み込み」を計算していきます。
「畳み込み」とは、入力画像とそれに対応するフィルタの要素との間の積を計算し、これらの和を求めることです。
一定の画素分だけずらすことは「ストライド」と呼びます。
最終的にこの流れから得られた畳み込みの値に活性化関数を適用させます。
畳み込み層における重みは全ユニットで同じ。
これを「重みの共有」と呼びます。
そのため、畳み込み層のパラメータ数は全結合層のパラメータと比べて減少して、計算量が少なくなる特徴があります。
プーリング層は基本的に畳み込み層の後に配置されています。
プーリングは、最大値や平均値を用いて入力データをダウンサンプリングしています。
畳み込み層で抽出された特徴の位置感度を下げることで、画像内の位置が変化した場合でもプーリング層の出力が変わらないようにしています。
畳み込みニューラルネットワークの「層数」「層内のニューロン数」「フィルタサイズ」「パディングの方法」「ストライド幅」「プーリングの方法」はすべてハイパーパラメータと見なせます。
入力画像に対して、「グレースケール化」や「平滑化」、「ヒストグラム平均」などの前処理をおこなうことが多くあります。
グレースケール化:カラー画像をモノクロ画像に変換。計算量を削減する。
平滑化:細かいノイズを除去。
ヒストグラム平均:画像全体の明暗を平均化させて、コントラストが高い画像を得る方法。
代表的なモデルの紹介
1988年に提案された「LeNet」は畳み込みニューラルネットワーク(CNN)の元祖となるネットワークです。
多層のCNNにはじめて誤差逆伝播法が使用されました。
2012年にILSVRCで優勝した「AlexNet」、2014年に優勝した「インセプションモジュール」というブロックから構成される「GoogLeNet」があります。
「インセプションモジュール」は、複数の畳み込み層を並列に適用し、それぞれの畳み込み計算の結果を最後に連結します。
オックスフォード大学で開発された畳み込み13層、全結合層3層で計16層あるネットワークで構成される「VGG16」があります。
2015年には、Microsoftが開発した「ResNet」の精度が人間レベルに達したと注目を集めました。
ResNetは、スキップコネクションを用いた残差を学習することで最大1,000層以上の深いニューラルネットワークを構築します。
スキップコネクションは、2つの層をつないで、そのまま値を渡します。
スキップコネクションを用いれば、深いニューラルネットワークで学習できます。
畳み込みニューラルネットワーク(CNN)は、層の数を増やすと、パラメータ数が膨大になりすぎて学習が困難になりました。
「AlexNet」のパラメータ数は6,000万個もありましたが、「ResNet」はこの問題を解消し、層が深くなっても学習ができるようになりました。
ジェフリー・リントン達によって2017年に提案されたカプセルネットワークは、従来のニューラルネットワークの性能を超えるものとして注目されています。
これまでの畳み込みニューラルネットワーク(CNN)は、プーリングによって特徴間の空間的な関係が失われてしまう問題がありました。
カプセルネットワークは、空間情報をベクトルとして出力することにより、選択的に次の層へ情報を渡します。
学習済みモデルの利用
既存のニューラルネットワークモデルを活用する手法に「転移学習」と「蒸留」があります。
それぞれの用語を解説していきましょう。
転移学習
転移学習は、既存の学習モデルを新しい課題のデータに利用する方法です。
既存の学習モデルの重みを変更しないので、小規模なデータと少ない計算量でも学習モデルを作成可能です。
蒸留
蒸留は、大規模なニューラルネットワークのモデルを入出力を小規模なモデルに学習させる手法。
少ない計算量で学習することができるようになり、過学習が起こりにくくなります。
今回のテスト結果
畳み込みニューラルネットワーク(CNN)は、ディープラーニングの中でも特に研究が進んでいる手法であり、内容も多少難しいです。
畳み込みネットワーク(CNN)がどのような構造をしているかを確認していきましょう。
ということで、今回のテスト結果です。
・「ディープラーニング G検定 要点整理テキスト&問題集」
第5章 ディープラーニングの基本
21問中5問正解(正答率23%)
⇒畳み込みニューラルネットワーク(CNN)は、専門的な用語がたくさん出てきます。これらの用語を流れの中で覚えて、位置づけていくことが大事です。ということで、正答率が低いので何度も練習しようと思います。
これまでの学習については以下の通りです。