JA EN
教科書 › 第II部 AIモデルの系譜
CHAPTER 17

畳み込みという発明

無料8分

画像を普通のニューラルネットで扱うと、すぐに破綻する。100×100の画像なら入力は1万個。次の層も1万個なら、重みは1億個必要になる。しかも画像を1ピクセルずらしただけで、まったく別の入力として扱われてしまう。

この2つの問題を同時に解いたのが畳み込みである。発想の出発点は、1960年代の生物学にあった。ヒューベルとウィーゼルは、猫の視覚野の細胞が視野の狭い一部だけに反応し、しかも特定の向きの線に強く反応することを発見した。

これを模したのが、福島邦彦が1980年に発表したネオコグニトロンである。そして1998年、ヤン・ルカンがこれに誤差逆伝播法を組み合わせ、LeNetとして郵便番号の読み取りに実用化した。

畳み込みは何をしているのか

小さな窓(たとえば3×3)を用意し、画像の左上から順にスライドさせる。窓の中の9ピクセルに、それぞれ重みを掛けて足し合わせる。この結果を新しい画像として出力する。窓の重みの組み合わせをカーネルまたはフィルタと呼ぶ。

入力画像 3×3の窓をずらしていく × カーネル(重み) 重みは使い回す 特徴マップ 特徴の位置マップ
窓の中の値と重みを掛けて足す(=MAC演算)。窓をずらしながら繰り返すことで、出力側に「その特徴がどこに強く現れたか」の地図ができる。

この仕組みが持つ3つの性質が、決定的に重要である。

重み共有
画像のどこを見るときも同じ重みを使う。だから重みの数が劇的に少なくて済む。3×3なら9個で足りる。
位置不変性
同じ特徴が画像のどこにあっても、同じように検出される。猫が右にいても左にいても猫として認識できる。
局所性
近くのピクセル同士の関係だけを見る。画像においてはこれが自然な仮定になる。
この3つを、モデルにあらかじめ組み込まれた前提=帰納バイアスという。「画像とはこういうものだ」という知識を構造として与えているので、少ないデータでも学習が進む。後でViTの話をするときにこの言葉が効いてくる。

畳み込み層を重ねると、浅い層では線や角といった単純な特徴を、深い層ではより複雑な形やパターンを捉えるようになる。間にプーリングという縮小操作を挟むことで、扱う解像度を段階的に下げつつ、1つの出力が見ている範囲(受容野)を広げていく。

コメント

コメントにはログインが必要です