人間の真似ができるようになるためのコンピュータの技術「機械学習」を導入することで、将棋AI「ポナンザ」は飛躍的に強くなりました。その結果、生みの親である山本一成さんに勝つほど成長します。しかし、この「機械学習」を導入することで、AIの開発においてある問題が起きたと山本さんは指摘します。それはいったい何でしょうか。
新刊『人工知能はどのようにして「名人」を超えたのか?』では、将棋や囲碁を例に、AIにおいて最も重要な技術「機械学習」「深層学習」「強化学習」の本質を解説しています。今回はそのなかから特別に一部を公開します。
「黒魔術」化しているポナンザ
「機械学習」という技術によって、人工知能は人間の真似ができるようになり、プログラマから「卒業」しました。その結果、人工知能の開発を飛躍的に進歩させたのですが、同時に科学者やプログラマは困った状況になりました。
それは、「解釈性と性能のトレードオフ」――つまり、人工知能の性能を上げるほど、なぜ性能が上がったのかを説明できなくなる、ということです。この傾向は、すでに人工知能の開発における前提や、一種の原則のようになっています。
理由がわからないのに強くなる。人工知能という現代科学の最前線で、なぜそんなことが起きているのか。これからはその説明をしていきましょう。
突然ですが、皆さんは「黒魔術」という言葉をご存知でしょうか。おとぎ話やファンタジーの世界で、魔女が不思議な薬を作るときに使われるような魔法のことです。ぐつぐつと煮えたつ大鍋の前に立ち、意味不明な呪文とともに材料を投げ入れると、煙とともに目的の妙薬ができる……そんなシーンをアニメ作品で観たことがある人も多いと思います。
驚かれるかもしれませんが、この「黒魔術」は機械学習の世界でもスラングとして定着しており、どうやって生まれたのか、あるいはなぜ効果が出るのかわからない技術の総称となっているのです。
当然ながら、人工知能を研究する学問分野である情報科学は、もともと論理や数学が支配する世界でした。理由や理屈がすべてを説明できる世界だったということですね。しかし、現代の情報科学では(とりわけ人工知能の分野では)、だんだんと黒魔術の影響力が強くなってきています。
黒魔術の影響は、当然ポナンザにも及んでいます。ポナンザは私が開発したプログラムなので、細部まできちんと考えて作っています。しかも私は、将棋プログラムという狭い領域のことなら、世界でもトップレベルでよく理解しています。
それでも、ポナンザにはたくさんの黒魔術が組み込まれており、すでに理由や理屈はかなりの部分でわからなくなっています。
プログラムの理由や理屈がわからないとは、たとえばプログラムに埋め込まれている数値がどうしてその数値でいいのか、あるいはどうしてその組合せが有効なのか、真の意味で理解していないということです。せいぜい、経験的あるいは実験的に有効だったとわかっている程度です。
もう少し具体的に説明してみましょう。
現在のポナンザの改良方法は、何らかの新しい改良を考えたら、それを適用したポナンザと以前のバージョンのポナンザを3000試合ほど自動で対戦させるというものです。このとき、新しいポナンザの勝率が52%以上の場合に新しい改良が採用されるという方針をとっています。
私が3000試合の将棋の内容を個別に見ることはなく、統計処理をして計測しています。正確には、将棋の内容を吟味しようにも対局の勝因や敗因がわからないので、吟味できません。すでにポナンザの棋力は、私のレベルを遥かに上回っているからです。
しかも、「改良した作業」とポナンザが「強くなったこと」が、将棋のプレイヤーとしての感覚からは大きく乖離していて、理詰めではその乖離を縮めることができません。うまくいった改良がどこでどう有効に働いたのか、全然わからないのです。
加えてこういった改良の成功率は、今までの経験則によると2%以下です。何らかの改良をして3000試合やってみても、強くなることが確認できるのは100回に2回もないということですね。
そんなわけで、現在のポナンザの改良作業は、真っ暗闇のなか、勘を頼りに作業しているのとほとんど変わりがありません。これは絶対うまくいく、と思った改良が成功しないことは日常茶飯事で、たまたまうまくいった改良をかき集めている、というのが実情です。そのため、たまたまうまくいった改良は、私から見るとますます黒魔術のように見えるのです。
黒魔術の1つ、「怠惰な並列化」
なぜかうまくいった改良=黒魔術の具体例を1つ紹介しておきましょう。「怠惰な並列化」というものです。これは私が発見したものではありませんが、将棋・チェスのAI開発の界隈では有名な事象で、ポナンザもこれを取り入れることで格段に強くなった重要な黒魔術です。
そのために、まずは近年のCPU事情について解説したいと思います。少しだけ専門的になりますが、ご容赦ください。
皆さん、CPUという単語は聞いたことがあると思います。CPU は「セントラル・プロセッシング・ユニット」(Central Processing Unit)の略で「中央処理装置」という意味です。その名のとおり、PC全体の処理や計算をおこなう「頭脳」の部分ですから、その良し悪しがPCの性能に直結することになります。
ちょっと昔まで、CPUはものすごい速度で進化していました。18か月が経過すればCPU内のトランジスタ(網の目状の集積回路)の数は倍になり、性能が向上するという研究開発の流れが続いていたのです。ソフトウェアはその流れに乗っかるだけで、同じコードでも勝手に高速に動くようになるという状態でした。
ちなみに、将棋AIにおいて、コンピュータの処理速度は決定的に重要です。2倍速度が違えば、同じソフト同士でも7~8割の勝率で勝てるようになりますから、コンピュータ将棋の開発者も、ちょっと前まではフリーランチ(タダ飯)=ラクをしていても強くなれる状況でした。
しかしIntelなどのCPUベンダーの巨人たちは、10年前ぐらいにそれまでの延長線上でのCPUの開発に、ある程度見切りをつけました。性能の向上を支える集積回路の微細化に、技術的な限界が近づいてきたからです。
そこで生み出されたのが、「マルチコア化」という技術でした。これは言うなれば、1つのCPUに2つ以上の脳みそ(コア)を乗せるようなものです。その後、従来と同じコアが1つだけのCPUはシングルコア、2つのCPUはデュアルコア、4つのものはクアッドコアと呼ばれるようになります。
マルチコアの何がすごいかというと、これまで1つの脳みそで処理していたことを2つ以上の脳みそで処理できるということです。これを「並列処理」といいます。
並列処理が大幅な性能の向上をもたらすことは、直感的にイメージできるのではないでしょうか。実際、一部のプログラム、ソフトウェアはその恩恵をこうむりました。
しかし、です。将棋プログラムについては、最近まで並列処理による効率化は思ったほど効果を発揮しませんでした。その理由の詳細はここでは説明しませんが、将棋の手の探索という作業においては、通常の「複数のコアが協力して1つの処理をする」という形での並列化が、あまりうまくいかなかったのです。
レストランの調理場にたとえれば、通常の並列化は、複数のシェフが協力して1つの料理を作ろうとするものです。これはたしかに速く料理ができそうですよね。
しかし、それもシェフの人数次第です。1人前の料理を2人のシェフが協力してつくるなら問題ありません。実際、将棋プログラムでも2コアでの並列処理のときは非常に効率よく探索できます。
でもシェフが、8人、16人、あるいは64人になったらどうでしょうか? ここまでくると、むしろどんどん効率が悪くなりそうですよね。そもそもキッチンが人で溢れかえってしまいます。
実際に将棋プログラムでも、ある程度のコア数以上での並列処理は、性能が極端に向上しにくくなります。下手をすると、並列処理をしたせいで性能が劣化したりもしていたのです。
ところが、ここ3年くらいで新しい探索方法が生まれました。正確には昔からあった方法が見直されたというのが正しいかもしれません。それが「怠惰な並列化」です。
この手法はとても単純なプログラムで、ものすごく簡単にいえば「複数のコアがバラバラに1つの処理をする」形での並列化なのです。怠惰な並列化は、複数のシェフが別々に競い合って、1つの料理を作ろうとするものです。そしていちばん速くできた料理をお客に提供します。
もちろんまったく独立で作るわけではありません。各コアは別々に作業するのですが、各コアがたまたま発見できたよい情報は全体で共有されます。このへんのゆるい協力関係を「怠惰」と表現しているのだと思います。
この「適当によい情報を共有し合う方法」がなぜうまくいくのか。いろいろな説明が試みられています。でも、その理由を完璧に説明することは専門家にも容易ではありません。あえて説明をするなら、「実験してみたらうまくいった」くらいでしょうか。まったく説明になってないともいえますが、ある意味ではこれ以上の真実はないのです!
以上がポナンザと黒魔術のお話でしたが、ここではっきりとお伝えしておきたいのは、私が黒魔術を嫌っていたり、ポナンザが黒魔術化することを恐れているわけではないということです。
なぜならポナンザは、私よりも遥かに強い将棋のプロ棋士たちを相手に戦うために設計されているからです。今の人工知能というものはプログラマの直感や予想された性能を逸脱することが求められています。だからポナンザは私の理解の及ばない範囲にいてくれなければいけないのです。