「コンピュータが将棋を制する日」

今月号の情報処理学会誌が「コンピュータが将棋を制する日」という特集を載せているのだがこれがとても面白かった。適当にかいつまんで紹介したい。

とても面白い,ということなので,私も読んでみたところ,やはり,非常に面白い記事でした.

コンピュータが人間に勝つ,というと,チェスで1997年にDeep Blueが人間のチャンピオンに勝っています.ただ,よく言われている通り,将棋には「持ち駒ルール」があるので,特に終盤での可能な手が絞られていかない,ということがあります.それによって,ゲーム全体での場合の数の差は,

  • 将棋 10^220
  • チェス 10^120

となります.だいたい将棋はチェスより,100桁ほど難しい,と言ってもいいかもしれません.

コンピュータは,考えられる,ありとあらゆる手を試してみて,実際の手を決めます.単純化すると,「この手順だと10手先に飛車が取れるので,100点」などと,それぞれの手順を評価関数で点数化して,最適手を見つけ出します.勝負は,どれだけ先読みできるか,ということと,評価関数を,どれだけいいものにできるか,ということで決まります.ただ,持ち時間は有限なので,先読みの段階で,いかに有望な手を探索するか,ということが鍵となります.すこし前は,このあたりを,泥臭いチューニングによって強くしていましたが,最近は理論派が有利となっているようです.特に今年に行われた,実際のプロとの対戦では,短期的には,良くも悪くもない「含みのある手」を指せるようになった,という大きな進歩が得られたようです.

記事では,このあたりの最適手を見つけ出す手法も,概要が紹介されています.いくつか興味深かった点を書き出してみました.

  • ゲーム木の探索範囲の制御(ゲーム木の枝苅り)及び評価関数には,多くのヒューリスティクスが利用されている.
  • 枝苅りについて
    • 枝苅りには,過去の棋譜から得られる「実現確率」をベースとして判断する.
    • 「直前に動かした駒,を取る or から逃げる」といった手を重点的に探索する.
    • 浅いレベルの探索結果を利用する.類似局面での最善手を再利用する.
  • 評価関数について
    • 序盤・中盤・終盤で,評価の観点が変化するが,それを離散的ではなく,連続的に評価する.
  • 探索速度について
    • 1秒に30万局面を探索し,1分で1,700万局面を探索する.

この記事では,将棋のような分野は「量が質に結び付く幸運な性質」がある,とされています.将棋では,「時間が無限にあれば,全探索することができ,絶対的な最適手を打つことができる」ので,あとは結果を劣化させることなく時間を短縮する手法を頑張ればいい,ということなのでしょう.やることがはっきり定義できる分野では,コンピュータが強いです.著者は「2015年にはコンピュータが人間のチャンピオンに勝つ」と明言しています.

ときどき,人間がコンピュータに負けるとショックを受ける人がいるようですが,問題をはっきり定義できない分野や,問題を定義すること自体は,将来的にもコンピュータにできるようになるとは,とても信じられないので,そんなに気にすることはないのにねぇ,と思います.早く走ることを車と勝負する気にならないように,定義された問題を考えることをコンピュータと勝負する気にならない日がやってくるだけなのでしょう.