
CNNは「画像認識・画像処理」で圧倒的な性能を発揮するために作られたニューラルネットワークの構造です。 現在は画像だけでなく、音声スペクトログラム、動画、医療画像、自動運転などほぼ全ての「空間的・局所的な構造を持つデータ」に使われています。
1. CNNが普通のニューラルネットワークと違う最大のポイント3つ
| 普通の全結合NN(MLP) | CNNの特徴 |
|---|---|
| すべてのニューロンがすべて繋がっている | 局所的にしか繋がっていない(局所結合) |
| 位置情報が無視される | 位置情報が非常に重要(同じパターンがどこにあっても検知できる) |
| パラメータ数が爆発しやすい | パラメータ共有で劇的に少ない |
→ これにより「画像が大きくなっても計算量が抑えられ、かつ翻訳不変性(同じ模様がどこにあっても認識できる)」が得られる
2. CNNの3大要素
① 畳み込み層(Convolution Layer)
- 小さなフィルター(カーネル、例:3×3や5×5)を画像全体にスライドさせながら掛け算→足し算
- フィルター = 「エッジ検出」「テクスチャ検出」など特定の特徴を抽出するもの
- 同じフィルターを画像全体で共有 → パラメータ共有
主なハイパーパラメータ:
- フィルターサイズ(3×3が主流)
- ストライド(1 or 2):フィルターを何マスずつずらすか
- パディング(Same / Valid):出力サイズを保つか縮めるか
- フィルター数(チャンネル数):何種類の特徴を同時に抽出するか(64, 128, 512…と層が深くなるほど増える)
② プーリング層(Pooling Layer)
- 特徴マップを「縮小」して計算量を減らし、位置の微小なズレに強くなる
- Max Pooling(領域内で最大値を取る)がほぼ標準
- Average Poolingは最近あまり使われない
- 最近の最先端モデルではプーリングを減らし、ストライド付き畳み込みで代替することも多い
③ 全結合層(Fully Connected Layer)
- 最後の数層だけ普通のニューラルネットワークに変換
- 最近はGlobal Average Pooling(GAP)で全結合層をなくすのが主流(パラメータ激減)
3. 代表的なCNNアーキテクチャの歴史(性能順)
| 年 | モデル名 | 特徴・ポイント |
|---|---|---|
| 1998 | LeNet-5 | CNNの元祖(手書き数字認識) |
| 2012 | AlexNet | ImageNetで圧勝 → ディープラーニングブームの火付け役 |
| 2014 | VGGNet | すべて3×3フィルターで非常に深い(16〜19層) |
| 2015 | ResNet | Residual接続(スキップ接続)で超深い(152層もOK)←現在も基本 |
| 2017 | DenseNet | すべての層が互いに繋がる |
| 2020 | EfficientNet | 精度と速度のバランスが最高(現在実用最強クラス) |
| 2021〜 | ConvNeXt | Transformer時代でも「純粋なCNN」がまだ強いことを証明 |
| 2022〜 | ConvFormer / ViTハイブリッド | CNNとTransformerを融合した次世代 |
4. 最近のトレンド(2023〜2025)
- 純粋なCNNはVision Transformer(ViT)に押され気味だったが…
- ConvNeXt、RepLKNetなど「現代的に改良したCNN」が再びSOTA(最先端)を奪還
- モバイル向け:MobileNet, EfficientNet-Lite
- 実用では依然として「ResNet50」「EfficientNet-B0〜B7」が最も使われている
5. CNNのイメージ図(典型的な構造)
入力画像 (224×224×3)
↓
Conv1 (3×3, 64フィルター) + ReLU
↓
MaxPool (2×2)
↓
Conv2 (3×3, 128) → Conv3 (3×3, 128)
↓
MaxPool
↓
Convブロック×数回(どんどんチャンネル数増加)
↓
Global Average Pooling または Flatten
↓
Fully Connected (全結合層) → Softmax → 1000クラス分類
まとめ:CNNが画像認識で強い理由
- 局所結合+パラメータ共有 → 計算効率が非常に高い
- 翻訳不変性 → 同じ特徴がどこにあっても検出できる
- 階層構造で「低レベルの特徴(エッジ)→ 高レベルの特徴(目、鼻→ 顔)」を自動で学習
