CNN(畳み込みニューラルネットワーク)の主役ともいえる部品が「フィルタ」です。カーネルとも呼ばれるこの小さな行列が、画像の中からエッジや模様を見つけ出します。しかも、その中身は人間が設計するのではなく学習で自動的に獲得される——ここがディープラーニングの核心です。
📖 ひと言でいうと
フィルタとは、入力データから特徴を抽出するための小さな行列(カーネルとも呼ばれる)で、入力画像の上をスライドしながら畳み込み演算を行い、特徴マップを生成します。エッジやテクスチャなど、特定のパターンを検出する「検出器」の役割を果たします。
身近な例えでは、透明なシートに特定の模様が描かれた「照合カード」を思い浮かべてください。カードを画像のあちこちに重ねてみて、下の画像とカードの模様が一致する場所ほど強い反応が返ってきます。縦線カード、横線カード、斜め線カード……と多数のカードで調べれば、画像の構造がわかります。厳密には模様の「一致」を目で見るのではなく、フィルタの重みと画素値の積和演算の大きさで反応の強さを測っています。
🖼 1枚でわかるフィルタ
📘 公式テキストの説明
入力データから特徴を抽出するための重要な要素である。フィルタは、画像認識などの分野で特定のパターンやエッジ、テクスチャなどを検出する役割を果たす。具体的には、フィルタは小さな行列(カーネルとも呼ばれる)として定義され、入力画像に対して畳み込み演算を行うことで、特徴マップを生成する。この畳み込み演算により、入力画像の局所的な特徴が強調され、次の層での処理が効率的になる。フィルタのサイズや数は、ネットワークの設計者が設定し、学習プロセスを通じて最適な値に調整される。また、フィルタは学習データに基づいて自動的に更新され、特定のタスクに適した特徴を抽出できるようになる。
注目すべきは最後の2文です。フィルタの「サイズや数」は設計者が決めるハイパーパラメータですが、フィルタの「中身(重みの値)」は学習で自動的に更新されます。この「枠組みは人間、中身は学習」という分担が、フィルタを理解する最大のポイントです。
🔍 しっかり理解する
フィルタはどう動くのか
フィルタは3×3や5×5といった小さな行列で、各マスに重みという数値が入っています。これを入力画像の左上から右下までスライドさせ、重なった領域で「対応する画素値×重み」をすべて足し合わせます(積和演算)。この結果を並べたものが特徴マップです。
フィルタの重みのパターンと似た模様が入力にあると積和演算の値が大きくなるため、フィルタは「自分と似たパターンに強く反応する検出器」として働きます。
設計者が決めること、学習が決めること
フィルタにまつわる設定は、次の2種類に分かれます。
- 設計者が決める(ハイパーパラメータ) — フィルタのサイズ(3×3、5×5など)と数(1層あたり何枚使うか)。フィルタの数は出力される特徴マップのチャネル数と一致します
- 学習が決める(パラメータ) — フィルタの中の重みの値。誤差逆伝播法により、タスクの誤差が小さくなる方向へ自動的に更新されます
学習前のフィルタはランダムな値ですが、大量の画像で訓練するうちに、あるフィルタは縦エッジ検出器に、別のフィルタはテクスチャ検出器に、と役割が自然に分化していきます。「特定のタスクに適した特徴を抽出できるようになる」という公式テキストの記述は、この自動的な成長を指しています。
1枚のフィルタを画像全体で使い回す
フィルタのもう1つの重要な性質は、同じフィルタを画像のすべての位置で共有して使うことです(重みの共有)。「画像の左上にある縦線」も「右下にある縦線」も同じ縦線なので、検出器は1つで足ります。この使い回しのおかげで、全結合層に比べてパラメータ数が劇的に少なくなり、学習の効率と汎化性能が向上します。また、局所的な特徴が強調された特徴マップが次の層に渡ることで、後続の処理が効率的になります。
💡 具体例で考える
学習済みの画像認識モデル(たとえばAlexNetなど)の1層目のフィルタを画像として可視化した例は、ディープラーニングの教科書で必ずと言っていいほど紹介されます。そこには、白黒の縞模様(エッジ検出)、様々な角度の線、色のグラデーションに反応するカラフルなパターンが並びます。誰も「縞模様検出器を作れ」と指示していないのに、画像分類の学習を進めただけでこうした検出器が自然に出来上がる——これがフィルタの学習の威力です。
対照的に、ディープラーニング以前の画像処理では、Sobelフィルタというエッジ検出用の行列など、人間が数値を手作業で設計したフィルタが使われていました。原理は同じ畳み込みですが、「人が設計した固定フィルタ」から「データから学習するフィルタ」への転換こそが、CNNが画像認識の精度を飛躍させた本質的な違いです。
⚠️ よくある誤解・紛らわしい用語
- カーネルとの関係 — フィルタとカーネルは同じものを指す呼び名です。「フィルタは小さな行列(カーネルとも呼ばれる)」という公式の言い回しをそのまま覚えましょう。
- 特徴マップとの混同 — フィルタは特徴を検出する道具(入力側)、特徴マップは検出結果の出力データです。どちらが出力かを問う入れ替え選択肢が定番です。
- 「フィルタの中身は人間が設計する」は誤り — サイズと数は設計者が決めますが、重みの値は学習で自動的に更新されます。この分担の逆転を突く選択肢に注意してください。
- 写真アプリの「フィルター」との混同 — 語源的には近い概念ですが、アプリの加工フィルターは固定の効果、CNNのフィルタは学習によってタスクに合わせて変化する重みです。
📝 試験でのポイント
- 「小さな行列として定義され、畳み込み演算により特徴マップを生成する」という定義文の正誤・穴埋めが基本パターンです。
- 「サイズや数は設計者が設定」「重みは学習データに基づいて自動更新」という2つの記述の正誤を判定させる問題を想定しておきましょう。
- フィルタ・カーネル・特徴マップ・畳み込み操作の用語の対応関係を問う対比問題が出やすいです。
- 「フィルタの数=出力特徴マップのチャネル数」という対応も、構造理解を問う問題で役立ちます。
📚 まとめ
フィルタは、入力データから特徴を抽出するための小さな行列で、カーネルとも呼ばれます。入力上をスライドしながら畳み込み演算を行い、エッジやテクスチャなどの特徴を検出して特徴マップを生成します。サイズや数は設計者が決める一方、中身の重みは学習で自動的に最適化され、タスクに適した検出器へと育ちます。「枠は人間、中身は学習」「道具はフィルタ、結果は特徴マップ」の2つの対応を押さえれば、試験問題に自信を持って答えられます。
