【初心者向け】CNNの畳み込み層とは?AIの「目」の仕組みを計算例で解説
画像認識AI(CNN)の心臓部であり、AIに「目」の役割を与えているのが畳み込み層(Convolutional Layer)です。この記事では、畳み込み層がどのようにして画像から「特徴」を見つけ出すのか、その仕組みを具体的な計算例を交えながら、初心者の方でも直感的に理解できるように解説します。
畳み込み層とは? - 画像から「特徴」を見つけ出す専門家
畳み込み層の役割は、一言で言うと「画像の中から特定の特徴を見つけ出すフィルター」です。
人間の脳が画像を見るとき、無意識に「縦線」「横線」「角」「丸い形」といった部分的な特徴を捉え、それらを組み合わせて全体像を認識しています。畳み込み層は、この脳の働きを模倣したもので、画像の上を「特徴を探す虫めがね(カーネル)」でくまなくスキャンしていくイメージに似ています。
畳み込み層の3つの主要な構成要素
🖼️ 1. 入力データ (Input Data)
コンピュータにとって、画像は単なる数値(ピクセル値)の集まりです。例えば、白黒画像なら0(黒)から255(白)までの数値が格子状に並んだ行列として扱われます。
🔍 2. カーネル / フィルター (Kernel / Filter)
これが「虫めがね」の正体です。カーネルもまた、3x3や5x5といった小さなサイズの数値の行列です。このカーネルの数値のパターンによって、どんな特徴を探すかが決まります。AIは学習を通して、画像認識に役立つ特徴(例:「縦線」「角」「赤色」など)を見つけ出す最適なカーネルの数値を自動で獲得していきます。
🗺️ 3. 特徴マップ (Feature Map)
カーネルが画像全体をスキャンした結果です。「画像のどの部分に、探していた特徴がどれくらい強く存在したか」を示すマップが出力されます。
🧮 畳み込み演算の具体的な計算例
では、実際にどのように計算が行われるのか、簡単な例で見てみましょう。この計算プロセスは「積和演算(せきわえんざん)」と呼ばれます。
計算プロセス
1. カーネルを画像の左上に重ねる
まず、カーネルを入力画像の左上の3x3の範囲に重ね合わせます。
2. 対応する要素同士を掛け算し、全て足し合わせる
重ね合わせた部分の数字をそれぞれ掛け算し、その結果をすべて合計します。
3. 結果を特徴マップに書き込み、カーネルをスライドさせて繰り返す
この計算結果 `-5` を、出力である特徴マップの左上のマスに書き込みます。次に、カーネルを1ピクセルずつ右へ、そして下へとスライドさせながら画像全体で同じ計算を繰り返します。
その結果、最終的に以下のような3x3の特徴マップが完成します。
この特徴マップの数値が大きい場所(この例では `4` や `1`)ほど、「縦線」の特徴が強く検出されたことを示します。
なぜ畳み込み層は優れているのか?
畳み込み層が画像認識で絶大な力を発揮する理由は、主に2つあります。
1. パラメータ共有(位置不変性)
「縦線」という特徴は、画像の左上にあっても右下にあっても同じ「縦線」です。畳み込み層では、たった一つのカーネル(パラメータのセット)を画像全体で使い回します。これにより、学習すべきパラメータの数を劇的に減らし、非常に効率的な学習を可能にしています。
2. 局所性
画像の特徴(エッジ、角など)は、隣接するピクセル間の関係で決まります。カーネルは画像全体ではなく、局所的な小さな領域だけを見るため、このような特徴を捉えるのに非常に適しています。