畳み込みニューラルネットワーク 001

CNNについてClaude Opus 4.5に説明してもらいました。
自分は間違いを指摘したり、構成を整理しました。

なぜCNNが必要なのか ?

画像認識において、従来の全結合ニューラルネットワークには大きな問題があります。例えば、MNISTの28×28ピクセルの画像を処理する場合を考えてみましょう。

全結合ネットワークの問題点

全結合層の限界
28×28のMNIST画像でさえ、1層の全結合で約10万のパラメータが必要です。カラー画像(例 : 224x224x3)では、1層で約1500万のパラメータになります !

CNNのアイデア : 局所的な特徴を捉える

CNNは、画像の「局所的なパターン」に注目します。人間が文字を認識するとき、画像全体を一度に見るのではなく、エッジや曲線などの部分的な特徴を組み合わせて認識しています。

CNNのアイデア : 局所的な特徴の検出

CNNの核心
CNNは「小さな窓(フィルタ)」を使って画像をスキャンし、局所的なパターンを検出します。この方法により、パラメータ数を大幅に削減しながら、画像の空間的な構造を保持できます。

畳み込み(Convolution)とは ?

畳み込みは、フィルタ(カーネル)を画像上でスライドさせながら、フィルタと画像の対応する部分の積和を計算する操作です。

畳み込み演算の仕組み

畳み込みの数式は以下のように表されます:

\[
\displaystyle (I * K)(i, j) = \sum_{m=0}^{k_h-1} \sum_{n=0}^{k_w-1} I(i+m, j+n) \cdot K(m, n)
\]

ここで:

  • \(I\) は入力画像
  • \(K\) はフィルタ(カーネル)
  • \(k_h, k_w\) はフィルタの高さと幅
  • \((i, j)\) は出力の位置

フィルタをスライドさせる

畳み込みでは、フィルタを入力画像上で1ピクセルずつスライドさせ、各位置で積和を計算します。これにより、入力より少し小さい「特徴マップ」が得られます。

フィルタのスライドと特徴マップの生成

出力サイズの計算式(パディングなし、ストライド1の場合)
\[
\text{出力サイズ} = \text{入力サイズ} – \text{フィルタサイズ} + 1
\]
例 : 28×28の入力に3×3フィルタを適用 → 26×26の出力

MNISTでの畳み込みのイメージ

MNISTの28×28画像に3×3フィルタを適用すると、26×26の特徴マップが得られます。この特徴マップは、元の画像の各位置でフィルタが「反応した強さ」を表しています。

MNISTに畳み込みを適用

フィルタの数と特徴マップ
CNNでは通常、1つの畳み込み層で複数のフィルタ(例 : 32個、64個)を使用します。各フィルタは異なるパターン(縦エッジ、横エッジ、角など)を検出し、フィルタの数だけ特徴マップが生成されます。

なぜ畳み込みが効果的なのか

畳み込みの3つの利点

まとめ

この章で学んだこと

  • 全結合層の問題:パラメータが多すぎる、空間情報の喪失、平行移動に弱い
  • CNNの基本アイデア:局所受容野、重み共有、階層的な特徴抽出
  • 畳み込み演算:フィルタを画像上でスライドさせながら積和を計算
  • 特徴マップ:畳み込みの結果として得られる、フィルタの反応を表す出力
  • 畳み込みの利点:パラメータの大幅削減、平行移動不変性

広告

さくらのレンタルサーバ
ムームードメイン
Oisix(おいしっくす)
らでぃっしゅぼーや
珈琲きゃろっと
エプソムソルト
【FRONTIER】
AdGuard Ad Blocker
AdGuard VPN
AdGuard DNS




«       »
カテゴリーAI