知能の正体

私は子供のころ、人間の知能がどのような仕組みで実現されているのかに興味があった。


小学生のころ、NECPC-6001というパソコンを買ってもらって、オセロゲームを作ったことがある。αβ探索すら知らず、全幅探索で5手読むだけのものをZ80マシン語で書いた。それは力任せにすべての組み合わせを探索しているだけで、ちっとも知的には感じられなかった。


中学生になると、コンパイラの挙動自体に興味を持つようになり、A.V.AhoのCompilersを原書で読み、簡単なコンパイラを作ってみた。コンパイラは確かに知的な作業をするが、人工言語構文解析が簡単なのだと言うことがわかった。そう考えるとコンパイラの挙動もあまり知的には感じられなくなった。


高校に入ったときに言語学に興味を持つようになった。自然言語自体を我々がどのようなスキームで理解しているのかを解明できれば、そこから知性とは何なのかが見えてくると思ったからだ。最初に勉強したのは、A.N.Chomskyの生成文法だった。理論自体はコンパイラを作るよりはずっと簡単だったので、さっそく英語から日本語への自動翻訳ソフト(中学1,2年で習う英語レベルのものしか訳せない)を作ったが、生成文法はいくつかの理論的拡張をしないと自然言語を解釈するのは難しく、理論的な限界を感じていた。


「猿が蟹に石をぶつける」というのを ((Actor 猿) (Action ぶつける)(Object 石)(Target 蟹)) のようなLISPの式に変換すれば、そのあとどの言語(英語や仏語と言った意味での自然言語)にでも変換できるし、このLISPの式をLISP上でこねくりまわして、人工無能っぽいことをやらせたり、物語を自動生成させたり出来た。だけど、ちっとも人間らしいとは思わなかった。それはただの無味乾燥な記号処理だった。


大学に入ったときに、ニューラルネットに興味を持つようになった。当時、漢字や画像、音符など、いろんなものを学習させてみた。わかったことは、学習に時間がかかりすぎるということ、そして、手作業でのチューンが必要なことであった。


ニューラルネットは少ないhidden unitでそれなりの結果が出せるので工学的には面白いのだが、難しい問題はちっとも学習してくれないし、与えられた入出力のペアに見合う関数を導き出しているだけのように思えた。そう考えたときに、ニューラルネットがとてもつまらない無機質なものに思えた。


この自分の人生を振り返ってみると絶えず興味があったのは、プログラミングそのものではなく、知能とは何かということに対する探求であったように思う。


何故、私はそんなに知能について興味があったのだろう?
きっと、自分という存在がどこから来たのか知りたかったんじゃないかと思う。


しかしニューラルネットは私の求めていた答えにはほど遠く、人工知能という分野自体がとてもうさんくさい学問のように思えて、それ以降、何も勉強する気になれなかった。あれから、10数年。鬱積していたものがついに爆発した。


「コンピュータ将棋の大会で優勝する」という大きな目標が出来たのだ。コンピュータ将棋が人工知能か?と言えば、現代の視点ではたぶんノーだろう。だけど人間のトッププレイヤはかなり高度な知的処理をしていることには違いないので、その分野で頂点に立てれば、いままで見えていなかったものが見えるのではないかと思った。


そうそう。謎電の作者からコンピュータ将棋の開発に関してメールで数々のアドバイスを頂戴した。自分の考えの甘さを実感すると共に、生半可な気持ちでは到底かなわないというのを身にしみて感じた。もし万が一、私が優勝した暁には、謎電の作者には、よっちゃんイカ100年分を進呈させていただこうと思っている。いらないと言っても一方的に着払いで送りつける。