【初心者向け】CNN(畳み込みニューラルネットワーク)とは?画像認識を支える仕組みを徹底解説(第2回)

前回はディープラーニングの全体像を説明しました。今回はその中でもとくに画像認識で大活躍している CNN(Convolutional Neural Network)を詳しく見ていきましょう。

1. なぜCNNが必要だったのか?

普通のニューラルネット(全結合)の問題点

100×100ピクセルのカラー画像を扱うと…

入力ニューロン数 = 100 × 100 × 3(RGB) = 30,000個
次の層が1,000個なら → 重みは 30,000 × 1,000 = 3,000万個!
  • パラメータが爆発的に増える
  • 「猫が画像の左にいるか右にいるか」で別物として扱われる
  • 画像の空間的な構造(隣のピクセルとの関係)を無視してしまう

CNNはこれらを 「畳み込み」 という仕組みで解決します。

2. CNNの3つの核となる仕組み

① 畳み込み層(Convolution Layer)

小さなフィルタ(カーネル)を画像にスライドさせて特徴を抽出します。学習が進むと、あるフィルタは「縦のエッジ」に反応し、別のフィルタは「横のエッジ」に反応…と、それぞれ異なる特徴を検出するようになります。

  • フィルタは画像全体で 共有 される→パラメータが激減
  • 位置がずれても同じ特徴を検出できる(並進不変性)

② 活性化関数(ReLU)

畳み込みの結果に 非線形性 を加えます。

ReLU(x) = max(0, x)   ← マイナスは0、プラスはそのまま

シンプルですが、これがないと層を重ねても線形変換のままで意味がなくなります。

③ プーリング層(Pooling Layer)

特徴マップを縮小して、重要な情報だけ残します(例:2×2ブロックの最大値を取る Max Pooling)。

  • データ量を減らして計算を高速化
  • 多少の位置ずれに強くなる
  • 過学習を抑える

3. CNN全体の構造

入力画像
   ↓
Conv → ReLU → Conv → ReLU → Pooling   (低レベル特徴)
   ↓
Conv → ReLU → Conv → ReLU → Pooling   (中レベル特徴)
   ↓
Conv → ReLU → Pooling                  (高レベル特徴)
   ↓
全結合層 → Softmax
   ↓
[猫: 0.92, 犬: 0.05, 鳥: 0.03]

特徴抽出パート(畳み込み+プーリング)分類パート(全結合)の2段構えがポイントです。

4. 重要な用語

用語意味
カーネル / フィルタ畳み込みで使う小さな行列(3×3や 5×5 など)
ストライドフィルタをずらす歩幅
パディング入力の周りを0で埋めてサイズ縮小を防ぐ
特徴マップ畳み込みの出力。フィルタの数だけできる
チャンネルRGBの3、または特徴マップの枚数

5. 歴史的な代表モデル

モデル特徴
LeNet-51998元祖CNN。手書き数字認識
AlexNet2012ImageNet優勝、ディープラーニングブームの火付け役
VGG20143×3フィルタを重ねるシンプルな構造
GoogLeNet (Inception)2014複数サイズのフィルタを並列に使う
ResNet2015「残差接続」で100層超えを可能に。今も基盤
EfficientNet2019精度と計算量のバランスを最適化

6. CNNが活躍する分野

  • 画像分類:何が写っているか判定
  • 物体検出:YOLO、Faster R-CNN(位置も特定)
  • セグメンテーション:U-Net(ピクセル単位で分類、医療画像で活躍)
  • 顔認識:FaceNet
  • 画像生成:GANのベースとしても使用

7. CNNの限界と今後

近年は Vision Transformer (ViT) が画像認識でもCNNに匹敵・凌駕する成果を出しています。ただし、データが少ないとき計算リソースが限られるエッジデバイスなど、CNNは依然として強力な選択肢です。

まとめ

CNNは 「畳み込み」で画像の特徴を抽出し、「プーリング」で要点を残し、シンプルな特徴から複雑な特徴を組み上げていく 仕組みです。

とはいえ、ここまで読んで「隠れ層」と「畳み込み」が何となく難しい…と感じた方も多いはず。次回はこれらを もっとやさしいたとえ話 で解説します!

コメント

タイトルとURLをコピーしました