囲碁ソフトの、マシンリソース(思考時間)を増やした時の棋力の変化について

AlphaGoの論文が出た直後、コンピュータ将棋で有名な伊藤さんが以下のような記事を書いていました。

http://aleag.cocolog-nifty.com/blog/2016/01/alphago-21ae.html

コメントでのやり取りで、「クラスタ性能が飽和するというのは(素人考えですが)ちょっと信じがたいのですが… MCTSの性質上、たくさん読むほど強くなるのは自明な気がするんですが、違うのかな?」という発言を頂いていたので、空いたマシンを使ってテストしてみました。

Linux 4コアサーバーでテスト。

・Pachi11.0とLeela0.11.0でテスト。(PachiはDeep Learningを使用しないMCTSフリーソフトの代表格。Leela0.11.0(LeelaZeroではない)はAlphaGoの最初の論文に基づいて作られたソフト。) Leela0.11.0はGPUを使用しない(CPUでDeep Learningを動かす)バージョンを使用。

・Pachiの一局あたりの思考時間を1200秒→2400秒→4800秒→9600秒と増やし、Leelaに対する勝率とレート差を調べる。(並列化でnスレッド使った時の性能は、基本的に思考時間をn倍した時より良くなることはない。) Leelaは一手250プレイアウト。これらの数値は、PachiとLeelaのレート差を計れるように、Pachiが全敗しないように経験から決めた。

・gogui-twogtpを使って自動対局。gogui-twogtpのオプションで、4対局同時進行。手番は一局ごとに入れ替わる(結果の表示は最初の手番に合わせて出る)。

・PachiとLeelaは1コアのみ使用し、PonderingはOff。

なお、AlphaGoそのものが使えないのは当然ですが、ZenやCrazyStoneなどもLinux版が手に入らないので、PachiとLeelaでテストしました。

 

結果は以下の通りです。

1.Pachi(持ち時間1200s)-Leela(一手250po)…勝敗:  80-920 実際の消費時間平均:  821.9s-50.0s
2.Pachi(持ち時間2400s)-Leela(一手250po)…勝敗:157-843 実際の消費時間平均:1844.6s-57.3s
3.Pachi(持ち時間4800s)-Leela(一手250po)…勝敗:220-780 実際の消費時間平均:3833.3s-60.8s
4.Pachi(持ち時間9600s)-Leela(一手250po)…勝敗:274-726 実際の消費時間平均:7764.4s-64.4s

Pachiの、Leela(一手250po)に対するレート差は、
持ち時間1200s、平均消費時間  821.9sで-424.3
持ち時間2400s、平均消費時間1844.6sで-292.0
持ち時間4800s、平均消費時間3833.3sで-219.9
持ち時間9600s、平均消費時間7764.4sで-169.3

棋譜ファイルはDropBoxにUPしておきます。

www.dropbox.com

www.dropbox.com

www.dropbox.com

www.dropbox.com

www.dropbox.com

レート差の変遷をグラフにしたのが↓です。横軸が実際の消費時間、縦軸がレート差です。

 
明らかにサチってますね。
なお、この実験を行うにあたり、同僚と議論したのですが、「MCTSはプレイアウトが偏っている場合に間違った評価値に収束するかもしれないが、MinMax(AlphaBeta)だとよほど変な評価関数でない限り思考時間を増やせば強くなるのは自明では」などの意見を頂きました。私はこれについても懐疑的ですが、自明な反例も思いついていないので、引き続き考えています。別の同僚は冗談で「無限に思考時間を増やせるなら、MCTSの先端が終局図にたどりついて完全解析できる」とおっしゃっていました。結局「無限」の捉え方の違いですね。