勝手に整理整頓 ─ 自動分類アルゴリズム


この内容は拙著『単純な脳、複雑な「私」』の巻末に「付論」として掲載されたもので、
脳科学講義として高校生たちに説明したときの録音テープから起こした文章です。

(朝日出版社の許可を得てここに掲載しております)

 さて、おまけの講義では、時間に余裕がある人だけに、追加の話をしたい。

 ニューロンのネットワークのシミュレーションの話だ。



 ここに縦10×横10の全100個のマスがあるね。マスの1個1個がニューロンだと思ってね。まず、それぞれのマスにランダムに色を割り当てておく。

 色というのは3原色だよね。赤(R)緑(G)青(B)。だから、色は(r, g, b)のベクトルだと思ってもらっていい。(r, g, b)のすべての数値がどれもゼロだったら「黒」、これが全部100%だったら「白」。(1001000)だったら「黄色」だ。モニターの画面はこの原理で色がつけられている。

 そんな具合に、(r, g, b)のそれぞれの要素に乱数表で0から100の数値を割り当てて、マス1個1個に独立にランダムな色を割り当ててみる。すると、こうなる。つまり、適当な色が100マスに並んでいるだけのモザイク図だ(下図)。




 さて、ここからがシミュレーションのスタートだ。

 まず、新しい色を手元に1個つくってみよう。この色にも(r, g, b)の数値が乱数表で入っている。これをとしよう。そして、さっきのランダムにつくられた100色パレットの中で、もっともに近い色のマスはどれだったかを探すんだ。色が近いっていうのは、専門的な表現を使えば、(r, g, b)という3次元空間でユークリッド距離が最小になるマスってことだね。

 近い色のマスを選んだら、そのマスにの絵の具を少し混ぜる。だから、選ばれたマスの色は、さらにの色に近づくことになる。そのとき、ついでに、そのマスの周囲にも、少しだけを混ぜてやる。上下左右斜めで隣り合った8個のマスに絵の具を垂らす。

 だから、選ばれたマスと、その周辺がっぽく染まることになる(下図)。


 このプロセスは、「をネットワークに教え込んだ」ってことに相当する。この作業を「暴露」という。



 以上がシミュレーションのステップだ。後は同じ作業を繰り返せばよい。つまり、別のを用意して、それに近い色のマスを選んで、その周辺のマスとともに、のインクを混ぜる。そういう暴露を続けていくと、100マスの色の配置が少しずつ変わっていくよね。

 どうやって変わっていくと思う? シミュレーションの結果を見てみよう。

 ほら、最初のランダムに選ばれた100色のパレットに、どんどんと暴露すると、配色が変化してゆくでしょ。最終的に何が起こるだろうか。高速で色の変化を見せるから、よく見ていてね。


 一見ランダムに色が動いているだけのようなんだけれども、だんだんと色の分類が始まっていることに気づかない? つまり、似た色が近くに集まってくる。たとえば、この領域に赤っぽい色が集まっているよね。一方、あそこら辺は青っぽい色が集団をつくっている。こうやって、自然に「色」の分類が生まれてくる。



 さっき説明したように、暴露の計算ステップには、どこにも「分類せよ」という指令は入っていない。単に、このネットワークは暴露されて、特定のルールに従って計算しているだけだ。それにもかかわらず、結果として、自然に色のカテゴリー分けを始めてしまう。

 このように教えていないのに自然に秩序が生まれてくることを「自己組織化」と言う。

 この分類アルゴリズムは、開発した人の名前を取って、「コホネン(コホーネン)の自己組織化マップ(Kohonen's self-organizing MAP、SOM)」と呼ばれている1

 自己組織化のプロセスは、ヒトがものを学習していく様子にすごく似ている。たとえば、幼児が言語を習得するときには、「言葉を学べ」ってだれから教えこまれなくても、ただ言葉に暴露されるだけで、自然に言語を身につけていくでしょ。親や周囲の人の会話を聞くだけで、自発的に単語の意味や使い方を分類していく。これと同じように、僕らはものごとをだれから習うこともなく分類したり理解したりできる。そういう学習方法を「教師なし学習」と言うんだ。「コホーネンの自己組織化マップ」は教師なし学習の代表選手だ。



 僕がプログラムをつくった例は「色」の分類だったけど、色に限らず、いろんなものを分類できるんだ。たとえばこの例なんかおもしろいな……。これは動物たちの生物学的な特徴をいろいろとリストアップして数値化してある。これらの特徴を、先の自己組織化マップに次々と暴露していくと、最初はランダムに割り当てられているから分類できてないんだけど、だんだんと、似たもの同士がマス目の近い場所に集まってくる。

 完全に学習させた後はこうなる。ここら辺にアヒルとガチョウがいるね。それから、タカとワシとハトとコウモリはあそこら辺。ネコ、オオカミ、イヌはこっちで、ウマとシマウマ、ライオンとトラなど、似た動物はマップ上で近傍に集まっている。つまり、動物たちを分類することができる。

すごいよね? わずかなルールさえ与えれば、自然に学んでいくんだからね。つまり、世界のものごとを分類するだけだったら、こんな程度のネットワークで十分で、高度な脳回路なんかは必要ないってことだ。

 子どもが分別を覚えていくのって、一見、すごい吸収の能力だなあと思うかもしれない。でも、こんな単純な脳回路でも、簡単に分類シミュレーションできている。だから、僕らが「すごい」と思っている脳の能力でも、それは僕らが一方的にそう感じているだけで、意外と簡単なルールの寄せ集めでできているだけなのかもしれない。

 ちなみに、僕がニューヨークのコロンビア大学に留学していたときに、研究室の大学4年生の学生が、卒業研究でこの「自己組織化マップ」を使っていた。彼は、ある小説の文章を丸ごと、自己組織化マップに暴露してみたんだ。本1冊、すべての文章をね。そしたら、やっぱり意味的に似ているものとか、物語のストーリーの上で高い関連性を持ったカギとなっている単語が分類されて、マップ上で物語の特徴がうまく要約された。彼はそういう卒業論文を書き上げて、大学を卒業していった。そういう高度なこともできるところに「自己組織化マップ」の潜在性の高さが窺うかがえるよね。

 ね?おもしろいでしょ。昨夜、頑張ってプログラムをつくった甲か斐いがあった(笑)。いろいろとミスしてしまってバグ取りに手間取ったので、こんな簡単なプログラムをつくるだけで1時間もかかってしまったんだ(笑)。みんなに喜んでもらってよかった。



参考文献

1. Kohonen T. Self-organizing formation of topologically correct feature maps. Biol
Cybern 43:59-69, 1982.

 上のページに戻る