CNN(畳み込みニューラルネットワーク)

Convolutional Neural Network (CNN)

ディープラーニング手法 重要度:高

概要

CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)は、画像認識を中心とした視覚的なデータ処理に特化したディープラーニングのアーキテクチャです。人間の視覚野の神経細胞の仕組みに着想を得て設計されており、畳み込み層(Convolutional Layer)、プーリング層(Pooling Layer)、全結合層(Fully Connected Layer)を組み合わせた構造を持ちます。

CNNの最大の特徴は、画像の局所的な特徴を効率的に抽出できる点です。浅い層ではエッジや色のグラデーションなどの低レベルな特徴を捉え、深い層ではそれらを組み合わせて物体の形状やパターンなどの高レベルな特徴を認識します。2012年のAlexNetの登場以降、CNNは画像認識の分野で革命的な成果を上げ、ディープラーニングブームの火付け役となりました。

詳細解説

畳み込み層(Convolutional Layer)

畳み込み層はCNNの中核をなす層です。小さなサイズの重み行列であるフィルタ(カーネル)を入力画像上でスライドさせ、各位置で入力とフィルタの要素ごとの積和演算を行います。この操作により、入力画像から局所的な特徴を抽出した「特徴マップ(Feature Map)」が生成されます。フィルタの重みは学習によって自動的に決定されます。

複数のフィルタを使用することで、エッジ検出、テクスチャ認識、特定のパターン検出など、異なる種類の特徴を同時に抽出できます。例えば、32個のフィルタを使えば32チャネルの特徴マップが出力されます。

パディングとストライド

パディング(Padding)とは、入力画像の周囲にゼロなどの値を追加する操作です。出力サイズを入力サイズと同じに保つ「Same Padding」と、パディングを行わない「Valid Padding」があります。ストライド(Stride)はフィルタを移動させる歩幅のことで、ストライドを2にすると出力の空間サイズが半分になります。

プーリング層(Pooling Layer)

プーリング層は、特徴マップのサイズを縮小する層です。代表的なプーリングには、領域内の最大値を取るMaxプーリングと、平均値を取るAverageプーリングがあります。プーリングの主な目的は、計算量の削減、パラメータ数の削減、そして特徴の位置に対する微小な変動への不変性(平行移動に対する頑健性)の獲得です。一般的には2×2のウィンドウでストライド2のMaxプーリングが使用されます。

全結合層(Fully Connected Layer)

CNNの最後に配置される層で、畳み込み層とプーリング層で抽出された特徴を元に、最終的な分類や予測を行います。特徴マップを1次元のベクトルに変換(Flatten)してから全結合層に入力します。出力層ではSoftmax関数(多クラス分類)やsigmoid関数(二値分類)が使用されます。

CNNの重要な特性:重み共有と局所結合

CNNでは同一のフィルタが画像全体に適用されるため、パラメータが共有されます(重み共有)。これにより、全結合ネットワークと比較してパラメータ数が大幅に削減されます。また、各ニューロンは入力全体ではなく局所的な領域(受容野)のみと接続されるため(局所結合)、空間的な階層構造を効率的に学習できます。

代表的なCNNアーキテクチャ

LeNet(1998年、LeCun):最初の実用的なCNNアーキテクチャです。手書き数字認識(MNIST)のために開発され、畳み込み層とプーリング層を交互に配置する基本構造を確立しました。

AlexNet(2012年、Krizhevsky):ILSVRC 2012で圧倒的な精度で優勝し、ディープラーニングブームの契機となりました。ReLU活性化関数、ドロップアウト、GPUによる並列計算を活用した8層のネットワークです。

VGGNet(2014年、Simonyan & Zisserman):3×3の小さなフィルタを多数積み重ねることで、より深いネットワーク(16〜19層)を実現しました。構造がシンプルで理解しやすいため、転移学習のベースモデルとして広く使われました。

GoogLeNet / Inception(2014年、Szegedy et al.):Inceptionモジュールという、異なるサイズのフィルタを並列に適用する構造を導入しました。22層の深いネットワークでありながら、パラメータ数を大幅に削減しています。

ResNet(2015年、He et al.):残差接続(Residual Connection / Skip Connection)を導入し、152層という非常に深いネットワークの学習を可能にしました。残差接続により勾配消失問題を緩和し、層を深くするほど精度が向上するという理想的な性質を実現しました。ILSVRC 2015で優勝しています。

歴史・背景

CNNの起源は、1979年の福島邦彦によるネオコグニトロンに遡ります。ネオコグニトロンは、ヒューベルとウィーゼルが発見した視覚野の単純型細胞と複雑型細胞の構造に着想を得たものです。1989年にはヤン・ルカン(Yann LeCun)が誤差逆伝播法を用いてCNNを訓練する手法を開発し、1998年にはLeNetとして手書き数字認識に応用しました。

しかし、当時のコンピュータの計算能力では大規模なCNNの訓練は困難であり、SVMなどの機械学習手法に主流の座を譲っていました。状況が一変したのは2012年のILSVRC(ImageNet Large Scale Visual Recognition Challenge)です。アレックス・クリジェフスキーらが開発したAlexNetが、従来手法のエラー率26%を大幅に上回る16%という精度を達成し、ディープラーニングの威力を世界に示しました。

以降、VGGNet(2014年)、GoogLeNet(2014年)、ResNet(2015年)と、毎年のように画期的なCNNアーキテクチャが発表されました。2020年以降はVision Transformer(ViT)など、Transformerベースの画像認識モデルも台頭していますが、CNNは依然として多くの実用的なタスクで使用されています。

具体的な事例

  • 画像分類:ImageNetのような大規模画像データセットで、1000クラスの物体を分類するタスク。AlexNet以降のCNNモデルは人間の認識精度を上回る性能を達成しています。
  • 物体検出:画像内の物体の位置(バウンディングボックス)と種類を同時に推定するタスク。YOLO、SSD、Faster R-CNNなどのモデルがCNNをバックボーンとして使用しています。
  • セマンティックセグメンテーション:画像のピクセルごとにクラスを割り当てるタスク。FCN(Fully Convolutional Network)、U-Netなどが代表的です。医療画像解析や自動運転で活用されています。
  • 顔認識:FaceNetなどのCNNベースモデルが、顔認証システムやセキュリティ分野で利用されています。
  • 医療画像診断:レントゲン画像やCT画像から病変を検出するシステムにCNNが活用されています。皮膚がんの診断において皮膚科医と同等の精度を達成した事例も報告されています。
  • 自動運転:車載カメラからの映像をCNNで処理し、歩行者・車両・標識などの検出を行っています。

G検定での出題ポイント

G検定では、CNNに関して以下のような内容が出題される傾向があります。

  • 畳み込み層・プーリング層・全結合層の役割と構造
  • フィルタ(カーネル)による特徴抽出の仕組み
  • パディングとストライドの概念
  • Maxプーリングの役割(ダウンサンプリング、位置不変性)
  • 代表的なCNNアーキテクチャの名前と特徴(LeNet、AlexNet、VGGNet、GoogLeNet、ResNet)
  • AlexNetがILSVRC 2012で優勝し、ディープラーニングブームの契機となったこと
  • ResNetの残差接続(Skip Connection)の仕組みと効果
試験対策のポイント
  • 畳み込み層は「フィルタをスライドさせて局所的な特徴を抽出」する層であることを理解する
  • プーリング層は「特徴マップのサイズを縮小」し「位置の微小変動に対する頑健性」を得る層であることを覚える
  • 代表的なCNNの系譜を時系列で覚える:LeNet(1998) → AlexNet(2012) → VGGNet(2014) → GoogLeNet(2014) → ResNet(2015)
  • AlexNet(2012)が画像認識コンペで圧勝し、第3次AIブームの火付け役となった歴史を押さえる
  • ResNetの残差接続(Skip Connection)は勾配消失問題を緩和し、非常に深いネットワークの学習を可能にした