Re Reference AI

アーキテクチャ

CNNとは

Convolutional Neural Network / 畳み込みニューラルネットワーク

畳み込み演算により画像などグリッド状データの局所的な特徴を検出するニューラルネットワーク

深層学習画像認識

ひとことで言うと

画像の中のパターン(輪郭や模様など)を見つけるのが得意なAIモデル。

概要

CNNは、画像などグリッド状のデータから局所的な特徴を検出するために設計されたニューラルネットワーク。 畳み込み層で入力上をスライドさせるフィルタ(カーネル)を用いてエッジやテクスチャなどの局所パターンを検出し、層を重ねるごとに形状や物体といったより抽象的な特徴を学習する。 プーリング層による空間サイズの縮小と組み合わせることで、画像内の位置変化にある程度頑健な特徴表現を獲得できる。 画像分類・物体検出・セグメンテーションなど、コンピュータビジョンタスクの標準的なアーキテクチャとして長年利用されてきた。 AlexNet(2012年)がImageNetの画像分類コンペティションで従来手法を大きく上回る性能を示したことをきっかけに、画像認識分野における深層学習の実用化が大きく前進した。

背景

全結合層のみのネットワークは、画像のような高次元入力に対してパラメータ数が爆発し、空間的な位置関係も考慮できないという課題があった。 CNNは局所受容野と重み共有により、少ないパラメータで画像の局所的な特徴を効率よく学習できるように設計された。

歴史

1980年代: Fukushimaのネオコグニトロンなど、畳み込み構造の原型が提案される。 1998年: LeCunらがLeNet-5を発表し、手書き文字認識に応用。 2012年: AlexNetがImageNet画像分類コンペティションで圧勝し、深層学習ブームの契機となる。 2014-2015年: VGG・GoogLeNet・ResNetなど、より深いCNNアーキテクチャが登場。 2020年代: Vision Transformer(ViT)の台頭により、一部の画像タスクではTransformer系アーキテクチャへの置き換えが進む。

アーキテクチャ

畳み込み層(Convolution)・プーリング層(Pooling)・全結合層を組み合わせて構成される。 畳み込み層は学習可能な小さいフィルタを入力上でスライドさせながら内積を計算し、特徴マップを生成する。 プーリング層は特徴マップの空間サイズを縮小し、位置ずれに対する頑健性と計算量の削減を図る。 層を重ねるごとに受容野が広がり、低レベルのエッジから高レベルの物体概念まで階層的に特徴を学習する。

ワークフロー

画像入力 → 畳み込み層で局所特徴を抽出 → 活性化関数(ReLU等)を適用 → プーリング層で空間サイズを縮小 → 畳み込み・プーリングを複数回繰り返す → 全結合層で特徴を統合 → 出力層(分類等)。

コード例

PyTorchでの基本的なCNN層

import torch.nn as nn

class SimpleCNN(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(3, 16, kernel_size=3, padding=1)
        self.pool = nn.MaxPool2d(2)

    def forward(self, x):
        return self.pool(torch.relu(self.conv1(x)))

利点

  • 重み共有と局所受容野により、全結合層よりパラメータ数を抑えられる
  • 画像内の位置変化にある程度頑健な特徴を学習できる
  • 層を重ねることで低レベルから高レベルまで階層的な特徴表現を獲得できる

欠点

  • 局所的な畳み込みのみでは、画像全体の大域的な依存関係を捉えにくい
  • 回転やスケール変化には頑健ではなく、データ拡張などの工夫が必要になる
  • 大規模データセットではVision Transformerなど代替アーキテクチャに性能で劣る場合がある

比較

  • ニューラルネットワークCNNはニューラルネットワークの一種で、画像などグリッド状データの処理に特化したアーキテクチャ
  • RNNCNNは空間的な局所パターンを、RNNは時間的な系列パターンを扱うのに適している
  • TransformerVision Transformerは、CNNの畳み込みに代わり自己注意機構で画像を扱うアーキテクチャ
  • AlexNetAlexNetは、CNNを大規模画像認識タスクで実用化した代表的な初期モデル
  • YOLOYOLOは、CNNを応用し物体検出タスク向けに設計されたモデル

関連用語

ニューラルネットワークRNNTransformer深層学習AlexNetYOLO

よくある質問

CNNと全結合ネットワークの違いは?

全結合層は各出力が入力全体と結合するのに対し、CNNは局所領域のみを見るフィルタを画像全体で共有することで、パラメータ数を抑えつつ位置変化に頑健な特徴を学習する。

CNNは今も使われている?

Vision Transformerなど新しいアーキテクチャの台頭はあるが、計算コストの低さや画像に適した帰納バイアスの強さから、リアルタイム処理や小規模データセットでは今も広く使われている。

参考文献

関連Zenn記事