私たち人間だけでなく、あらゆる動物や昆虫の「知的な行動」は、「探索」と「評価」の少なくともどちらか1つ、あるいは両方であると言うことができます。
知能の一種である将棋プログラムの場合ももちろん「探索」と「評価」をおこなっています。
どういうことか、具体的に見ていきましょう。
将棋プログラムは局面が与えられたとき、まずはコンピュータらしく、一手先のすべての考えられる展開を探索します。
そして局面を評価します。この場合の評価とは、「予想される勝率」と言い換えてもいいでしょう。
局面のなかでもっとも評価がよいものから、順番に次の展開を探索していきます。
しかし、繰り返しになりますが、コンピュータのリソースは限られています。
そこでだんだん探索が進んでいくと、今度はすべての手を調べずに、やはり評価によって、有望そうな展開や有望そうな手にリソースを割くようにします。
こうした探索と評価の組み合わせを、シミュレートといいます。
探索=エミュレート でしたが、
探索+評価=シミュレート と理解していただいても大丈夫です。
エミュレートは機械的で正しさ優先の予想の方法でしたが、シミュレートは「評価」によって何を探索すべきか目星をつけていますから、より深く調べることができます。ただし、間違う可能性は一気に高くなります。そのため、航空・金融・宇宙など安全や正確性がより求められる分野のコンピュータでは、シミュレーションではなくエミュレーションが使われる割合が多いようです。
しかし、将棋ではエミュレーションだけでは、先の先まで調べることができません。より深く調べるためにシミュレートを使わざるを得ません。なのでどうしても、その後の重要な展開を見落とすことがあるのです。
人間と同じようにコンピュータもよい手を見落とすというのは、こうした理由からです。正しく「評価」をし続けなければ、よい手にはたどり着けない、という仕組みは同じなのです。
図1−4 コンピュータもミスをする
評価の仕組みの作り方
では、コンピュータ将棋はどうやって局面を評価しているのでしょうか?
10年以上前のプログラムでは、コンピュータの評価方法はすべて人の手で作られていました。すべての駒に、その価値をひとつひとつ手動で点数をつけていたのです。
飛車なら1500点、桂馬なら500点、歩なら100点、という具合ですね。
同様にすべての駒の配置にも点数をつけていました。自分の王様のそばに金があると+50点だけれど、孤立した金は−100点などです。
これだけでも1000個ほどの調整する項目が出てきます。将棋でもチェスでも、最低これくらい調整する項目がありました。
なお、調整というのは、飛車が1500点だったのを1520点にしたり、孤立した金を-80点にしたりすることです。
調整は、プログラマがコンピュータ将棋の試合内容を見ておこないます。
飛車を簡単に相手にあげてしまった場合には、飛車の点数を1500点から1520点にしてみます。そうすればもう少し飛車を大事にするようになりますよね。
逆に、飛車を大事にしすぎて肝心な王様が取られてしまうような局面が多く見えた場合は、1500点を1480点にします。こうすれば、飛車を大事にするケースが少し減ると思われます。
そうやって、試合内容を吟味しながら、プログラマが微調整を重ねていきました。
こうした調整は、ある程度はシステマティックにやられていたようですが、はっきり言ってプログラマの勘の部分が大きかったはずです。
また、人間が自分で考え、プログラムに反映させていますから、非常に手間暇がかかります。1000項目程度なら、何年にも渡る努力をすれば人間でも調整できますが、その100倍、1000倍、1万倍となるとどうでしょうか。
そして残念ながら、1000項目程度の調整では、将棋の複雑さを表現しきることはできなかったようです。人工知能のプログラマたちも、この方法では決して将棋の名人を打ち破ることはできないということがわかってきたのです。
人工知能の「冬の時代」
コンピュータが生まれた黎明期には、比較的すんなり人工知能が生まれるだろうと予想されていました。そもそも、人工知能の概念はコンピュータが生まれるより前からありましたから(チェスを指すThe Turkというロボットなどが有名です)、それを実装するだけだろうと思われていたのです。
図1−5 The Turk(トルコ人) 18世紀後半に作られた、機械仕掛けの自動でチェスを指す人形。
ナポレオンとも対戦し勝利するなど、ヨーロッパ中で大きな話題を呼びましたが、
その後、内部にチェスの名人が入って操作するしくみであることが判明しました。
人間以外のものに知能が宿るか否かは、昔から人々の関心の的だったのです。
実際、計算力や記憶力なら、ずいぶん前にコンピュータは人類がまったく勝てないレベルに到達しています。現在の一般的なPCは、簡単な計算なら少なくとも1秒に1億回くらいは計算できます。
文章を書くだけなら、私がどれだけ時間を費やしても、コンピュータの記憶力に限界を感じるのは難しいでしょう。
これほどの計算力と記憶力を持つコンピュータに人間の知恵を授けることができれば、それは間違いなく人工知能になるのではないかと、今でも多くの人が思っているはずです。
しかし将棋や囲碁のプログラムが名人を倒すようなレベルになるには、つい最近まで待たなければなりませんでした。どうしてこんなにも予想とのギャップがあったのでしょうか?
その理由は、人間が思っていた以上に、自分の知恵をコンピュータに授けることが難しかったからです。
何が難しかったのか。時代が進むにつれてわかってきたのは、「人間は、自分が理解していることを漏れなく説明することができない」という、驚きの事実でした。
将棋の例に戻れば、私は将棋が強いほうですが、なぜ将棋でよい手を選べるかうまく自分で言えないのです。
よい手というのは言わば「降ってくるもの」であり、必ずしも合理的な思考で考えられたものではありません。つまり私は、自分がどういう風に考えて将棋を指しているかわからないのです。
この衝撃を、将棋を指さない方にも共有してもらいましょう。
皆さん、「こんにちは」と喋ってみてください。
その後で、いったいどのように唇や舌や喉を動かして喋っていたか、説明できますか? おそらくほとんどの方はできないと思います。
また皆さんは、どうやって「歩いているか」説明できますか? 右足を前にして、左足を前にするという説明ではダメですよ。もっと正確に、腰の角度とか膝の上げ具合を説明できなければダメです。
これも簡単には説明できませんね。だからこそ、二足歩行ロボットの完成は非常に困難なのです。
私たちは、「歩くこと」も「しゃべること」もある意味ほとんどわかっていないのです。
このように、人間が普段何気なくしていることすら、コンピュータに落とし込むのは容易ではありません。
同じように、私がコンピュータに将棋を教えることも不可能でした。たとえ将棋の名人であっても、コンピュータに自身の技術を論理的に伝えることはできないでしょう。
これは決して、名人を貶めているわけではありません。およそ世の中の名人芸・職人芸というのは、言葉にならない、説明できないものだからこそ、そのように呼ばれるのです。
70年ほど前、コンピュータが発明された当時、科学者たちはこのことに気づきませんでした。人間の知識をコンピュータに落とし込めば、すぐにでも人工知能ができると楽観的に考えていたのです。
コンピュータ黎明期から、何十年にも渡って、科学者たちは何度も何度も人間の思考をコンピュータにトレースしようと努力してきました。ちょうど将棋プログラムを作り始めたときの私のように。
それらの試みは部分的には成功した例もありますが、ほとんどが失敗に終わりました。その結果訪れたのが、世にいう「人工知能の冬の時代」です。
どうしたら人工知能を進化させることができるのか、まったく展望が見えない状況に研究者もスポンサーである企業も嫌気が差し、人工知能の専門家といえる人は激減してしまいます。
人工知能研究が下火になっていくなか、残った数少ない人工知能研究者は自分たちの研究を人工知能と標榜しなくなります。なぜなら、自身の研究を「人工知能」と打ち出すと、研究費が付かなかったり、業界内で白い目で見られたりしてしまうからです。
そのため当時の人工知能の研究者たちは、自分たちのことを「機械学習」や「サポートベクターマシン(SVM)」といった手法の専門だと名乗っていたようです。
「冬」の厳しさを感じさせるエピソードですね。人工知能の研究が再びさかんになった現在と比べると、まさに隔世の感があります。
私が研究を始めた2007年、2008年はまだその冬の時代が続いており、私自身も当時は研究者・開発者として進むべき道がわからなくなっていました。