2017年4月1日に行われた第2期電王戦で見事佐藤天彦叡王を破った将棋AIポナンザ。開発者である山本一成さんは、開発にあたり「知能とは何か?」「知性とは何か?」ということを何度も自問することになったそうです。そうすることで、逆に人間の知能がクリアに見えてきたと言います。この思考の結果こそ、AIの本質を理解するカギと言えるでしょう。
新刊『人工知能はどのようにして「名人」を超えたのか?』では、将棋や囲碁を例に、AIにおいて最も重要な技術「機械学習」「深層学習」「強化学習」の本質を解説しています。今回はそのなかから特別に一部を公開します。
人間の知能について考えることが
人工知能を理解する近道
未来から振り返れば、2008年ごろからの10年間は、人工知能(Artificial Intelligence; AI)の歴史において最も重要な時期だったと言われることになるかもしれません。
深層学習(ディープラーニング)という技術が大幅に発達し、それまでコンピュータには解決不可能だった問題が、計算可能な問題として処理できるようになりました。その結果、自動翻訳や自動運転といった、かつては夢物語でしかなかったような技術が着実に現実味を帯びてきています。
またこの10年は、囲碁や将棋といった「知性の象徴」とも言えるゲームで、コンピュータが人間のトップクラスのプレイヤーに勝てるようになった時期でもあります。
囲碁ではグーグルが開発した「アルファ碁」であり、将棋では私が開発した「ポナンザ」がその代表です。
アルファ碁は、2016年に囲碁の世界トップレベルの棋士に圧勝し、一躍有名になりました。
またポナンザは、4月1日に開かれた第2期電王戦第一局では、プロ棋士の頂点、佐藤天彦名人に勝利しました。
私が開発しているポナンザが、グーグルのアルファ碁と同じ性能を持っているわけではありません。しかし、将棋や囲碁というゲームにおいて、人間よりもさらに深い所まで到達しつつある人工知能である、という点では同じです。
アルファ碁は(知られている限り)誕生からわずか数年で、現在の強さになりました。ポナンザの誕生は10年前ですが、急速に強くなったのはやはりこの数年のことです。
なぜ近年に、そのような急速な進歩が起きたのか?
本書の目的の1つは、その答えを読者の皆さんにお伝えすることにあります。
そして同時にお伝えしたいのが、「知能とはなにか」という問題への、私の(今のところの)考えです。
ポナンザを成長させてきたこの10年は、私にとって大変な驚きと喜びに満ちたものでした。その経験のなかで、私は「知能とは?」「知性とは?」という問題を幾度となく自分に問いかけることになったのです。
私たちは日々、さまざまな問題を自分自身の知能で解決しています。しかし、自分の知能そのものについて考える機会はどれだけあるでしょうか?
人間は、どうして将棋や囲碁で強くなれるのか? そもそも人間は、どのように意思決定をしているのか? そしてなぜ、あなたは今この文章を読んで、理解することができるのか?
言われてみれば不思議なことばかりなのですが、私たちはそれをふだん意識することはありません。人工知能について日々考えることで、逆に人間の知能というものがクリアに見えてきました。そして、その思考の結果を皆さんとシェアすることが、おそらく人工知能をもっとも本質的に理解していただける方法ではないかと思ったのです。
といっても、決して難しい話にはなりませんのでご安心ください。将棋や囲碁の例を軸にしながら、人工知能において最も重要な3つの技術、「機械学習」「深層学習」「強化学習」の本質を、できる限りわかりやすく解説します。ポナンザを作りながら、私自身が直感的に腹落ちしたことをお話ししますので、この本でしか読めない内容になっているはずです。
将棋の名人を倒すプログラムは、
名人でなければ書けないのか?
10年前、大学2年生のときに図らずも留年してしまった私は、東大の将棋部の部室で時間をつぶすようになりました。
留年ゆえに出なければならない講義も少なく、暇を持て余すようになると、将来のことも考えて、それまでまったく詳しくなかったプログラミングの本を読むようになります。すると、いつしか1つの考えに取り憑かれるようになったのです。
将棋の名人を倒すプログラム=人工知能を作るには、どうすればいいのだろうか?
きっと将棋の名人がプログラミングをしなければならないのだろう。将棋の名人が持てる知識のすべてを書き込むことで、初めて人工知能が名人に勝てるようになるのだろう? と。
当時の私はアマチュア五段。決してプロ棋士ほどではありませんが、全国で数百万人いる将棋ファン、アマチュア棋士のなかでも上位1000人に入るくらいの段位です。学生の関東大会で準優勝もしていましたから、十分に強いと言ってよいレベルです。
実際、コンピュータ将棋を作っているチームは個人・団体も含めて50ほどあるのですが、私はそのなかの誰よりも将棋が強かった記憶があります。
だから、私がプログラムを書けば、名人には勝てないまでも、誰よりも強い将棋プログラムが作れるに違いないと考えたのです。
大学3年生までの私は理系でありながら、PCの操作すら苦手だったのですが、その思いつきをきっかけに急速に人工知能とプログラミングの研究にのめり込んでいきました。次第に、起きているすべての時間を将棋プログラムに費やすようになったのです。
そして数か月ののち、私が初めて作った将棋プログラム「ポナンザ」が完成します。
いざ、ポナンザをもって将棋部の部室に駆け込みました。
もちろん当時の将棋部の部員たちは、アマチュア五段である私が将棋プログラムを作っていたことを知っていました。それに当時は、最先端のコンピュータ将棋がアマチュアのトップレベルに迫ろうとしていた頃でした。
つまり部員たちは、なかなかの強敵出現と予想していたわけです。
PCの画面に私のポナンザが起動します。
将棋部員たちのあいだに緊張が走ります。
その結果は……ボコボコにやられました。
ポナンザはとんでもなく弱い将棋プログラムだったのです。
当時のポナンザの弱さは、皆さんの想像を絶すると思います。
私も、試しに八枚落ちという、ほぼ最大限の戦力差をつけてポナンザと戦ってみました。
八枚落ちという非常に少ない戦力で、私(上)がポナンザ(下)と戦う。ちょっと勉強した人ならこれだけ戦力差があれば将棋のプロ棋士にも余裕で勝てます
私が勝ててしまいました。
こんなに将棋で勝ちたくなかったのは、この対局が初めてでした。
私は、たしかに本物の情熱を傾けてプログラミングをしたのです。あの数か月は、ただ将棋プログラムのためだけに生きた時間でした。
その結果が惨敗でした。
当時はプログラミングを始めて実質的にまだ半年足らずだったので、私がプログラマとして稚拙だったことは否めません。
しかし本当の問題はそこだけではありませんでした。
将棋が強かった私は、「自分は将棋がわかっている」と思っていました。
でも実は、私は将棋のことがある意味全然わかっていなかったのです。さらに、私は知能というものについても、全然理解していなかったのです。