AlphaGoが誇大広告ぎみな件(A級リーグ指し手1号)

写真拡大


今回はブログ『A級リーグ指し手1号』からご寄稿いただきました。
※すべての画像が表示されない場合は、http://getnews.jp/archives/1403045をごらんください。
■AlphaGoが誇大広告ぎみな件(A級リーグ指し手1号)
Googleが開発した囲碁ソフトのAlphaGoが、世界で初めてプロ棋士に勝ったコンピュータとして大きなニュースになっています。Nature誌に論文が掲載されたのですが、仔細に読むといくつか不可解な点がありましたので、調査・考察してみました。

AlphaGoの論文はこちら*1から見えます。プロ棋士に勝ったこともありますが、何よりコンピュータ囲碁開発者(及び隣の分野のコンピュータ将棋開発者)を驚かせたのは、「既存の他の囲碁プログラムと対戦させた結果、495戦494勝だった」との報告でした。この報告は衝撃的で、これを読んだ他のコンピュータ囲碁開発者たちからは「俺の今までの努力が否定された」「目標を見失ってしまった」などの悲嘆の発言が相次ぐ始末でした。

*1:(現在は閲覧ができません)
https://storage.googleapis.com/deepmind-data/assets/papers/deepmind-mastering-go.pdf

論文から、AlphaGo、対戦相手のプロ棋士、及び他のソフトのレーティングを示したグラフを引用します。


(画像が見られない方は下記URLからご覧ください)
http://px1img.getnews.jp/img/archives/2016/02/a01.jpg

CrazyStoneとZenはこれまでは最強クラスとされていた囲碁ソフトで、この2つどうしは大体同じ棋力と言えるでしょう。それぞれ「最強の囲碁」「天頂の囲碁」として市販されています。Googleはこれらの市販ソフトと自分達のAlphaGoを対戦させてレーティングを出したとのこと。薄いピンクの部分は、4子置いたときの勝率の上がり方を考慮したものです。これによると、AlphaGo 1台とCrazyStone(以下”CS”と略記)/Zenの差はレーティングにして1000近く。勝率で言うと99%以上の圧倒的な差です。4子置いてもなお500近い差、となっています。

Fan Huiというのが相手のプロ棋士の名前です。(以下、棋士の名前は敬省略。)2段とのこと。囲碁プロ棋士のレーティングを示すサイト*2がありまして、ここによると(1月30日現在で)世界ランキング631位、レーティング2917です。上記のグラフは、Fanのレーティングを基準として、推定されるFanとの差から他ソフトを相対的に位置づけたものです。

*2:『Go Ratings』
http://www.goratings.org/

私自身もコンピュータ将棋をやる傍ら、一時期はコンピュータ囲碁を開発していたこともありまして、このニュースには強く興味を持ち、論文を読んでみました。すると、いくつか疑問点が出てきて、「このニュース/論文、どこまで本当なのだろうか?」と疑いを持つようになり、いろいろ考察してみました。

結論から書きます。

結論1)Google論文は「従来ソフトよりレーティングで約1000上回った」と主張するが、実際には技術的改良による向上分は200程度と思われる。この改善幅は、コンピュータ将棋では毎年実現されていたのと大差ない程度の幅にすぎない。

結論2)「プロ棋士に勝つ」ことは、実は技術的には従来から可能だった。Googleはそれを実際に(対局相手に対局料を払って)実現した、にすぎない。

以下、この結論に至った過程を順に説明していきます。

●【疑問その1:CS/Zenのレーティング】
最初に「おかしいな」と思ったのは、CS/Zenのレーティングです。論文のグラフだと2000弱程度、4子で2500程度に見えますが、両ソフトの実力は本当はもっと高いことを示すはっきりした根拠があるからです。

これまでにプロ棋士対囲碁ソフトの対局はけっこう行なわれています。コンピュータ囲碁のウィキペディア*3にもいくつか書かれていますが、いちばんまとまっているのは(英語ですが)ここのページ*4だと思います。

*3:「コンピュータ囲碁」 『wikipedia』
https://ja.wikipedia.org/wiki/コンピュータ囲碁

*4:「Human-Computer Go Challenges」 『computer-go.info』
http://www.computer-go.info/h-c/

けっこうたくさんありますが、2012年以降、19路、人間はプロ、ソフトはCS, Zen, DolBaram(CS,Zenと並ぶ最強ソフトの一角)のいずれか、という対局だけ見てみましょう。この中では連笑は超一流(タイトルホルダークラス、レーティング3479)で、彼には5子で負け、6子で勝ちとなってます。このクラスには4子はきついようですが、武宮正樹、依田紀基、趙治勲、周俊勲あたりの3100-3200クラスにはけっこうな回数の対戦があり、4子でまあ勝ち越している感じ。正確な計算まではしてませんが、ざっくり見るかぎりCS/Zenの棋力は、4子置いたときに3200程度、と考えられます。

もちろん多少の誤差はあると思いますが、いくらなんでも2500というのは考えられません。つまり、Google論文では、CS/Zenの棋力を700程度不当に低く評価している、と言わざるを得ません。495戦494勝という対局結果についても、CS/Zenが実力通りならレーティング差からしてありえない話なので、何らかの理由で実力が出せない状況で対局がなされたのだろう、と推測されます。なぜこうなったのか、についてはまた後ほど論じます。

なお互先の場合は、Googleのグラフでは4子より500ほど下に見えます。つまり、4子のレーティング効果が500、と。これはトーナメントの結果ということなので正しいとしましょう。ただし4子といっても、プログラムの都合でコミ7.5目ありだそうなので、本来の(コミなしの)4子の差は500よりはやや大きいはずで、まあ600くらいとしましょう。すると互先のCS/Zenは2600程度と推定されます。

●【疑問その2:AlphaGo論文の技術的改良点】
論文では、従来のソフトと比べて技術的にどのような点を改良したのかが書かれています。それを読むかぎり、まあ漸進的な改良で多少強くなることはわかるものの、レーティングで1000上がるほどのブレークスルーとは正直ちょっと考えづらい、というものでした。

論文によると、基本はCSやZenと同じく、MCTS(モンテカルロ木探索)をベースとしています。MCTSでは、現在局面(ルート局面)から浅い数手を展開して、その末端からは終局までランダムに手を選択して進めるランダムシミュレーション(プレイアウトと言います)を行ないます。そのプレイアウト結果の勝率によって、末端局面を評価します。

AlphaGoの改良点は、ざっくり言うと

改良点1)木探索およびプレイアウトでそれぞれ手の評価を行なうのだが、この評価値をディープラーニングによって決めた。実行時間の関係上、多数回実行するプレイアウト中の評価は「軽い」(実行時間の短い)ものである必要がある。そのため、木探索用の、精度は高いが重い手評価関数とは別に、プレイアウト用に精度が低いかわりに軽い手評価関数を用意した。

改良点2)局面の評価関数を強化学習によって作成した。末端局面の評価を、従来のようにプレイアウトのみで決めるのではなく、局面評価関数も考慮するようにした。

の2点です。

これらによって、若干強くなるというのはまあわかります。ですが、基本がMCTSである以上、MCTS固有の弱点があり、そこは全く手がつけられていない。MCTSは、その性質上原理的に、「深く、正確に」読むことが苦手です。それは即ち、死活やコウ争いが苦手ということになります。そこが克服できないかぎり、漸進的な向上はできても、大幅な棋力向上は難しいだろう、と私は考えています。ですから、今回のAlphaGoの改良が、これまでの最強ソフトであるCS/Zenよりレーティングで1000も上がるブレークスルーだというのはちょっと納得しかねるものがありました。

●【AlphaGo再考】
以上の2つの疑問点から、Google論文は「CS/Zenの棋力は不当に(700だけ)低く評価している。その他の点は正しい」と仮定しましょう。この前提の元に描き直したのが次のグラフです。


(画像が見られない方は下記URLからご覧ください)
http://px1img.getnews.jp/img/archives/2016/02/a02.jpg

AlphaGo(1台)とCS/Zenのレーティング差は200程度です。AlphaGo(distributed)というのは、CPU 1202個という第2回電王戦のGPS将棋を上回るクラスタバージョンです。これは1台バージョンよりレーティング250ほど上なのですが、技術的にはCS/Zenもクラスタ化するのはそう難しくないでしょう。将棋で使うαβ探索はカットノードという並列化しても無駄なノードがあり、無駄な並列化を避けてCPUリソースを効率的に使うことが非常に難しかったのですが、モンテカルロ囲碁ではそのような問題がないので並列化は比較的容易です。

対プロ棋士でのCSやZenのマシン構成は、記録が見つからないものもあってすべてわかっているわけではありませんが、第1回電聖戦では「CS: 64コアサーバ、Zen:6コアPC x 5台のクラスタ」という記述がありました。Zenはクラスタとはいえ、コア数ではAlphaGoの1台(48CPU + 8GPU)より少ないです。1202 CPUのマシンが使えるなら、AlphaGoと同様に250上げることはそう難しくないでしょう。ですからクラスタによる向上はAlphaGo固有でない、と考えてよいでしょう。CS/Zenは、単にそうした大規模クラスタが使える環境がなかった、というだけです。

そう考えると、AlphaGoによる進歩はレーティング200程度、と推定されます。レーティング200向上というのは、もちろんそれなりに評価すべき進歩ではあるのですが、正直それほどすごいという気はしません。コンピュータ囲碁はここどうなのかよく知らないのですが、コンピュータ将棋の例で言うと、名人を超えた2012年の直前の5,6年は、毎年レーティングが約150ずつ上がっていきました。なので、AlphaGoが「200向上」と聞いても、「将棋では毎年それに近いくらい上がってたよね」としか思わない、というのが私の率直な感想です。コンピュータ囲碁の人たちはここどう思うのか聞いてみたいですけれども。

あともう1点、「プロ棋士に初めて勝った」についてですが、これも自慢のポイントが正直よくわかりません。上記のレーティングサイトで見ると、Fan Huiよりもまだまだ下にプロ棋士がいます。記載されてるいちばん下で2600程度。これで終わりでなく、もっと下もいるわけです。ですから、2600程度のCSやZenでも、プロ棋士であれば誰でもいい、と相手を選ばなければ、低段位の棋士と戦って勝つことは今までも十分可能でした。

それが今までなされなかったのは、これは私の憶測になりますが、ひとつには低段位の棋士に勝ってもそう自慢にもならないだろうと思ってやる気がしなかったこと。もうひとつは、お金の問題です。低段といっても相手はプロなので、対戦してもらうにはそれなりの謝礼が必要になります。まして普通の対戦でなく、「ソフトと戦って、負けたら『世界で初めてソフトに負けた棋士』として永遠に語りつがれる」というリスクを考えると、通常の対局謝礼よりはずっと高い報酬でないと受けてもらえないと予想されます。囲碁ソフト開発者は個人レベルでやっている人が多いので、そんな大金は出せないと思ったことでしょう。

ところがGoogleは、ほとんど誰も知らないような低段のプロと対局の話をつけた。Fan氏の報酬については知りませんが、おそらくけっこうな金を積んだのでしょう。それで実際に対局して、「勝った!世界初!」となっているわけです。いや、悪いというつもりはないです。ただ、新聞やTVも大々的に報道してたけど、これってそんな大ニュースなんだろうか、というのが私の感触です。まあ、Googleの宣伝がうまかった、ということなのかもしれませんが。

●【なぜCS/Zenが過小評価されたか】
さて、この点に戻って考えてみましょう。いちばん単純な答えとして考えられるのは「Googleが宣伝のため意図的に嘘をついた」なんですが、それはさすがにないと思います。Natureに載せるのですから、万一後で嘘がバレたりすると、博士号を剥奪されたりとか手記を発表したりとかいろいろありますので。ですから、論文では「嘘は書いてない。事実だけを書いてある」ものと仮定します。

ただここがくせもので、「嘘ではない、事実しか書いてない」としても、結果として読んだ側が得る印象が真実の姿とはまったく異なるようにする、という書き方は可能です。意図的か偶発的かは別としても。ですので、論文の細部を注意深く読んで理解し、真の姿を見極めないと、誤った印象に踊らされる可能性があります。

まず「495戦494勝」は、事実であり、実際に対局が行なわれてそういう結果だったのでしょう。それは大前提とします。ただこれは、上で書いた「レーティングは200差」ならばまずありえない話なので、「じゃあなぜそうなったのか」の説明が必要になります。

現時点での私の考えとしては、少なくとも以下の4点が原因となりえたと考えています。もちろんこれはあくまで現時点(2016-01-30)での話で、今後新しい情報が入ってくれば変わる可能性はあります。

◆原因1)CS/Zenが市販バージョンだった

たとえばコンピュータ囲碁(将棋でもそうですが)の大会に出る時に開発者が使用するプログラムと、それを元に市販ソフトを作るときのプログラムとでは、バージョンや設定がかなり変わることがあります。開発版の方は通常、その時点で最強の力を出せるように、その時のマシンに合わせて細かくチューニングされていますが、市販版の方はギリギリの強さよりも、製品としての使いやすさ、安定性、様々なマシンで動作する可搬性などの方が重視されます。その結果開発版よりはかなり弱くなります。どの程度弱くなるかは、一概には言えませんが、囲碁プロ棋士の意見として「置石ひとつくらい」とか「3子くらい」といった声が見られます。

置石ひとつがレーティングでどれだけに相当するのかも、定説はないのですが、たとえばこの記事*5ではp.20で「150点差で1子」となっています。いやもっとある、という声もあるのですが、150は低めの見積もりのようなので、ここでは「1子は少なくとも150点以上」と仮定します。そうすると、市販版は開発版より少なくとも150は弱い、ということになります。Google論文では「CS/Zenは市販版を使った」と明記していますので、これは間違いなく原因のひとつとなっています。

*5:「囲碁における段級位決定について(PDF)」 『kashiのページ』
http://kashi.dip.jp/~kashi/rating/rating.pdf

なお置石N子というのは、N−1個置いてから黒が(残った星に)打ち出して対局を開始すると考えると、N子と言ってもアドバンテージとしてはN−1個ぶんに相当します。ただし置碁は通常コミがないので、コミを約半子相当とすると、N−0.5個ぶんくらい、と考えるのが妥当のようです。先に、グラフを見ると4子が600くらい、と書きましたが、この式だとN=4で150*(4-0.5)=525。そこそこ合ってるようです。

◆原因2)マシンが違う

これは論文にはっきり書いてあるのですが、ソフトどうしの対戦をしたときに各ソフトが使用したマシンが異なります。AlphaGo(1台)は 48 CPU + 8 GPU。これに対して CS は32 CPU、Zenは 8 CPU。こうなったのはおそらく、市販ソフトとして設定できる最大構成がそうだったのだろうと思います。

しかしそれにしても、これだけ構成が違う状況で対戦させて、その結果を引用して「これだけ強くなりました!」と主張するのは、いくら背景が(細かい字で、紙版にはなくWebだけにつく、いちばん後ろの方の付録で)明記してあるとはいえ、ちょっとGoogleの見識に疑問符がつくところです。

◆原因3)チューニングが十分でなかった

上の原因1と少し関連するのですが、開発版では通常、その時の大会なりで使用するマシンやプログラムの構成を細かくチューニングします。チューニングの際考慮する点としては、CPU数、キャッシュ容量、メモリ量、GPU使用の有無、(クラスタなら)ネットワークの速度、Hyper Threadingの有無、使用するコンパイラとそのオプション、時間配分、その他各種の資源配分、等々とにかくいろいろあります。囲碁ソフトがプロ棋士と対戦する時は、いつにも増してチューニングに心を配るでしょう。

しかし市販ソフトでは、売る側はどんな状況で使用されるのか事前にわかりませんので、必然的に「最大公約数」的な構成を想定してオプション等を決めることになります。その結果、一般的でない構成だとチューニングが合わず、リソースに見合う実力が出ないことがあります。

上記はあくまで推測にすぎませんが、これが起こっていることを示す間接的証拠は論文中に見られます。上に示したレーティングのグラフで、CSとZenはほぼ同じ強さになっています。しかしこれ、実はCSが32 CPU、Zenが8 CPUなのです。CSとZenはもともとがほぼ同じ強さと考えられますので、32 CPU vs 8 CPUでは本来は32 CPUの方がかなり強くなるはず。しかしそうならないのは、32 CPUの方でチューニング不足の弊害が出て、リソースに見合う実力が出ていないことを示唆しています。

CSの市販版である「最強の囲碁」を販売しているのはアンバランスという会社ですが、あまり大きな会社ではなさそうです。32CPUマシンというものは相当高いものだし、ホームページをざっと見たところ、サーバ向けの仕事をしているわけでもなさそうなので、マシンを持っているかも微妙そうなのですが、32CPUモードできちんと動作確認されているのでしょうかね。

◆原因4)短時間設定がAlphaGoに有利

この点を説明するにはAlphaGoの改良点に関する中身の(最低限の)理解が必要ですので、まずそこを少し説明します。

上の「改良点1」で書いたように、「重い手評価関数」(論文中では”pσ”で表されている)をディープラーニングによって作成しています。このpσは何に使うかというと、木探索中の各ノード(局面)において、そこからの可能な合法手のそれぞれに対し、確率分布を与えます。MCTSで、その確率分布に従って各合法手の試行回数を制御します。

MCTSが進むにつれて、プレイアウトの結果に応じて、各ノードの確率分布を変更していきます。ざっくり言うと、合法手間の確率分布の空間において、勾配降下法(山登り法)を行う、と考えれば大体イメージとしては合ってます。で、pσはその勾配降下法における初期値に相当します。(正確に言うと最適化するのは’action value’なのですが、まあ細かい話は省略。詳細は論文を参照ください)

で、このpσ、たぶんおそらくそれなりに優秀なものなのでしょう。つまり、初期値として選ぶ点が、実際の収束先をそれなりに適切に予測できている、という意味で。ただこれは、時間が十分ある状況では重要性は薄れます。山登り法において、初期値をどこに取ろうが、十分時間をかければ結局同じところに収束するのですから。初期値を適切に取ることは、収束先自体の精度を上げるものではなく、収束までの時間を短縮するにすぎません。(まあとはいっても、時間短縮は実践的には重要な点ではあるので、その点はたしかに評価できるのですが。)

…とここまで説明したところで話が戻ります。論文によると、「ソフトどうしの対局はすべて1手5秒で行なった」とあります。これ、囲碁の対局としてはかなり短いです。このような短い時間設定だと、どんな影響があるでしょう?

CSやZenの中身の詳細をよく知らないのですが、おそらくpσのような確率分布の初期値推定には凝ったことはしてないのだと思います。この状況で、MCTSを短時間で打ち切るとどうなるか?山登りが十分に進まず、初期値に近いところで打ち切られます。そうすると、初期値が適切に予測できている方が有利になります。これが、AlphaGoが圧勝した原因のひとつになったと考えられます。

この1手5秒という設定を選んだのが、上記のことを考慮してAlphaGoが有利にするために選んだ、とまで主張するつもりは私はありません。別に意図的ではなく、たとえば対局を早く済ませるため、などの理由で選んだだけかもしれません。そこはたぶん永遠にわからないのでしょう。ただ、もしも、ですが、もし上記のことまで考えたうえでこれを意図的に選んだのだとすれば…いやそれは(別の意味で)かなり手強い相手だな、という気はします。

以上4点が、CS/Zenのレーティングが過小評価された理由として現状私が推測している原因です。このうち1)と2)は間違いないですが、3)と4)は私が推測したもので、100%合っている自信まではありません。ただ仮に間違っていたとしても、「じゃあ本当の原因はなんだろう」という話になるだけで、「やっぱり論文のレーティングが正しいんじゃないか」という話にはなりません。CS/Zenのレーティングの数値自体は、前述の通り、他の証拠からわかっているからです。

●【まとめ】
以上見てきたとおり、繰り返しになりますが、

・AlphaGoのレーティング上昇分のうち、技術的なものは200程度。あとはお金の効果(マシン差やクラスタ化)と、CS/Zenを過小評価したことによるもの。

・「世界で初めてプロ棋士に勝った」はAlphaGoによる技術の向上の結果ではない

が本記事の主旨です。

最後に、誤解されないよう書いておきますが、Googleが悪いと言ってるわけでは全くないです。コンピュータ囲碁や将棋の分野は、人によっては「単なる遊びだろ」と言われてなかなか市民権を得られないことが多いです。なので、Googleのような会社が仕事の一環として参戦してくることは、私を含めて分野の関係者なら大歓迎ですし、また資金力にモノを言わせること自体は、非難されるいわれは全くありません。ただ、報道や反響からして、技術の結果と資金力の結果が混同されている印象を受けたのと、CS/Zenの棋力が不当に低く誤解を招く書き方なので、そこはいろいろ弊害がありそうなので正しておいた方がいいかな、と思ってこの記事を書きました。Googleの論文、先にも書いたとおり、「決して嘘は書いてない」ですし、こうして私のようなウォッチャーが分析できるだけの情報をきちんと開示しているわけです。見る人が見ればわかるし、きちんと議論できるようにしている。その点は全く正しいと思います。

…ということを述べた後で、ひとつだけ希望を述べさせてもらうと、もう少し客観的に判断できる材料を出してもらえないかなあ、ということです。具体的には、UEC杯に参加するなり、KGSに参加するなりして、「実際に強い」ことを示してほしい。今までGoogleから出てきた情報で、「実際に強い」ことを示すものは、Fan Huiとの10戦の結果しかないのです。CS/Zenとの対局結果は上述の理由で参考にならない。Google側としても、この記事のようにいろいろ疑う人が出てくるよりは、誰もが文句の言いようのない客観的証拠を見せた方が批判が出なくて済むと思うのですけどね。

まあイセドル戦がそうだ、というつもりなのかな。そう言われるとしょうがないですが、イセドル戦に負けたらでいいから、UEC杯なりKGSに参加してほしいな、と思っています。

ちなみにイセドル戦の予想ですが、私はイセドルが勝ち越すと予想しています。現状おそらくレーティングでイセドルとAlphaGoは300差程度。誤差があるので最悪150くらいかもしれませんが、5番勝負とのことなので、1、2戦落とすことはありえると思っていますが負け越しはないだろうと思います。まあAlphaGoがこれから3月までの間に大幅に改良されなければ、の話なので、なんとも言えないといえばそうなのですが。

p.s. 本記事を書くにあたって、主にツイッター上で多くの皆様から情報・意見等いただきました。皆様、どうもありがとうございました。

執筆: この記事はブログ『A級リーグ指し手1号』からご寄稿いただきました。

寄稿いただいた記事は2016年02月18日時点のものです。