世界コンピュータ将棋選手権参加報告
及び, GPS 将棋のアルゴリズム
JST ERATO 湊プロジェクト 研究員
竹内聖悟
概観
世界コンピュータ将棋選手権の紹介 今年はGPS将棋が優勝 上位5プログラムがプロ棋士と対局予定 コンピュータ将棋のアルゴリズム GPS 将棋と、そのアルゴリズムを紹介 約800台のマシンで疎結合並列探索あらためて自己紹介
竹内 聖悟
JST ERATO 湊プロジェクト 研究員(札
幌)
GPS 将棋の開発メンバー
GPS = Game Programming Seminar
東大 総合文化研究科の教員と学生が中心となって 開催しているゼミ @駒場 コンピュータ将棋、囲碁やチェスの研究 性能評価、探索制御など ERATO : Simpath アルゴリズムの並列化, 3
将棋
インドのチャトランガが起源? ヨーロッパ : チェス アジア: 各国の将棋 中国・韓国・タイ・モンゴルなど 他の将棋類との大きな違い 取った駒を再利用 終盤でも駒数が同じ : 分岐数も減らない 駒の動きが弱いコンピュータ将棋選手権の記事
読売新聞 朝日新聞 週刊将棋 掲載予定? 将棋世界 情報処理学会誌 出典: 朝日新 聞 5IBM Deep Blue
チェスのスパコン カスパロフに勝利 してから15年 1997/5/12 (米国時間5/11) 誕生日じゃない 1秒間に1億局面 探索コンピュータ将棋への注目
2010年10月 情報処理学 会の学会創立50周年記念 事業にてあからが清水市 代女流王将と対局、勝利 2012年1月 電王戦にて、 ボンクラーズが元名人の 米長邦雄日本将棋連盟会 長と対局、勝利 出典: 情報処理学 会 出典: 産経ニュー ス 7プロ棋士との対局
将棋プログラムが強くなり、プロレベル に近づいている(諸説あり) プロ棋士との対局イベント「電王戦」 プロ棋士とプログラム5対5の対局が予定 電王戦出場プログラムは、今年の世界コン ピュータ将棋選手権の上位5プログラム世界コンピュータ将棋選手権
CSA 主催 (Computer Shogi Association) コンピュータ将棋の強さを競う大会 ハードウェア: 制限なし 会場持込の場合、騒音と電源の制限あり ソフトウェア: 公認の将棋ライブラリ ライブラリ例: Bonanza, GPS将棋, ライブラリは予選通過が2つまでと制限 一から作らないでも参加できる 強くするアイデアとその実装は必要 9
参加資格
自作のプログラム1つ 機種は問わない(原則として持ち込み) 複数のプログラムには参加できない 思考部について、自力で十分な工夫を施 したものであること その他細かい点はルール参照 CSAプロトコルでのLAN対戦への対応など対局時間
25分切れ負け, 秒単位で消費 1手あたり1秒は消費 比較的短い 参考: プロの対局: 各3時間など, 1分単位で消費 2時間59分使ってもかならず1分は考えられる タイトル戦には各8時間で2日制のものも アマチュア: 1手1分や20分+1手30秒など 11今大会の上位5プログラム
GPS 将棋 Puella α (旧名 ボンクラーズ) ツツカナ Ponanza 習甦http://www.computer-スケジュール
12月 WCSC 参加募集 1月末 WCSC 参加締切 2月 オープン戦 3月 アピール文書など締切 4月 オープン戦 4月末 - 5月 マシン送付など 5月2日 前日テスト 5月3日 - 5日 選手権 WCSC = World Computer Shogi Championship 13選手権に必要なもの
参加申し込み 参加費1万円 将棋プログラム マシン アピール文書 当日参加できるスケジュール将棋プログラムを作ろう
CSA公認ライブラリのBonanza を使おう 強いし、GPS将棋よりも読みやすいと評判! bonanza~/src/client/ 以下にソース 評価関数にはbonanza~/winbin/fv.bin が必 要 Bonanza を改造する 探索を… 評価関数を… 15次は?
そういえば名前がない Bonanza が元なのでHonanza と名付け る カタカナなら「ホナンザ」 Honanza はちゃんと動くのか? 変なことがないか手元で確認したい → GUI を使って指し手の確認 Windows かつBonanza ⇛ 付属のCSA将
GUI
将棋所 : Windows
読み筋や評価値のグラフがあって見やすい Linux やMac ならwine やmono で頑張る? 自動対戦もしてくれる
USI への対応が必要
Universal Shogi Interface
Bonanza : U2B 将棋所 http://www.geocities.jp/shogid okoro/ http://www.geocities.jp/shogi_dep ot/ 17
実力を試したい
floodgate 自動対局場所 floodgate に接続 30分に一度、他のプレイヤと対戦 15分切れ負け 組み合わせはレーティングなどを元に決定 対局結果に応じてレーティングがつく 寝ている間に試せる 騒音・熱・電気代に注意http://wdoor.c.u-floodgate
決勝プログラムも参加 本番マシンでの参加も 予選通過の目安にも? gps_normal (2150) が一次通過の目安とか 様々なプログラムが参加 手元では出にくいバグ, 弱点の発見に 19情報収集・発信
情報処理学会 ゲーム情報学研究会(sig-gi) ゲームプログラミングワークショップ(GPW) 研究会 CSA 例会 CG, ACG Blog など 何となく、はてなダイアリーが多い?ゲームプログラミングワーク
ショップ (GPW)
毎年11月に箱根で開催 2012年11月9日(金)から11日(日) 研究発表がメイン 夜はナイトイベント, コンピュータ将棋や 囲碁の大会 情報交換、交流 21 http://sig-gi.c.u-tokyo.ac.jp/gpw/2012/選手権参加申込
12月頃に募集、参加締切は1月いっぱい 何が必要? 将棋プログラム マシン 参加費1万円 アピール文書 選手権当日の予定申し込んだ、その後は?
2月4月「オープン戦」が開催 接続テストを兼ねている 参加数は少ない. GPS将棋はできるだけ参加 floodgate は拡張プロトコル 本番で拡張のまま参加してうまくいかない、こともあ りえるので、ここで経験するのが吉 お弁当やパーティーの予約, 追加入場者 ホテルや航空券の予約(GW!) マシンの送付 23本番直前
一次予選前日に、会場にて接続テスト 本番環境でのテスト 他の参加者との交流も 遅刻しないように適当な睡眠を マシンを送付しているので、予選前はするこ とがない場合も当日
参加受付 本番 ログイン, 確認に返事, 対戦相手に挨拶 将棋を眺めながら雑談や情報交換 終局したら挨拶 以下, くり返し 対局が始まれば、離れてもOK むしろ、触ってはいけない プロ棋士やアマの強い人がコメントくれるか もしれない 25参加後
予選を通過したなら、点呼に答えること マシンの送付 挨拶、片付け、帰宅 選手権参加記 関連blog や情報を追う 本番マシンでfloodgate に参加 などなどスケジュール
12月 WCSC 参加募集 1月末 WCSC 参加締切 2月 オープン戦 3月 アピール文書など締切 4月 オープン戦 4月末 - 5月 マシン送付など 5月2日 前日テスト 5月3日 - 5日 選手権 WCSC = World Computer Shogi Championship 27参加ハードウェア
次の中で選手権に参加したことのある ハードウェアは? 1. ファミコン 2. PS3 3. FPGA 4. iMac 788台参加ハードウェア
次の中で選手権に参加したことのある ハードウェアは? 全部! 1. ファミコン(第1回)※招待プログラム 2. PS3(第18回) 3. FPGA(第18, 19回)ボンクラーズ開発 者 4. iMac 788台(第22回)GPS将棋 29今大会について
日時: 5月3日から5月5日 (GW!) 場所: 電気通信大学 全42プログラムが参加 奇数だったため、1プログラムが招待参加 ここ10年ぐらいは40~50プログラム 今大会から決勝シードなし 上位者を電王戦へ推薦第22回大会の主催・共催など
主催 コンピュータ将棋協会 (CSA) 電気通信大学 エンターテイメントと認 知科学研究ステーション 共催 早稲田大学 ゲームの科学研究所 特別協力 公益社団法人 日本将棋連盟 協賛 富士通株式会社 株式会社 ドワンゴ 後援 総務省 文部科学省 経済産業省 一般社団法人 情報処理学会 一般 社団法人 情報サービス産業協会 電気通信大学 早稲田大学メディア ネットワークセンター 31予選と決勝
参加プログラム数 試合数 選出 一次予選 26 7 8 二次予選 24 (シード 16) 9 8 決勝 8 7 (総当り) (5) 予選では完全スイス式と変形スイス式で組み合わせ 基本的に同じ成績のもの同士を当てる 順位の決定は、勝ち数, ソルコフ, SB, MD, DB を見る 強い相手と戦った方が有利GPS将棋
将棋プログラム
GPS のメンバーが主体となって開発
GPS = Game Programming Seminar
東京大学大学院総合文化研究科の教員,学生が開催
GPS将棋, OSL はCSA 公認ライブラリ
OSL = Open Shogi Library
選手権: GPS将棋としては10回参加
成績: 2009年優勝 10年3位 12年優勝
GPS 将棋の特色
コンピュータチェスやコンピュータ将棋 の最新の研究を取り入れている 実現確率を用いた探索 評価関数の機械学習 (並列)df-pn による詰将棋探索 疎結合並列探索 オープンソース, フリーウェア クラスタ : 約800台 約3200コア計算機群
情報基盤センター教育用計算機を利用 東京大学駒場キャンパス情報教育棟 平日と土曜日は学生が利用 土曜日は一部演習室は閉鎖されている 日曜祝日しか利用できない! 利用申請が必要 申請者は離れられない http://gps.tanaka.ecc.u-tokyo.ac.jp/gpsshogi 35GPS将棋の参加記
5/2: 接続テスト, 駒場と会場 5/3: 一次予選, 駒場にて作業 5/4: 二次予選, 駒場と会場 5/5: 決勝, 駒場と会場 終了後に現地へ集合 / 表彰式など5/2 : 前日
夕方から会場へ リモートのため、回線の接続テスト ネットワーク越しに対局できるかテストなど 問題なく終了 375/3 : 一次予選
シードなので参加しないで良い 情報教育棟にて作業 東大 駒場キャンパス GW に入ったので、iMac 全台を借りられた 1人で全台起動すると1時間半かかる 管理者がいないといけない ログの読み方や作業の共有 おかしな点を発見するため 定跡のチェック 変な指手がないかのチェック5/4 : 二次予選
朝は駒場 マシン起動の手伝いなど 起動の仕組みがうまくいったので不要だった 会場とskype で接続 中継を眺めるなど 午後から現地へ 予選通過後の作業 ルートでの分割数を増やす 定跡の一部変更 時間制御 / 切れ負けの反省 395/5 : 決勝
駒場 中継を眺める 個人の感想: 今年は安心して見ていられた 最終戦を除く 全局終了後、マシンを落として現地へ 閉会式と表彰式に間に合った 懇親会選手権の模様の紹介
コンピュータ将棋選手権ネット中継 http://computer-shogi-live.cocolog-nifty.com/ 情報交換しながら和気あいあい 本人同士が将棋を指すわけではない でも胃が痛くなったりする 少しくだけたワークショップなどと雰囲 気が似ているかも 発表はないが 41個人的なポイントなど
一次予選 Selene の全勝, 新規参加組が多く予選通過 二次予選 決勝シードがないため、より厳しい戦い クラスタ参加が6組? 去年の決勝8プログラム + ツツカナの争い この9プログラムは10位以下のプログラムに負けていない Bonanza が予選落ち 決勝 GPS将棋がラスト前で優勝を決めたかと思いきや 上位5位の争い 新人賞と独創賞報道
一般紙 読売新聞, 朝日新聞 将棋専門誌 週刊将棋5/16号, 将棋世界7月号? その他 情報処理学会学会誌 例年は、8月号にミニ小特集 Yahoo ニュースや/. 43決勝8プログラム + 1 の紹介
GPS 将棋 Puella α (旧名 ボンクラーズ) ツツカナ Ponanza 習甦 激指 YSS Blunder Bonanzahttp://www.computer- 以上、選手権の紹介と参加報告でした
コンピュータ将棋
入力: 局面 (+ 時間, これまでの棋譜) 出力: 指し手
ゲーム木
ゲームを木として表す 局面: ノード 手: 枝 展開すれば解ける! (必勝法) x o x o x xx o x x o x o x o x x o x x o x o o xx o x x x o x o x x x o x o x 47ゲーム木サイズ
ゲーム ゲーム木サイズ チェッカー 10^30 解析済 オセロ 10^60 人間より上 チェス 10^120 人間のトップレベル 中国象棋 10^150 人間のトップレベル? 将棋 10^220 トップにはまだ? 囲碁(19路) 10^360 アマチュアレベル 阿伽羅(あから) = 10^224 現実的には解けない強いプログラムを作るには
評価関数 (形勢判断) 探索 (先読み) どちらかが完全 ⇒ 解析できる 現実的でない 491手読み
1手進めてから選ぶ 1手で終わるゲームなら解析 実際のゲーム: 1手では終わらない 1手先の勝ち負けを知りたい ⇒ 形勢判断 勝 分 負 ? ? ? ◯ : 局面 | : 手1手読み + 形勢判断
1手進め、形勢が良い手を選ぶ 形勢判断が完璧なら解析 実際のゲーム: 不正確 ⇒ 深い探索、正確な形勢判断が必要 51 +100 0 -90評価関数
局面の良し悪しを数値化 評価項目/特徴とその重みからなる 例) 5*(駒得) + 10*(危険度) + ... 重みは機械学習で自動調整 特徴は人間が考える 局面 評価関数 評価値評価関数ひとむかし
特徴を考える 人間が考える, 将棋の知識が必要 駒の点数, 王の危険度… 重みをつける 人間が考える, 将棋の知識が必要 歩が100点として、香車は200?400? パラメータ数に限界 せいぜい数百数千?評価関数, 現在
特徴をたくさん考える 人間が考える 駒の点数, 王の危険度… 重みをつける 機械学習による自動処理 棋譜の指し手を選ぶように重みを調整 パラメータ数は数百万, 数千万, 億?GPS将棋の評価関数
序盤, 中盤, 中盤2, 終盤 の4種類 8,952,491 項目(重み0も含める) 2009年は約300万 : およそ3倍に 局面の進行度に基づき内分を取る 人間の知識で項目を選択 重みは棋譜から調整 調整後強くなったか対戦で確認, 採否 555 3 6 2 9 5 1 4 1 2 3 Min-Player Max-Player Root 3 2 3 5 2 3 2 1 3 Best Move 4 1 4 5 2
Min-Max探索
数字は”評価値” 1 1 4 4 Max Player は最大値 Min Player は最小値を選ぶ探索
評価関数 + αβ探索 互いに最善を尽くす前提 深さ打ち切り探索 葉ノードで、評価関数による評価値を得る 一般に, 深く探索するほど強い 速度を上げる工夫 (7776FU, +300) 局面 探索 指し手, 評価値 57αβ探索
Min-Max を効率的に行い、同じ結果を得 る 不要な探索を行わない : 枝刈 探索窓, alpha-beta window の導入 興味のある評価値の範囲 (alpha, beta) として表記 返り値V で更新 Max : If (V > alpha) alpha = V
枝刈
枝刈条件 Max : V >= beta Min : V <= alpha 例: ルートのMax ノードは5以上 矢印のノードに左の子ノードから3が返った ⇛ 値は3以下になる (∵ Min ノード) ルートには3以下しか返らない ⇛ 選ばれない それ以上探索するのは無駄 ⇛ 枝刈 Min Max 5 (5, ∞) 3 (5, ∞) Cut ! 595 3 6 2 9 5 1 2 Min-Player Max-Player Root 3 2 3 ≧5 ≦2 3 ≦2 1 3 Best Move 5 ≦2 Cut Cut
αβ探索
数字は”評価値” Cut (-∞, ∞) (-∞, ∞) (3, ∞) (-∞, 3) (-∞, ∞) (3, ∞) (-∞, 3) (-∞, 3) (3, ∞) (3, 6) (-∞, ∞) (-∞,5) (3, ∞) (3, ∞) (3, ∞) (3, ∞)5 3 6 2 9 5 1 2 Root 3 2 3 ≧5 ≦2 3 ≦2 1 3 5 ≦2
αβ探索の結果
枝刈されたノード 枝刈されたノード 61αβ探索と効率
探索の順序 良い手を先に探索すると枝刈の効率が良い ハッシュ表 千日手や合流 76歩 34歩 66歩 66歩 34歩 76歩4 1 5 4 2 5 3 1 3 2 6 Min-Player Max-Player Root 1 4 4 3 2 3 2 1 3 Best Move 4 1 4 2 2
探索順序の重要性
3 1 4 4 Max で小さい値 Min で大きな値 を先に探索 63 αβ探索で枝刈が起こらない!効率的な探索
Null-window search (NWS)
V より大きいかを調べるなら(v, v+1) で探索 探索窓の幅がNull, 枝刈がすぐ起こるので高
速
Principal Variation Search (PVS)
一番左端は(-∞, ∞)で探索: 評価値v
残りに、PV の結果を上回る手がないか調べ
る
⇛ v’ = Null-window search (v, v+1)
3 4 1 5 3 6 2 9 5 1 2 Root 4 1 4
PVS
左端の探索結果は5. 5より大きくなるか調べたい (5,6) でNWS (5,6 ) (5,6 ) (5,6 ) 3 (5,6) 2 3 (5,6 ) (5,6 ) (5,6 ) 1 (5,6 ) 2 2 3 2 5 5 65探索の効率化に重要な情報
探索順序 枝刈が起こらないことも 探索窓の広さ 狭いほど枝刈は起こりやすい ハッシュ表 探索結果の保持 : 同一局面の探索を行わない 手の並び替え: 浅い探索結果を元に探索の工夫
枝刈・探索延長 探索順序 探索窓 ハードウェア 専用ハードウェア (例: Deep Blue) CPUのオーバークロック マルチコア クラスタ/疎結合 67並列化の難しさ
処理は並列に行える? 処理に順序依存性があると難しい オーバヘッド 探索 : (逐次なら)枝刈されるノードの探索 同期 : 他のプロセッサの結果を待つ 通信 : 仕事の分割, 仕事を通信, 通信遅延5 3 6 2 9 5 1 2 Root 3 2 3 ≧5 ≦2 3 ≦2 1 3 5 ≦2
αβ探索の結果
枝刈されたノード 枝刈されたノード 69 色のついた分を探索するのが、 探索オーバヘッドメモリ共有環境
例: 最近のパソコン Nコア プロセッサ間の通信は十分速い 通信オーバヘッドはあまりない PV Split PVS の並列化 左端を1人で展開 残りのノードを並列にnull window search
ハッシュ表を共有 ロックレスハッシュ
PVSplit
71 Min Max P2 P1 P 2 P 1 P1 P1 P2 1 P P2 2並列 Processor1,2 (P1,P2) 1 2 2 3 3 4 4 5 5GPS将棋の疎結合並列探索
2010年の第20回大会からクラスタ参加 順位: 3位 -> 6位 -> 1位!
コア数: 666, 800, 3200
情報教育棟のiMac, Amazon EC2 (2011)
ネットワークで緩く接続されたマシン群
通信速度はそんなに速くない
情報のやり取りがあまり出来ない
単純なアイデア
木を展開していき、台数分ノードができ たら全ノードに1台ずつ割り振る ⇛ 無駄な探索がかなり多い 台数効果が出ない 将棋の平均合法手数は80 1手深く探索するには80台 2手深く探索するには6,400台必要! 73メモリ非共有環境
情報のやり取りが通信となり、遅い 探索結果やハッシュ表 ハッシュ表については、local, global, ハッ シュ値に応じて割り振る, hybrid などが考え られる 探索結果を使うには、他の人の仕事が終わる のを待つ必要がある従来手法
YBWC, APHID, TDSAB
YBWC はPVSplit に近い手法 合議 将棋では実際に成功した例があまりない チェスでもRybka がクラスタ探索をして いるが、詳細は不明 他ではクラスタ探索を聞かない 75 http://cluster.rybkachess.com/
合議
お手軽な(疎結合)並列探索 複数台で1台のマシンよりも強くなる 4, 8台で55%前後 逓減は速い 準備: 異なるプログラムの用意 : 台数分 評価関数に乱数を入れるなど 手順: それぞれ同じ局面を探索 多数決で指手を選択8台合議例
77 P1 Root P2 P3 P4 P5 P6 P7 P8 指手 票 a P1, P2, P4, P8 b P3, P5 c P6, P7 手a が選ばれる 左から手a,b,c と並ぶGPS将棋
探索窓を共有しない 同期オーバヘッドと効率のトレードオフ ハッシュ表は各自で持つ 割当て時に前回担当分に割当てられる ここでは、通信オーバヘッドはない 並び替えは探索など 探索オーバヘッドはあるが、並び替えがうま くいけば、少なく抑えられるGPS将棋のアプローチ(概要)
ルートで手生成 上位N 手にマシンを割当 順位に応じて台数を変化 残りの手は1台で通常探索 それぞれ, 手を進めた局面で手生成 各手の台数が1台なら1台で通常探索 上位M手にマシンを割当, 残りは1台で探索 以下、繰り返し 「残りの手」が最善となったら探索時間延長 79N=M=1
Min Max P8 P 7 P6 8並列 P 5 A P 4 P3 P2 P1 Root P8 と比較し, Aの子ノードは5手深く探索N=2, M=1
81 Min Max P 1 1 A P 5 P1 4 P 11並列 Root P11 と比較し, Aの子ノードは3手深く探索 P3 P2 P 1 0 P6 P7 P8 P9台数分割
良い手には多く割当、良くない手にはあ まり割当てたくない “良い手”がわかれば探索する必要はない 順位付けが必要 1秒での探索や実現確率の上位の手を利用 (2010,2011)上位を選ぶ (2012)
前回その局面を探索した ⇛ 前回の探索結果の上位N手 (new) 探索していないが、5秒以上ある ⇛ 1秒で探索した結果の上位N手 実現確率の上位N手 85探索時間延長
「残りの手」が一番良い ⇛ 探索時間延長 他の手よりも浅い ∵ 1台で複数の手を担当 ⇛ 信用出来ない 「残りの手」以外での1位はそのまま探索 他は「残りの手」の最善の探索に再割当 「残りの手」を読んでいた1台は、新しい 残りの手を探索(これは問題)問題点
「残りの手」を読んでいた1台は、新しい残 りの手を探索 「新しい、残りの手」は1台で探索 やはり怪しい 浅い探索の結果が選ばれる可能性がある 本番でも起きていた様子 どうすべきだったか 「残りの手」で良い手 「残りの手」以外での1位の手 だけを探索すれば良い 87探索時間延長(延長前)
P 11 P 5 P1 4 P Root P3 P2 P 1 0 P6 P7 P8 P9 手a 手b 手c 手d = best 手a, 手b に比べて3手浅い手d が最善 評価値: d > a > b > c探索時間延長(再割当後)
89 P11 P5 P1 4 P Root P3 P2 P 1 0 P6 P7 P8 P9 手a 手b 手c 手d 上位N(=2)手の最善(a) : そのまま探索を続行 上位N(=2)手の残り (b) : プロセッサ(6-10)を集め、 最善手d を探索 残りの手(c,d)の担当は 新しい残りの手(b,c)を探 索GPS将棋のアプローチ(再掲)
ルートで手生成 上位N 手にマシンを割当 順位に応じて台数を変化 残りの手は1台で通常探索 それぞれ, 手を進めた局面で手生成 各手の台数が1台なら1台で通常探索 上位M手にマシンを割当, 残りは1台で探索 以下、繰り返し 「残りの手」が最善となったら探索時間延長選手権での構成
マスタ 1台 情報の統合など スレーブ 792台 探索 詰将棋専用スレーブ 4台 詰将棋専用 91今年のクラスタ差分
Perl, ruby からC++ へ書き換え 速度向上 タスク分割方法 性能向上 探索時間延長 探索結果の信頼性を向上マシンスペック
iMac Core 2 Duo iMac Core i 5 Amazon EC2 その他 コア 数 2010 307 0 0 7 666 2011 208 0 40 15 8322012 0 CPU 788 0 #core #cpu memory 9 3224
iMac Core 2 Duo 2.0GHz Intel Core 2 Duo 2 1 2GB iMac Core i 5 2.5GHz Intel Core i 5 4 1 4GB Amazon EC2 2.93GHz? Intel Xeon X5570 4 2 23GB 93