清水女流王将 vs コンピュータ: 世紀の対局を楽しむためにWeb上の膨大な画像に基づく自動カラリゼーション

2010年10月17日

10月11日に開催された清水市代女流王将とコンピュータ将棋「あから2010」の対戦は「あから2010」の勝利となった。コンピュータが将棋のプロを破った初めてのケースである。対局前の展望、技術解説、棋譜再現Flashなどは次のエントリを参照いただきたい。

さて、情報処理学会は、棋譜と合議サーバのログを公開している(今気づいたが、各プログラムの読む筋も追加されている)。コンピュータ将棋や囲碁の掲示板ではYSS開発者の山下氏がログについて簡単な解説を行っている。そこでスクリプトを組んで、各プログラムの合議過程がなるべく見やすくなるように可視化を試みてみた。



本来の性能を発揮していなかったあから2010

あからは激指、GPS将棋、Bonanza、YSSの4プログラムを採用している。これらのプログラムは169台676coresからなるクラスターシステム上で稼働するが、さらにバックアップマシンとして各プログラムに6coreのXeonマシンが1台ずつ用意された。そのため、クラスタ/バックアップあわせて総計8つのプログラムの合議制となっている。各プログラムはそれぞれ重みに応じた票を持っており、得票の多い手が合議で選ばれる。各プログラムがもつ重みは次のとおりだ。

プログラム重みハードウェア
激指
2.9
Xeon W3680 3.33GHz 6cores
Bonanza
1.9
Xeon W3680 3.33GHz 6cores
YSS
1.9
Xeon W3680 3.33GHz 6cores
GPS将棋
1.0
Xeon W3680 3.33GHz 6cores
GPS将棋クラスタ
1.0
Xeon 2.80GHz, 4 cores 109台
Xeon 2.40GHz, 4 cores 60台
  合計 169台 676 cores
激指クラスタ
0.1
Bonanzaクラスタ
0.1
YSSクラスタ
0.1

GPS将棋以外のクラスタの重みが0.1と極めて小さくなっているのは、山下氏によればテストが十分にできなかったためだという。この表を見れば一目瞭然なように、あから2010は膨大なコンピュータパワーをほとんど有効に使っておらず、バックアップマシンで動いていたと言っても過言ではない。あから2010は本来のパフォーマンスを全く発揮していなかったのだ。事実、激指クラスタは3回、GPS将棋クラスタは1回のシステム再起動が記録されている。まだ、クラスタは実戦投入には荷が重いようだ。

合議サーバログ

次の表は、66手目△5七角を決定するまでのあから2010の合議過程を抽出したものだ。左列から手番、指し手、経過時間、そして一番右がその手が指されるまでのあから2010の合議過程を示している。常にあから2010は最初に思考制限時間を設定する。ここでは皆がほぼ一致すれば(easy)123秒で指し、ちょっとバラければ(fine)244秒、意見が割れば(max)487秒考えることを意味する。66手目の決定には、投票は計9回行われており、それぞれのプログラムに割り当てられた重みを足しあわせたポイントを棒グラフとして表示している。赤で示したのは最終的に採択される手だ。

66△5七角487秒思考時間制限:max:487.00s fine:244.00s easy:123.00s
投票1△5七角
4.9
激指 ボナ YS GP GC 激C ボC YC
△4四角
2
激指 ボナ YS GP GC 激C ボC YC
△7九金
1.9
激指 ボナ YS GP GC 激C ボC YC
△4六角
0.2
激指 ボナ YS GP GC 激C ボC YC
投票2△4四角
5.8
激指 ボナ YS GP GC 激C ボC YC
△5七角
3.1
激指 ボナ YS GP GC 激C ボC YC
△4六角
0.1
激指 ボナ YS GP GC 激C ボC YC
投票3△4四角
5.8
激指 ボナ YS GP GC 激C ボC YC
△5七角
3.1
激指 ボナ YS GP GC 激C ボC YC
△4六角
0.1
激指 ボナ YS GP GC 激C ボC YC
投票4△4四角
5.8
激指 ボナ YS GP GC 激C ボC YC
△5七角
3.1
激指 ボナ YS GP GC 激C ボC YC
△4六角
0.1
激指 ボナ YS GP GC 激C ボC YC
投票5△4四角
5.8
激指 ボナ YS GP GC 激C ボC YC
△5七角
3.1
激指 ボナ YS GP GC 激C ボC YC
△4六角
0.1
激指 ボナ YS GP GC 激C ボC YC
投票6△4四角
5.9
激指 ボナ YS GP GC 激C ボC YC
△5七角
3.1
激指 ボナ YS GP GC 激C ボC YC
投票7△4四角
5.9
激指 ボナ YS GP GC 激C ボC YC
△5七角
3.1
激指 ボナ YS GP GC 激C ボC YC
投票8△4四角
5.9
激指 ボナ YS GP GC 激C ボC YC
△5七角
3.1
激指 ボナ YS GP GC 激C ボC YC
投票9△5七角
5
激指 ボナ YS GP GC 激C ボC YC
△4四角
4
激指 ボナ YS GP GC 激C ボC YC
【後手△5七角】(探索時間: 487.04s/経過時間:487.04s)

△5七角は1回目の投票では、激指、YSS、激指クラスタの3者が推し4.9ポイントでトップだったが、2回目の投票では、Bonanza、YSS、GPS将棋、GPSクラスタが推す△4四角に逆転されている。最終的に9回目の投票で再逆転し、△5七角が487秒の時間を消費して決定された。この局面に関しては、プロ棋士vsコンピューター - 「あから2010」の威力を目撃してきたおよび、ハートキャッチあから?! - 俺の邪悪なメモで解説されているので、参照されたい。

各プログラム名にカーソルを合わせるとポップアップして、プログラムの思考詳細情報をみることができる。投票9におけるYSSクラスタの場合、「【YSSクラスタ(0.1)】: 評価値=785/思考時間=486.4s/探索局面数=4,990,318,080」となっている。括弧内はプログラムがもつ重み、評価値はその時点でのプログラムの情勢判断であり、プラスになるほど優勢を表している。思考時間はその手番における思考時間、探索局面数は探索した局面の数を示している(読み筋が当たっていた場合には、先手番中の先読みからの継続となる)。

次に全ログを次に示す。棋譜再現Flashを参照しつつ合議過程を確認してもらいたい。残念ながらアップロード文字数制限に引っかかったので別ファイルとした。


清水市代女流王将vs.あから2010合議サーバ可視化ログ

後手のあから2010は、先手の清水女流王将の思考中(青の背景)には、まず先手の最善手を少しの間思考し、最善手の決定後は、その最善手に対応する次の手をひたすら考え続ける。先手の指し手が予想した最善手であれば、自分の手番になったときに短い思考時間で次の手を指すことができるが、予想が外れれば、最初から考え直しとなる。最終的な最善手の的中率は44.1%となっており、清水女流王将の差し手の半分程度はあからの読み筋だったこととなる。ただ、読み筋が外れた時の時間損失が過大であり(39手目では延々と52回も投票を行っている。予想が当たっていたからいいものの、外れていればこの思考時間は全て無駄だった。)、アルゴリズムには改良の余地があるようにも見える。

今回、あから2010は3手目で△3三角を選択し、序盤から定跡を外れ、コンピュータの得意な力戦型に突入した。これはTACOSの橋本氏が清水女流王将の将棋を研究し、対策としてたて、山下氏がYSSに組み込んだそうだ(ログを見るとYSSが定跡指定をしていて合議さえ行われていない)。コンピュータが得意な力戦型の読み勝負に持ち込む作戦で、これがコンピュータ側に奏功した感がある。序盤のコンピュータが弱い部分は、YSSが主導し、中盤以降は重みの大きい激指が主導するという戦略だ。

評価値推移

次のグラフは各プログラムの評価値をグラフにしたものだ(上の表ではプログラム名にカーソルを当てるとポップアップ)。激指クラスタの評価値が76手目で激減しているが、これは再起動に伴なう不正値だろう。各プログラムの形勢判断では前述の66手目△5七角を境に評価値が急上昇していることが分かる。コンピュータ側から見れば、この辺りが勝負の分かれ目であったと言えるだろう。

この時点ですでに清水女流王将は残り時間を使い果たし、1分将棋となっていた。十分な残り時間があれば、ここに行き着くまでに逆転の目は多くあったと思われるが、時間がない状況で終盤のコンピュータの相手をするのはいかなプロといえども厳しい。あから2010の△3三角の誘いにまんまと乗り力戦型に突入したことが、結果的には清水女流王将の敗因となったと言えるだろう。

さて、あからの次戦の相手はまだ決まっていないが、次戦までにはクラスタシステムを万全の形にして、真価を発揮して欲しいものだ。また、せっかくコンピュータは思考過程を出力できる能力が有るのだから、是非リアルタイムに思考過程、合議過程を視覚化して欲しい。きっとより面白い対戦になることは間違いないと思う。

関連エントリ



lunarmodule7 at 11:50││Computer Science 
清水女流王将 vs コンピュータ: 世紀の対局を楽しむためにWeb上の膨大な画像に基づく自動カラリゼーション
<% for ( var i = 0; i < 7; i++ ) { %> <% } %>
<%= wdays[i] %>
<% for ( var i = 0; i < cal.length; i++ ) { %> <% for ( var j = 0; j < cal[i].length; j++) { %> <% } %> <% } %>
0) { %> id="calendar-711414-day-<%= cal[i][j]%>"<% } %>><%= cal[i][j] %>
この日記のはてなブックマーク数
アクセスカウンター
  • 累計:

記事検索
  • ライブドアブログ