心理学のお勉強

知覚心理学

計算理論


今まで、知覚心理学というテーマで取り上げてきた様々な事柄というのは、「人間がいかに知覚するか」ということが主題でした。まあ、そういう学問なのですから、それが当たり前でして、それの「生理学レベル」の話だったり、今一歩、踏み込んでない感じがあったかもしれませんけれども、いってみれば、心理学の基礎的な話をコツコツとしてきた感じでした。

さて、ここで場面転換も兼ねて登場させたいのがこの「計算理論 computational theory」というものです。

計算理論を一言で言うなら、「心の働き(知覚なので、いかに認識しているか?)は記号の計算によって成り立っていると考える」立場。言い換えれば、「いかに認識しているか?」これのモデルを計算に求める理論が、この計算理論です。抽象的な理論で、かなりつかみにくいですが、現代の知覚・認知といった分野で結構、よく聞く理論なので、名前くらいは覚えておいて損はないでしょう。

とはいいつつ、計算理論の論理学的な話はここでは差し控えます。なにしろ、別のシリーズ中に[計算論]というものを書きましたから。オブジェクト指向的に、その手のお話はそっちに譲って、ここでは具体的なお話をしてみようと思います。

代表例として、デビッド・マーという人が考えたことについて触れてみましょう。この人は、脳を理解するためには3つのレベルが必要で、そのひとつが「ハードウェアによる実現 hardware implementation」、次が「表現とアルゴリズム representation and algorithm」、そして、最後に「計算理論」なんだ!と述べた人だったりします。

まず、物理的にどうやって実現できるか知る必要があるし、どう処理するのか、そのアルゴリズム(計算手順)を知る必要もある。そして、その処理の目的とか原理ってもんも知らないといけない(情報処理系理解の3水準)。

そこで、マーが考えたのが、視覚認識をコンピュータでやったらどんなになるんだろう?ということでした。つまり、コンピューターが人間みたいに、目の前に広がるこの三次元空間を認識するとしたら、いったいどうやるんだろう、と、考え、やってみたわけです。

ここで裏話ですが、この話を書くにあたり、いつものように教科書を開いてみました。そしたら、これが噛み砕いて説明するには大変難しいってことがわかった。そこで、googleで「"マー" 計算理論」というキーワードで検索をしてみました。するとまあ、「マーティン」さんだの、「マーフィーの法則」だのが大量に引っかかって、えらい大変。そこで、英語キーワード(Marr computational theory)にして検索しなおしてみたのです。そしたら、すごくわかりやすく、[このアイディアを説明した英文]がありました。この数行の英文の中に、マーのエッセンスが全部詰め込まれている気がしましたので、これに則って、説明をしていこうと思います。ということで、上の英文、ぜひ読んでください。

彼によると、認識のステップはいくつかに分けられます。まず第1段階。ほんとはこの段階、2つに分けて説明するべきなのですが、話が複雑になりますし、ここでは大雑把にひとつにまとめて説明します。

この段階はプライマル・スケッチ(画像記述の第一段階)というだけあって、画像の入力、つまり、場面を目に入れることと、エッジの検出、つまり、どこから来る光が強いとか、そういうことを元としたエッジの確認が行われます。

入力はまあ、スキャナでスキャンすることを思い浮かべていただいて、エッジの検出ってのは、「1つのガウス関数(正規分布のこと)を2次微分(laplacian. ラプラシアン)したもの(=2つの幅の異なるガウス関数を逆さまに重ねて、その差を取ったDOG(Difference of Gaussian))」をフィルターとしてかける作業です。

なんだか難しいですが、ようはAdobe Photoshopでフィルター「エッジの光彩」をかける感じです。このフィルターとおんなじで、フィルターの大きさをどうするかで、どのような特徴を検出するかが決まってきます。

例えば、何か物を濾す時って、荒い目のを使うと、かなり雑になるし、化学の実験とかみたいに「ろ紙」とか使うと、かなり目が細かいから、きれいに濾せるでしょう? それとおんなじで、フィルターの大きさを大きくすれば、大雑把な検出になりますし、小さくすれば、より緻密な検出をすることになります。

実際にPhotoshopでフィルターをかけてみましょう。ちなみに、これはフィルターの大きさが検出の精度に関わるってことを実感してもらうためのもので、マーが実際にプライマル・スケッチでかけたものとは異なります(それは、知覚心理学や認知科学、計算理論の本を読むか、[こちら]を参考にしてみてください)。

まず、これがオリジナルの画像。

オリジナル

これを「エッジの幅」を1にして、つまり、目のかなり細かいフィルターをかけてみましょう。

エッジ幅1で処理

次に、「エッジの幅」を10、つまり、相当目の荒いフィルターで処理してみます。するとこうなる。

エッジ幅10で処理

同じものを処理しているのに、エッジ検出の精度が違うだけで、全然違う感じになりますね。これがここのお話。

さて。第2ステップに話を移しましょう。ここでは、面の傾きや曲率の記述、あと、影といった、観察者が今見ている面についての記述が行われます。ちなみにこれは2次元と3次元のちょうど間ということで、「2.5 sketch」とマーは呼んでいます。このステップのアルゴリズムはかなり複雑で、高度な内容になりますので、興味がある方は本を読んでください。

さ、「間」までいったので、今度は見えていない面の記述、つまり、第3ステップの話しです。ここで立体のための計算を行います。

ところで、見えていない面をどうやって記述するんだろうか?と疑問があるわけですが、ここでマーは「一般化円筒 generalized cylinder」「一般化円錐 generalized cone」の2つのものを持ち出してきています。

一般化円筒というのは、ようは、茶筒みたいなもんです。一般化円錐は、工事現場に立っているあの、赤い三角のやつ(コーンといったり、パイロンと言ったりするやつですね)、あれです。

マーはこの2つの立体の形、つまり、円筒と円錐というものを最も原初的な形と考えて、で、人間だのなんだのというのは、例えば、円筒の組み合わせだけで作れるんじゃないか?と考えた。例えば、こんな感じ。

組み合わせで作ったヒト

これは2Dですが(立体にすんのめんどくさい(^^;))、ようはこういう風に円筒の組み合わせで、認識したいものの形を作っちゃったりできないかと考えたわけです。これが「3D sketch」です。

このように、全体のステップをまとめてみると、「実際のシーン:(スキャン→)パターン→面→空間」という、この流れで認識するのが、マーのアイディア。このアイディアの中には計算理論のものの考え方がいっぱい入っています。

このマーのアイディアが出されたのが、1982年のことで、もちろん、これがこの手の最初のアイディアというわけではないのですが(一番古いのだと、1965年に「立体認識プログラム」が作られている)、発想が新しかったので、このマーのアイディアは結構、引き合いに出されます。

なお、どうでもいい話かもしれませんが、このデビッド・マー、[バイオグラフィ]によると、この発表の2年前に35歳の若さで亡くなっています。つまり、上の話が載った本ってのは死後発表されたものなわけです。うーん、もったいない。

今もし生きていたなら、まだ59歳(2004年時点)で、現役バリバリだし、また、このマーのアイディアには、「アフォーダンス affordance」で知られるギブソンの「生態学的知覚論 a theory of ecological optics」の影響が見られる点で、大変面白いところがあるので、ほんともったいないなと思っちゃったりします。

それに、1980年じゃ情報処理技術もたいしたもんじゃなかったですが、今となっては、3次元のレンダリング処理なんて簡単にできるわけで、この手の話、まだまだいろんな展開を見せたんじゃないかなあ、と思ったりもします。

そう、最近の情報処理技術の発展に伴いまして、この手の話はかなり面白いことになっています。興味がある方は、書物などを読まれるとよろしいでしょう。

ということで、今回は計算理論、特に、「コンピュータなら記号の計算としてどうやって処理するんだろう?」という視点をご説明してみました。大事なところは、心の働きというものを計算で考えてみよう!という点。論理学的な話とともに、こちらの具体的な話も参考にしながら、この理論を知っていただければと思います。