顔を認識するのがなぜ難しいのか
写真の顔を認識することは人には簡単すぎて、難しさが見えない。しかし計算機にとって写真はただの数値の配列だ。縦横1000のグレースケール画像なら100万個の明るさの値が並んだリストであり、計算機はそのリストを受け取ってこれは猫だと答えなければならない。
もっとも素朴な方法は猫の写真を丸ごと覚えることだ。100万個の数値のパターンを記憶して新しい写真と比べる。これは即座に失敗する。猫が画面で10ピクセル横に動くだけで100万個の値がすべて別の位置へずれ、まったく違うリストになるからだ。人の目には同じ猫でも、数値としては他人である。
明るさが少し変わっても、猫が少し傾いても同じことが起きる。だから丸暗記方式では、一匹の猫のあらゆる位置・明るさ・角度の組み合わせをすべて覚えねばならず、その場合の数は事実上無限だ。
だから必要なのは、位置が少し変わっても同じものと見る方法である。断片を見つけつつ、それがどこにあったかは忘れる装置が要る。その装置の原型が猫の脳の中にあった。
1959年、麻酔された猫と一本の電極

デイヴィッド・ヒューベルとトルステン・ウィーセルは猫の一次視覚野に微小電極を刺した。脳細胞ひとつが発火するときの電気信号を拾い、音に変えて聞く装置である。そして麻酔された猫の目の前の画面にさまざまな模様を映し、どの絵にどの細胞が反応するかを探した。
しばらく何の反応もなかった。点を打っても円を描いても細胞は静かだった。ところがスライドを入れ替えた瞬間、スピーカーから細胞が激しく発火する音がした。絵ではなく、スライドが滑り込むときにできた影の縁、つまり傾いた線分ひとつが通り過ぎたのだ。
この偶然の発見をつかんで掘り下げると、二種類の細胞が現れる。
単純細胞は特定の角度の線分にだけ反応する。45度に反応する細胞は90度ではほとんど静かだ。しかもその線が視野のどの位置にあるかも問う。細胞ごとに担当する場所が決まっていて、自分の場所に自分の角度の線が来て初めて発火する。
複雑細胞は角度は同じように問うが位置は問わない。45度の線であれば、少し上にあろうと下にあろうと反応する。1962年の後続論文でこの複雑細胞と、同じ角度を担当する細胞が柱状に集まる方位コラム構造が整理された。
ここで前節の問題がそのまま解ける。単純細胞が断片を見つけ、複雑細胞がその断片の位置を流す。断片を見つけつつどこにあったかは忘れる装置が、脳の中にすでに二層で織り込まれていたのである。
二人は1981年のノーベル生理学・医学賞を受けた。ロジャー・スペリーと分けた半分を共同受賞で、受賞理由は視覚系における情報処理に関する発見である。
部分から全体へ — 層を積むという発想

ヒューベルとウィーセルが残したのは細胞二種類だけではない。より重要なのは二つの関係だった。複雑細胞は複数の単純細胞の出力をまとめて作ったように見えた。同じ角度を担当しつつ少しずつ違う場所を見る単純細胞をひと束にすれば、その角度に反応しつつ位置は問わない細胞になる。
ならばこの束ねをもう一度やるとどうなるか。短い線分を束ねて角を作り、角を束ねて曲線を作り、曲線を束ねて目の形を作り、目と鼻と口を束ねて顔を作る。
この図がこの回の設計図だ。単純なものを見つける層と位置を流す層を交互に積むと、上へ行くほど大きく複雑なものを認識するようになり、上へ行くほど位置に鈍感になる。
1980年、その二つの細胞がコードになった
福島邦彦が作ったネオコグニトロンは比喩ではない。彼は論文でヒューベルとウィーセルの発見を直接引用し、単純細胞をS層、複雑細胞をC層と名づけた。それぞれ simple と complex の頭文字である。
構造はS層とC層を交互に積んだものだ。下のS層は短い線分を探し、その上のC層は位置をぼかし、その上のS層はぼかされた結果からより大きな断片を探し、その上のC層がまた位置をぼかす。これを何層か繰り返す。
つまり、部分を探し、位置を流し、より大きな部分を探し、また流す。いまCNNがしていることを一文で書けばこれである。
ネオコグニトロンは手書き数字を、位置が少し変わっても認識した。ただし学習方式が今とは違った。正解を教えず自分でパターンを見つけさせる方式だったので、性能を引き上げるのが難しかった。この最後の一片が9年後に埋まる。
1989年、郵便番号を読んで実用になった

ヤン・ルカンとベル研究所の同僚が手書き郵便番号を読むニューラルネットを作る。米国郵政が実際に集めた郵便物から取り出した数字画像で学習させたもので、当時としては珍しくニューラルネットを実務の問題に付けた事例だった。
この論文がここで重要なのは性能ではなく参考文献だ。福島の1980年のネオコグニトロンを直接引用し、自分の構造がそれを思わせるが教師なし学習ではなく誤差逆伝播を使うと明記している。前回に見たあの逆伝播である。
つまり系譜は状況証拠ではなく文献でつながる。猫の視覚野(1959)、ネオコグニトロン(1980)、逆伝播を載せたCNN(1989)。広く知られるLeNet-5は1998年であり、その後も発展は続く。
ここでもう一つ付いた発想がある。ある角度の線分を探す作業は、画面の左上でも右下でも同じ計算だ。ならば場所ごとに別々に学ぶ必要はなく、同じ計算規則を画面全体にずらしながら適用すればよい。これを重み共有と呼び、そのずらしながら適用する演算の名が畳み込みである。CNNのCがこれだ。
この一点が実用性を分けた。場所ごとに別々に学べば学ぶものが数百万個だが、規則ひとつをずらして使えば数百個で済む。データも少なく計算も軽い。
用語は一つだけ — 受容野
受容野とは、一つの神経細胞が担当する視野の狭い区画である。
ヒューベルとウィーセルが刺したあの細胞は画面全体を見ていない。それぞれごく小さな区画だけを見て、その外で何が起きようとその細胞は知らない。CNNが写真を一度に見ず、小さな窓を動かしながら走査する理由がこれだ。
層が上がると受容野は広がる。下層の細胞をいくつか束ねた上層の細胞は、その分だけ広い区画を担当する。だから下層は線分を、上層は顔を見る。
ここから重要な性質が一つついてくる。この構造は部分から全体へ組み立てる。断片はよく見つけるが、その断片が作る状況や文脈は原理的に別の問題である。この性質が次節の実務指針を作る。
ではこの構造は何ができないのか

断片を組み立てる方式の限界は、実際に何度も表に出ている。
第一に、断片がそろっていれば配置が誤っていても正しいと言う。目・鼻・口がすべてあるが位置がばらばらな顔を、顔と判定することがある。部分の存在はよく見るが、部分どうしの関係は弱くしか見ない。
第二に、人の目に見えないごく小さな変化で判定をひっくり返せる。画素値を微細に揺らしてパンダをテナガザルにする類だ。人はその二枚の写真の違いに気づくことすらできない。
第三に、背景を根拠にする。牛の写真を草原でだけ学習すれば、浜辺の牛を認識できない。牛の形ではなく緑の背景を牛の根拠として学んだのだ。
この三つはバグではなく、この構造が何であるかから導かれる性質である。そしてそのまま実務指針になる。
では明日から何を変えるか
画像AIには何が見えるかを尋ね、どういう状況かは検証する。断片の検出はこの構造の本業で、人のように疲れない。一方で場面の意味は組み立てられた結果なので、間違うときはもっともらしく間違う。この写真にヘルメットがあるかは任せてよく、この作業は安全かは人が見る。
小さく切って尋ねる。写真一枚を丸ごと解釈させるより、この領域に文字があるか、この部品に傷があるか、と狭めて聞くほうが精度は目に見えて上がる。受容野が狭い構造は、問いも狭いときによく当たる。
角度と明るさを変えて二度尋ねる。位置の変化は複雑細胞の層が吸収するが、回転と照明はそうではない。写真を90度回したり明るさを変えたりして尋ね直したとき答えが割れるなら、その判定はまだ信用できない。
背景の違う標本をわざと混ぜる。検収データを作るとき、同じ対象を別の場所・別の照明で撮ったものを入れる。背景を根拠に学んだかどうかは、その標本でしか表に出ない。
出典: Hubel & Wiesel (1959, 1962)、1981年ノーベル生理学・医学賞、Fukushima, Neocognitron (1980)、LeCun et al., Backpropagation Applied to Handwritten Zip Code Recognition, Neural Computation 1(4) (1989)。
