html5-img
1 / 47

高性能な詰碁ソルバーの 探索技術について

高性能な詰碁ソルバーの 探索技術について. 岸本 章宏 公立はこだて未来大学システム情報科学部 情報アーキテクチャ学科 kishi@fun.ac.jp 共同研究者: Martin Mueller Department of Computing Science, University of Alberta, Canada mmueller@cs.ualberta.ca. 発表概要. 研究背景 関連研究 詰碁ソルバー: TsumeGo Explorer 実験結果 – GoTools との性能比較 まとめと今後の課題. ゲームと人工知能研究.

tolinka
Télécharger la présentation

高性能な詰碁ソルバーの 探索技術について

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 高性能な詰碁ソルバーの探索技術について 岸本 章宏 公立はこだて未来大学システム情報科学部 情報アーキテクチャ学科 kishi@fun.ac.jp 共同研究者: Martin Mueller Department of Computing Science, University of Alberta, Canada mmueller@cs.ualberta.ca

  2. 発表概要 • 研究背景 • 関連研究 • 詰碁ソルバー:TsumeGo Explorer • 実験結果 – GoToolsとの性能比較 • まとめと今後の課題

  3. ゲームと人工知能研究 • なぜゲームなのか? • 探索アルゴリズムにとって理想的な題材 • 簡単なルールと結果 • 膨大な探索空間 • リアルタイムに応答する必要性 • 多くのアプリケーションが存在 • シークエンスアラインメント問題 • 定理証明など • 研究者への明確な動機付け • 世界チャンピオンに勝てるようなプログラムの作成

  4. コンピュータ囲碁研究の意義 • チェスでのDeep BlueのKasparovへの勝利 • 探索ベースのアプローチ より難しいゲームへ • 次のターゲットは囲碁 • 大きな探索空間 • チェス 1040 囲碁 10170 • 局面の評価の難しさ • チェス 駒の損得  囲碁 ???

  5. 白黒が交互にプレイ 空点に石を打つ手かパスが合法 石を取ることが可能 自殺手は禁止 地の大きな方が勝ち 例 囲碁のルール

  6. コンピュータ囲碁の現状 • 強さ • 中級者が最強のプログラムに簡単に勝てるレベル • 足りないものは? • よい評価関数 • 効率のよい探索アルゴリズム 囲碁は難しいので「賢い」探索アルゴリズムが必要

  7. コンピュータ囲碁における詰碁(死活)問題 • 囲碁はやはり探索するのが困難 • 囲碁の部分問題に着目 • 詰碁は探索アルゴリズムにとって理想的な部分問題 • 強い囲碁プログラムの重要な要素の一つである • 現状では常に正しい結果を保証するには探索しかない

  8. 攻め方は△のついた石をすべて取る 受け方は活きようとする 例: 二眼、セキ 着手は領域内に制限 例 詰碁問題とは?

  9. AND/OR木と詰碁の関係 • AND/OR木探索アルゴリズムを用いて詰碁を解くことが可能 • 先手は勝ちに至る少なくとも一つの着手を見つければよい   (OR節点) • 後手は全ての着手が負けに至ることを示せばよい  (AND節点)

  10. AND/OR木の定義 (1 / 2) • OR節点とAND節点 • OR(AND)節点の子節点はAND(OR)節点 • 各節点は3つの値の可能性 • 勝ち: ORの勝ち • 負け: ANDの勝ち • 不明: 今のところ分からない • 終端節点:子節点のない節点 • 勝ちか負けの値 • 先端節点:未展開の節点 • 内部節点:子節点を持つ節点 • ルート節点:開始節点(OR節点) ルート節点 A 内部節点 B C D E F 勝ち 負け 不明 先端節点 終端節点 OR節点 AND節点

  11. OR(AND)節点の値の決定 1つ以上の子節点が勝ち(負け)ならば勝ち(負け) 全ての子節点が負け(勝ち)ならば負け(勝ち) それ以外は不明 ルート節点が勝ちか負けになるまで木を展開 例 負 勝 勝 勝 負 不明 AND/OR木の定義 (2 / 2) 勝 A B C D E F G H I J K L M OR節点 AND節点 勝ち 勝ち 勝ち 負け 不明 負け

  12. 探索空間 O(bd) b: 分岐因子 d: 深さ 証明木: O(bd/2) 節点が勝ちであることを証明する木 トレードオフ:探索速度を落とさずに探索節点数を減らしたい 例 証明木 探索効率向上技術の重要性 勝 A 負 勝 B C 勝 勝 不明 負 D E F G H I J K L M 不明 負け 勝ち 勝ち 勝ち 勝ち OR節点 AND節点

  13. 探索効率向上へのアプローチ • ゲーム非依存の性質を用いる • AND/OR木探索一般に応用可能 • ゲーム依存の知識を用いる • そのゲームにのみ利用可能 高性能なソルバーは両方を用いるのが通常

  14. DAGの性質を利用 前の探索結果をハッシュに保存 ゲーム非依存の方法 例 B C D 勝ち 1回の探索でOK 性能向上手法の例 (1 / 2)トランスポジションテーブル A ハッシュ表 勝ち A B C D 勝ち OR節点 AND節点

  15. 3 1 2 性能向上手法の例 (2 / 2)評価関数による節点の並べ替え • 評価関数 • 局面を「評価」し、点数化 • ゲーム依存の知識 • ある石を捕れるのでプラス10点 • 2つの石がつながっているのでプラス5点 • … • 評価関数による子節点の並べ替え • 探索時にすべての子節点を評価 • 評価値のよい子節点から探索 • この枠組み自体はゲーム非依存 20 11 5

  16. 以前の詰碁ソルバーの研究 • GoTools [Wolf:2000] • 石の生死を判定する強力なルール • 何年にもわたって書かれた囲碁の知識 • 着手の並べ替え等に利用 • 単純なαβ法+トランスポジションテーブル • 過去15年にわたって最強の詰碁ソルバーとして君臨 • 14空点程度の問題しか解けない 「多数」のゲーム「依存」の手法 + 「単純」なゲーム「非依存」の手法

  17. コンピュータ将棋における研究 • 詰将棋ソルバー • 強力な探索アルゴリズム • Df-pnアルゴリズム+トランスポジションテーブル [Nagai & Imai:1999] • 様々な将棋の知識 • 囲碁における知識よりもずっと単純 • プロ棋士を凌駕する解答能力 • 現存する100手詰以上の問題はすべて解答可能 [Nagai:2002] 比較的「少数」のゲーム「依存」の手法 + 「強力」なゲーム「非依存」の手法

  18. 研究成果 • 詰碁ソルバーTsumeGo Explorer の実装 • 新しい探索アルゴリズム df-pn(r)を利用 • Df-pn アルゴリズム[Nagai & Imai:1999]をベースに利用 • Graph-History Interaction (GHI)問題の解決策 [Kishimoto & Mueller:AAAI2004] • サイクルに関する証明数・反証数計算の問題の解決[ Kishimoto and Mueller:ACG2003] • df-pnの閾値の調整法 [Kishimoto & Mueller:AAAI2005] • 現状での最強の詰碁ソルバー [Kishimoto & Mueller:AAAI2005] 比較的「少数」のゲーム「依存」の手法 + 「強力」なゲーム「非依存」の手法を用いたアプローチ

  19. TsumeGo Explorerの概要 • 探索エンジン: df-pn(r) • ゲーム依存プラグイン • 終端局面の判定 • 着手生成 • 性能向上手法 • 接続 [Mueller:GPW1997] • 強制手順 • シミュレーション [Kawano:1996] • 評価関数

  20. Df-pn アルゴリズム[Nagai & Imai:1999] • 証明数と反証数 [Allis:94]を利用 • 深さ優先探索 • 証明数と反証数の閾値を持つ • トランスポジションテーブルによる効率化

  21. 証明数の定義 • 節点nの証明数pn(n) • nが勝ちであるために展開しなければならない先端節点数の下限値 pn(n) = min(pn(c1), …, pn(ck)) (n: 内部OR節点, ci:子節点) pn(n) = pn(c1) + … + pn(ck) (n: 内部AND節点) pn(n)= 1(n:先端節点) pn(n)= 0 (nが勝ち) pn(n)=∞ (nが負け) 2 2 3 1 1 1 1 1 pn OR節点 pn AND節点

  22. 反証数の定義 • 節点nの証明数dn(n) • nが負けであるために展開しなければならない先端節点数の下限値 dn(n) = dn(c1)+…+ dn(ck) (n: 内部OR節点, ci:子節点) dn(n) = min(dn(c1),…,dn(ck)) (n: 内部AND節点) dn(n)= 1(n:先端節点) dn(n)= 0 (nが負け) dn(n)=∞ (nが勝ち) 2 2 3 1 1 1 1 1 dn OR節点 dn AND節点

  23. pn(A)=1 dn(A)=2 pn(B)=1 dn(B)=1 thpn(B)=2 thdn(B)=INF-1 pn(C)=2 dn(C)=1 thpn(C)=4 thdn(C)=INF-1 pn(C)=1 dn(C)=1 B C pn(H)=1 dn(H)=1 thpn(G)=3 thdn(G)=2 D E F thpn(H)=3 thdn(H)=3 pn(G)=1 dn(G)=1 G H pn(D)=1 dn(D)=1 pn(E)=1 dn(E)=1 pn(F)=1 dn(F)=1 I J Df-pnアルゴリズム(1 / 2)閾値を用いた深さ優先探索 thpn(A)=INF thdn(A)=INF 例 dn(G)=2>=thdn(G)=2 A pn(B)=3 dn(B)=1 pn(B)=3>=thpn(B)=2 pn(G)=1 dn(G)=2 OR節点 AND節点

  24. Df-pnアルゴリズム (2 / 2) • 何度も内部節点を展開 • トランスポジションテーブルの利用 • 以前に展開した節点を保存 • 証明数・反証数など • 探索や証明数の計算時に参照 • 内部節点の再展開を減少

  25. 詰碁の探索空間はサイクルを含む 以前の局面に戻る着手は禁じ手 C.f. SSKルール トランスポジションテーブルは経路を無視 間違えた答えを返す可能性 例 ABD(B) 勝ち ACDB(D) 負け Graph-History Interaction (GHI)問題 [Palay:83] A B C D 勝ち or 負け? OR節点 Dの値は一意に決まらない AND節点

  26. トランスポジションテーブルの各エントリーに局面+経路情報を保持トランスポジションテーブルの各エントリーに局面+経路情報を保持 不明の節点は証明数・反証数の情報を利用 サイクルがらみの勝ち負けは勝ち/負け via pathと保存 サイクルが無関係のときは「無条件」勝ち/負けと保存 例 Df-pn(r)におけるGHI問題対策[Kishimoto & Mueller:AAAI2004] A B C D D via ABD 勝ち D via ACD 負け

  27. TsumeGo Explorerの中身(残りの部分) • 探索エンジン: df-pn(r) • ゲーム依存プラグイン • 終端局面の判定 • 着手生成 • 性能向上手法 • 接続 [Mueller:GPW1997] • 強制手 • シミュレーション [Kawano:1996] • 評価関数

  28. 着手生成 パス+領域内の着手全て 強制手 終端節点の判定 活き形である  例:二眼、セキ 受け方の勝ち 眼を作るスペースがない 攻め方の勝ち TsumeGo Explorerのゲーム依存プラグイン 黒:受け方 白:攻め方

  29. 攻め方の接続のみを考慮 不安定な石を活きた石と判定可能 受け方の石の死を早い段階で判定 黒死の例 見合い戦略[Mueller:GPW97]を用いた接続 黒:受け方 白:攻め方

  30. 強制手の例 強制手:安全枝刈り方法

  31. シミュレーション [Kawano:96] • 「似た」局面の証明木を高速に構築する方法 勝ちの局面 P1 似た局面 Q1 P2 Q2 P3 P4 Q3 Q4 P5 P6 Q5 Q6 OR節点 AND節点

  32. 勝ち A4 Df-pn(r) Df-pn(r) Simulation シミュレーションの詰碁への適用 P1 A4 P2 P3 P4 P5

  33. Df-pnベースの方法の問題 石を捕ることを嫌う 一時的な証明数・反証数が大きくなる 証明数・反証数の初期化のために評価関数を利用 [Nagai:GPW2001] 評価関数を利用した証明数・反証数の初期化 (1 / 2) P1 P2 先端節点 pn(P2) = 1 dn(P2) = 1 pn(P2) = evalPN(P2) dn(P2) = evalDN(P2)

  34. 二眼を作れる距離の概算 目を奪う着手の評価値 評価関数を利用した証明数・反証数の初期化 (2 / 2) 2 1 2 3 4 2 4 15 2 4 1 2 2 3 5 5

  35. その他の話題(囲碁プレイヤー向け) • コウの取り扱い • 詰碁問題の結果に影響 • TsumeGo Explorer のでコウの取り扱い • 2回の探索によって対応 • 1回目:コウ立てなしとして探索 • 2回目:負けたプレイヤーに無限にコウダテがあると仮定して再探索 通常は再探索のオーバーヘッドは少ない

  36. TsumeGo ExplorerとGoToolsの性能比較 • マシン環境: Athlon XP 2800+ • 制限時間: 各問5分 • 利用した問題 • Muellerのテスト問題 • Muellerによって作成された148題 • 簡単なものから非常に難しいものまで様々な難易度 • http://www.cs.ualberta.ca/~games/go/oneeye/ • Wolfのテスト問題 • GoToolsにとっての難問418題

  37. Muellerのテスト問題 (白先白活) Wolfのテスト問題 (白先白活) 利用した問題の例

  38. Wolfの問題における性能比較 解けた問題数 実行時間の 合計(秒) GoTools 418 1,235 TsumeGo Explorer 418 448 合計数 418

  39. Wolfの問題におけるパフォーマンスグラフ 両方のプログラムで解けた問題のプロット

  40. Muellerの問題における性能比較 実行時間の 解けた問題の数合計(秒) (119問) GoTools 119 957 TsumeGo Explorer 142 47 合計 148

  41. Muellerのテスト問題におけるパフォーマンスグラフMuellerのテスト問題におけるパフォーマンスグラフ 両方のプログラムで解けた問題のプロット

  42. GoToolsの知識は小サイズの問題には有効 GoToolsは静的に解答 TsumeGo Explorerは3,159節点で解答(0.1秒) 白先黒死 Lessons Learned (1 / 3)

  43. 黒先黒活 難しい問題ではより良い探索アルゴリズムが必要 GoToolsは5分以内に解答不可能 TsumeGo Explorer は 0.73秒(22,616節点)で解答 Lessons Learned (2 / 3)

  44. Lessons Learned (3 / 3) • 性能向上には強力な探索アルゴリズムと様々な性能向上のためのアイデアの両方が必要 566題のテスト問題を用いた場合の性能比較                 解けた問題 合計実行時間 展開節点総数                  (566題中)    (564題中)    (564題中) (1): df-pn(r) 564 6,262 399,195,987 (2): (1) + 連結     564 3,828 185,639,307 (3): (2) + 強制手     566 1,480 63,049,713 (4): (3) + シミュレーション566 1,146 54,265,265 (5): (4) + 評価関数     566   808 36,592,360

  45. まとめと今後の課題 • まとめ • df-pnベースのアルゴリズムを詰碁へ応用 • 比較的少ないゲーム依存の知識 • 現在最高性能の詰碁ソルバーの実装に成功 • 今後の課題 • より大きなサイズの問題への挑戦 • 22~27空点サイズの問題を解くのが限界 • C.f. GoToolsは14空点程度 • 知識をもっと足す必要あり? • 開いた問題を解けるソルバーの開発 • 実際の囲碁を打つシステムへの利用

  46. 最終的に解きたい問題の例 • 囲碁発陽論 第1番 (白先白活)

  47. 宣伝:現在進行中のプロジェクト • Akebonoプロジェクト • 「日本発」の強いコンピュータ囲碁プログラムの開発 • 現在のメンバー • 岸本章宏 (はこだて未来大学情報アーキテクチャ学科助手) • 金子知適 (東京大学大学院広域科学専攻助手) • 美添一樹 (東京大学大学院情報理工学系研究科今井研) • 吉本晴洋 (東京大学大学院情報理工学系研究科田浦研) • 現在は9路盤のみ実装、将来は19路盤も • 興味のある方は akebono@graco.c.u-tokyo.ac.jp まで

More Related