前回は「フィルタ=虫めがね」というたとえでイメージをつかみました。今回はその虫めがねの中身、つまりフィルタの実体を、実際の数字を見ながら覗いていきましょう。
1. フィルタは「3×3の数字の表」
よくあるフィルタはこんな感じです。
┌──────────┐ │ -1 0 1 │ │ -1 0 1 │ ← これだけ!たった9個の数字 │ -1 0 1 │ └──────────┘
これがさっきの「虫めがね」の正体です。
2. 実際の計算:縦線検出フィルタ
ルール:左がマイナス、右がプラス → 「左暗い・右明るい」変化に反応
ケースA:縦線がある場所に当てる
画像の一部(数字が大きい=明るい、小さい=暗い)にフィルタを当てます。
画像の3×3 フィルタ ┌──────────┐ ┌──────────┐ │ 0 0 9 │ │ -1 0 1 │ │ 0 0 9 │ │ -1 0 1 │ │ 0 0 9 │ │ -1 0 1 │ └──────────┘ └──────────┘
計算:同じ位置どうしを掛けて、全部足す
(0×-1) + (0×0) + (9×1) = 9 (0×-1) + (0×0) + (9×1) = 9 (0×-1) + (0×0) + (9×1) = 9 ───────────────── 合計 = 27 ← 大きな数字!「縦線あり!」
ケースB:縦線がない場所に当てる
画像の3×3 フィルタ ┌──────────┐ ┌──────────┐ │ 5 5 5 │ │ -1 0 1 │ │ 5 5 5 │ │ -1 0 1 │ │ 5 5 5 │ │ -1 0 1 │ └──────────┘ └──────────┘ 計算結果: 0 + 0 + 0 = 0 ← ゼロ!「縦線なし」
合計の数字が大きい=そのフィルタが探してるものが見つかった、という合図になります。
3. いろんなフィルタの中身
横線を探すフィルタ
┌──────────┐ │ -1 -1 -1 │ │ 0 0 0 │ ← 上が暗くて下が明るい場所に反応 │ 1 1 1 │ └──────────┘
エッジ(境界)を探すフィルタ
┌──────────┐ │ -1 -1 -1 │ │ -1 8 -1 │ ← 真ん中だけ周りと違う場所に反応 │ -1 -1 -1 │ └──────────┘
ぼかしフィルタ
┌─────────────────┐ │ 1/9 1/9 1/9 │ │ 1/9 1/9 1/9 │ ← 周りの平均を取る = ぼかし │ 1/9 1/9 1/9 │ └─────────────────┘
数字の組み合わせを変えるだけで、まったく違う特徴を検出できるのがフィルタの面白さです。
4. 「光った」結果=特徴マップ
縦線フィルタを画像全体にスライドさせると、こうなります。
元の画像(数字=明るさ) フィルタを通した結果 ┌──────────────┐ ┌──────────┐ │ 0 0 9 9 0 0│ │ . 27 27 . │ │ 0 0 9 9 0 0│ │ . 27 27 . │ ← 縦線の位置で │ 0 0 9 9 0 0│ → │ . 27 27 . │ 大きな数字が │ 0 0 9 9 0 0│ │ . 27 27 . │ 並んでいる! │ 0 0 9 9 0 0│ └──────────┘ └──────────────┘
これが 「特徴マップ」です。数字が大きいところ=そのフィルタが反応した場所、ですね。
5. ここがすごい:フィルタは「学習で育つ」
人間が手で作るんじゃないの?
昔(〜2010年頃):人間が手作業で設計。画像処理の専門家が「縦線検出にはこの数字…」と決めていました。
今(CNN):AIが自動で見つけ出す。最初はランダムな数字で、学習を通じて「正解に近づく数字」に自動調整されます。
最初: 学習後: ┌──────────┐ ┌──────────┐ │ 0.3 -0.1 0.5 │ │ -0.9 0.0 0.9 │ │-0.2 0.4 -0.3 │ │ -1.0 0.0 1.0 │ ← だんだん意味のある │ 0.1 0.2 -0.4 │ │ -0.9 0.1 0.8 │ パターンに! └──────────┘ └──────────┘ ランダム 縦線検出っぽい
何百万枚もの画像で「これが猫」「これが犬」と教えると、AIは自然と「猫を見分けるのに必要な数字の並び」を見つけてくれます。
6. 実際のCNNでは何個のフィルタがある?
1つの層にフィルタが 32個・64個・128個…と並びます。
1層目(64個のフィルタ)
縦線・横線・斜め線・丸・角・赤色・青色・明暗・ザラザラ・滑らか…
↓
2層目(128個のフィルタ) ← 1層目の結果を入力に使う
目・鼻・耳の形・口…
↓
3層目(256個のフィルタ)
顔っぽいパターン・体っぽいパターン…
深くなるほど数が増え、複雑な特徴を捉えるように設計されます。
7. 本物のフィルタを可視化したらどうなる?
実際に学習済みCNN(AlexNetなど)の1層目フィルタを画像化すると、縦線・横線・斜め線・丸・色などのパターンがはっきり浮かび上がります。ネットで「AlexNet first layer filters」で画像検索すると本物が見られて、人間が脳で物を見るときと似たパターンが現れていることに驚かされます。
まとめ
| 質問 | 答え |
|---|---|
| フィルタの中身は? | 3×3や5×5の数字の表 |
| 何をしている? | 画像と掛け算して合計する |
| 数字が大きい結果=? | そのフィルタが探してるものが見つかった |
| 数字は誰が決める? | AIが学習で自動的に決める |
| 何個ある? | 1層あたり数十〜数百個 |
フィルタとは、「特定のパターンに反応する数字の表」であり、その数字をAIが自分で調整しながら賢くなっていくもの——これがいちばん大事なポイントです。
では、その「数字の調整」はどうやって行われるのか? 次回は AIの学習の仕組み をやさしく解説します!

コメント