左:山本一成さん、右:大橋拓文六段
チェスと将棋と囲碁。言葉で表現できないのはどれ?
加藤貞顕(以下、加藤) お二人は、チャレンジマッチの当日もニコニコ生放送で対局の解説をしていたんですよね。全5局をごらんになって、どう思いましたか?
大橋拓文(以下、大橋) いやあ、アルファ碁強かったですね。それにつきます。第1局に負けた時はショックだったんですけど、冷静になったらアルファ碁と対局したらどう打つかなと考えてちょっとワクワクしました。自分が打っている囲碁の、その先の世界を見せてくれましたね。
山本一成(以下、山本) 今年の1月に『Nature』に載ったディープマインド社のメンバーによるアルファ碁についての論文を読んだんですよね。そうしたら、「アルファ碁はAIの金字塔の一つ」みたいな表現があって、自分で書くか? と(笑)。普通、論文でそこまでの表現をすることはないので、ずいぶん強気だなと思ってたんです。それがね……もうあの5局を見たら、まさに金字塔だと認めざるをえない。アルファ碁、すばらしかったです。
Google DeepMind公式HPより。右がイ・セドル九段
加藤 そもそも、今回の人間代表の対局者である、イ・セドル九段は、どのくらいの棋力なんですか?
大橋 いやあ、ものすごく強い人です。2007年から2011年まではレーティングの世界ランキング1位でした。その後も、毎年トップ5には入っていますね。昨年末から今年にかけて開催された世界棋戦でも、最終ラウンドで日本の村川八段、中国の名人である連笑七段、井山六冠に三連勝したんですよ。この3局はすべて圧勝で、負けた側は敗因もよくわからなくて気がつくと負けているという感じのゲームでした。それを見て、みんなは「アルファ碁がどんなに強くても、さすがにこんな強い人には勝てないだろう」と思ったんです。ところが、そのイ・セドルさんに、アルファ碁は同じような完勝劇を3局続けてやってのけたという……。
加藤 なるほど、セドルさんの強さがよくわかりました。山本さんは最強の将棋プログラムPonanzaの作者でいらっしゃいますが、アルファ碁がなぜこんなに強くなったのか、ということを簡単に教えてもらってもいいですか? コンピュータが人間に勝利するという歴史は、チェス、将棋ときて、とうとう囲碁にたどり着いたんですよね。
山本 じゃあ、まずは、チェスと将棋と囲碁の違いについて話しましょうか。将棋や囲碁がこんなに強くなったのは、コンピュータがデータから自分で学習する「機械学習」という分野の研究が発展したからなんですけど、一番最初に勝ったチェスのときは、機械学習はいらなかったんです。
加藤 チェスは、約20年前にIBMのDeepBlueというコンピュータが、当時の世界王者・カスパロフ氏と対戦して勝利しましたよね。ぼく、当時の中継を、ワクワクしながら見てました。DeepBlueは、ひたすら計算して先の手を読むことと、駒を取ることを高く評価するということを教えて強くなったんですよね。
山本 単純に言うと、そういうことです。つまり、チェスというゲームは、人間が強さを記述することが可能だった。言い換えると、言葉に還元することができたわけです。でも、将棋はちょっとむずかしかったんですよね。
加藤 機械学習が導入される前、将棋プログラムの強さがアマチュア四〜五段くらいで止まっていたころがありましたよね。
山本 それはつまり、人間が「将棋の上手な指し方」を、そこそこプログラムで書くことができたということですよね。でも、将棋というゲームを書き切ることまではできなかった。だから、それ以上強くならなかったわけです。そして、囲碁はもっとややこしいんです。そもそも何をどう書けば、囲碁というゲームを表現できるのか、まったくわからなかった。
加藤 それは、人間の論理力に限界があるということですかね?
山本 というより、言葉の限界ですね。言葉ってけっこう無力なんですよ。だって、私は目の前にある机のことを、言葉だけで表現することができません。「茶色い」といっても茶色にはいろいろあるし、いろんな木目の素材が組み合わさっていることを、正確に言葉で言うのってむずかしい。プログラムの要素の一つは言葉なので、記述可能であるかどうかというのは、プログラムにできるかどうかということに大きく関わるんです。そして、チェスは記述可能で、将棋はイマイチで、囲碁はわけわからない、という時代が続いていました。
大橋 なるほど、そうだったんだ。たしかに囲碁は、言葉でうまく言えないことが多いかもしれない。ぼくは常々、人に囲碁を教えるときにそれを感じていました。言葉で伝えきれないところを端折ってしまうから、それが嘘をついているみたいになってしまうな、と。
加藤 囲碁って「多く陣地を取ったほうが勝ち」というルールはすごくシンプルなゲームですが、プロの解説を聞いていると抽象的なことを言いますよね。「このへんの白は模様がいいですね」とか。初心者だと、模様とかさっぱりわからないです(笑)。
山本 そうそう(笑)。
コンピュータは画像認識で人間の精度を超えた
山本 で、将棋は「機械学習」という手法でかなり強くなりました。まず、玉(王様)を含む3駒の関係で、将棋というものを効率よく表すことができることが発見された。つまり、王様の近くに味方の金がいたら高く評価するなど、3駒関係の組み合わせで盤面を表現することができる。うまく将棋というものの特徴を見つけることができたんですね。そうしたら、あとは計算するだけです。1局面あたりの3駒関係って、だいたい1600程度なんですよ。
加藤 なるほど。1600というのは、意外と少ない、のかな。
山本 そう。これってコンピュータの計算コストとしてはすごくリーズナブルなんです。将棋盤をうまく表すことができて、なおかつ計算コストが安い。そして、プロの棋譜をたくさん読み込ませて、どういう手がいい手なのかを教えていった。この手はいい、この手はわるいという評価をする「評価関数」を、人間が手動でプログラムで書くのではなく、棋譜から自動生成するようにしたのが2005年に登場した将棋プログラム「Bonanza」の画期的な部分でした。それ以降の将棋プログラムは、ほぼみんなボナンザメソッドを使っています。
加藤 プロが指した手とほかの合法手(反則ではなく指せる手)を比べて、プロが指した手を一番よしとするように学習させたんですね。
山本 そうです。いまはもうこの段階を越えて、コンピュータ同士を対戦させて、つまりコンピュータが自分でつくった局面から学ぶようになってますけどね。これはいわゆる「強化学習」と呼ばれるもので、アルファ碁も同じことをしています。そして、2006年くらいから機械学習の分野で、「ディープラーニング」というものが出てきました。簡単に言うと、アルファ碁はこのディープラーニングと、強化学習を組み合わせて強くなりました。 で、ディープラーニングがとくに注目されたきっかけは、画像認識が上手だったんですよね。昔はコンピュータって、タコと花瓶を見分けることもできなかったんです。デザイン性の高い花瓶って、ちょっとタコっぽいじゃないですか(笑)。でも、ディープラーニングが出てきて、一気に画像認識の精度が上がりました。
加藤 今では人間よりも精度が高いんですよね。
山本 そうです。いまや猫の品種まで見分けますからね。間違えるときも、タコと花瓶とかじゃなくて、バイオリンとギターなど、「それはたしかに似てるよね」という、人間でも間違うものです。で、この能力を囲碁に転用してみたらいいんじゃない? という研究が、2年くらい前から出てきたんです。私も、囲碁に向いてそうだなと思ってました。
大橋 将棋はディープラーニングをやっても、あまりうまくいかなかったという話を聞いたことがあるよ。
山本 将棋はすでに他の方法で強くなってるから、わざわざディープラーニングをやらなくてもいいと思う。ディープラーニングの欠点は、計算コストが高いことなんだよね。コンピュータのリソースをものすごく食う。1秒で300局面しか評価できない。これは信じられない遅さです。
加藤 1秒に300局面は少ないんですね。
山本 Ponanzaは1秒に10万局面は評価できます。だから私は「こんな遅い方法、うまくいくわけない」と思いこんじゃったんですよね。でも、囲碁には画像認識の応用が予想以上にうまくいった。ディープラーニングというのは、脳の視覚野の神経回路を模したニューラルネットワークを多層化したものです。
加藤 すみません。最後、一気にわからなくなりました(笑)。
山本 ホワイトボードに描きます(笑)。ニューラルネットワークという仕組みなんですが、たとえば囲碁の盤面があったら、そのいろんな要素を「少しずつ」つなぎ合わせていくテクニックです。そのつなぎ方、配線の仕方が特徴的なんですよね。いくつもの層に、情報を畳み込んで伝えていくんです。
加藤 なるほど。「畳み込む」というのは、ある局面の評価を、多層的に行うってことなんですね。ちょっと面倒そうですが、なんでそんなことをするんですかね?
山本 えーと、わかりません(笑)。ただ、畳み込んだらうまくいくんです。伝達するうちに各層で学習が繰り返されて、問題の解決に必要な変数や特定の概念を特定付ける変数が、結果的に抽出される。
加藤 情報を層ごとに「少しずつ伝える」というのも、おもしろいですよね。普通に考えると、盤面全部の情報を伝えて学習させたほうが、いいような気もします。
山本 そうですよね。でも、そうするとうまく学習できないんです。いきなり全体の情報をすべて見るのはよくないんですよね。「右上の黒がよさそうだな」くらいの情報を伝えるのはいいんですけど、「この位置に黒石があります」みたいなはっきりした情報は使いづらい。で、それを13層前後くらいまで、畳み込んで伝えて、というのを繰り返して、最終的に我々が認識しているような盤面に集約させる。レイヤーが重なるごとに、情報が抽象化されて伝わっていくんです。
大橋 抽象化して伝えるなんてことができるんですね。本当に脳がやってることみたいだ。
丸暗記しないで、抽象化して考えるプログラム
山本 また、先ほど畳み込みのレイヤーが13層前後に分かれていると話しましたが、アルファ碁の場合、各層は192個のチャネルに分かれています。そのチャネルは「この局面の○○について考える場所」「△△について考える場所」とそれぞれ異なっている。○○とか△△とかの内容は、乱数で決めているから、人間が意味づけするのはむずかしい。つまり、何の要素で分けてるかわからない。画像だったら、例えば直線についてのフィルター、とかそういう分かれ方をしているんですけどね。
大橋 ああ、でもそれって囲碁を打っているときの人間の思考と一緒かもしれない。盤面を見て何について考えてるか、言語化するのはむずかしいから。
山本 で、囲碁は盤面が19☓19だから、処理するデータの量は19×19×192×13になる。この計算が一局面ごとに発生する。これは、さすがにコンピュータでも計算するのが大変です。アルファ碁では、プログラムを強くするための事前学習でもこの計算をしていて、実際に打っているときもこの計算をしています。
加藤 そうなんですか。対局中は、事前学習の結果を呼び出しているだけなのかと思っていました。じゃあ対局するだけでもすごくお金がかかるのでは?
山本 電気代だと100万くらいじゃないですか?(笑)
加藤 データセンターを動かすコストもあるし、えらいことになりそうですね。
山本 ですね。でも、事前学習とか対戦実験のほうが、実際の試合の何倍もコストがかかっていると思います。ちなみに、私はアルファ碁はCPUが1202個、GPUが176個と報道されているのを見て、Googleが持っている計算リソースと比べて、けっこう小さいなと思いました。
大橋 これでも人相手には充分だ、と思ったのかな。
山本 いやいや、大きくして強くなるなら、いくらでもやりたかったと思うよ。でも対戦実験していた状態から、本番前にいきなり大きくすると、バランスが崩れて変な動きをするかもしれない。並列化はいろいろ問題が起こる可能性があるから、そのリスクを避けたんだと思う。
大橋 そうか、バランスが変わってしまうのはこわいね。
山本 で、囲碁というゲームは記述するのがむずかしい一方で、「囲碁盤」はそれを画像としてディープラーニングで扱うのにすごく都合がいいんですよ。また、チェスや将棋は盤面の駒を移動させるから、どこからきたかという情報をいれなければいけないんですよね。でも囲碁は常に盤外から石を打つので、打ち手がきれいに確率で表せる。だから最初はひたすら局面を入力して、プロが打った手の確率を一番高くする、ということを繰り返して学習させた。
加藤 対局では学習したのと同じ局面が出てくるわけじゃないですよね。それはどうやって考えるんですか?
山本 先ほどのディープラーニングの話につながるんですけど、学習するときに各層に「少しずつ」情報を伝えるという話をしましたよね。あそこで、制限を与えてるところがポイントなんですよね。ニューラルネットワークってすごく表現力が高くて、普通に全部つなげていくと局面を丸暗記できちゃうんですよ。でも、それだと同じ局面が出てきた時にしか役に立たなくなる。入ってくる情報に制限を加えて、それでも正しい手が出てくるように学習すると、応用が効く思考ができるようになる、というわけです。 既存のデータに適合しすぎて、未知のデータに対して応用が効かない状態を、機械学習の世界では「過学習」と言います。それを防ぐ方法がいろいろ考えられている。畳み込みもそのひとつで、情報を抑えることによって、ちょうどいいバランスになってる。
大橋 理屈はわかったけど、それを実装したときに、囲碁を打つのにちょうどいいバランスに設定できてるのがすごいと思う。
山本 いや、人間にはちょうどいいバランスがわからないから、いろいろ実験して良さそうなのを採用してるだけだと思いますよ。チャネルは192個が一番いいのか、レイヤーは13層が最適なのか、それも最初はわからない。ディープマインド社ではチャネルを128、192、256……といくつか試してみて一番良かったのを採用する、とかそういうことをしているようです。ディープラーニング職人は、そういうのを毎日地道に調整してるんですよ(笑)。ほかに、論文には書いていないこともいろいろ試しているはずです。
加藤 力技だなあ。これは、資金力があるところが強いですね(笑)。
山本 お金はあるといいですよね。お金がないと、知恵を絞らないといけないから(笑)。
構成:崎谷実穂