370 likes | 568 Views
コンピュータ詰碁の 探索戦略の改良. 2005/02/10 近山・田浦研究室 37-46383 石井宏和. Agenda. 背景と目的 関連研究 Df-pn+ Depth-First Proof-Number 探索 Bouzy’s 5/21 Algorithm 提案手法 実験と評価 まとめと今後の課題. Agenda. 背景と目的 関連研究 Df-pn+ Depth-First Proof-Number 探索 Bouzy’s 5/21 Algorithm 提案手法 実験と評価 まとめと今後の課題. コンピュータゲームプレイヤ.
E N D
コンピュータ詰碁の探索戦略の改良 2005/02/10 近山・田浦研究室 37-46383 石井宏和
Agenda • 背景と目的 • 関連研究 • Df-pn+ • Depth-First Proof-Number探索 • Bouzy’s 5/21 Algorithm • 提案手法 • 実験と評価 • まとめと今後の課題
Agenda • 背景と目的 • 関連研究 • Df-pn+ • Depth-First Proof-Number探索 • Bouzy’s 5/21 Algorithm • 提案手法 • 実験と評価 • まとめと今後の課題
コンピュータゲームプレイヤ • ルールが単純で評価がし易い • 機械学習や並列計算などの技術を総合的に用いる対象 • 人間の世界チャンピオン以上のレベルのゲーム • オセロ, バックギャモン, チェス • いくつかの複雑なゲームではアマチュアレベル • 将棋, 囲碁 囲碁
囲碁の基本ルール • 二人で交互に黒と白の石を盤上の交点に打つ • 上下左右を敵石に囲まれると石は盤上から取り除かれる • 上下左右に敵石がある交点へは打てない • 勝敗は地(囲んだ空点の数)の多さで決める 9目 13目
囲碁の基本ルール • 眼 • 周りを完全に囲まれた空点 • 眼を二つ(二眼)持っているとその石は最後まで取られずに残る(生き)
囲碁の現状 • 最新のコンピュータゲームプレイヤの強さ • アマチュア初段程度 • 囲碁の難しさ • 探索空間の大きさ:10360 • オセロ:1060 • チェス:10120 • 将棋:10220 • 形勢優劣の判断 • 石の特徴が無い →相対的に分かる判断基準が少ない
詰碁 • 囲碁の部分問題 • 限られた領域内で、特定の石(の繋がり)が最終的に盤上に残る(生きる)かどうかの判定 • 二眼を持てば生き
目的 • 詰碁の問題を効率的に解くこと • 研究対象 • 一眼問題
一眼問題 • 一眼問題 • 生かすべき石が決まっている • 生かすべき石は始めから眼を一つ持つ • 受け手の石は攻め手の生きた石に囲まれている • 着手範囲が決まっている 眼 眼 眼
Agenda • 背景と目的 • 関連研究 • Df-pn+ • Depth-First Proof-Number探索 • Bouzy’s 5/21 Algorithm • 提案手法 • 実験と評価 • まとめと今後の課題
Df-pn+ [Nagai, et al1999] • Depth-First Proof-Number(Df-pn)+ • AND/OR 木探索で最も成功している探索手法の一つ • Depth-First Proof-Number探索を基本
AND/OR 木探索 • ノードの種類 (黒先手・黒生きの例) • OR ノード • 受け手の手番(黒)に相当 • 子ノードのうち、最低どれか一つが詰み(黒が生き)であれば詰むノード • AND ノード • 攻め手の手番(白)に相当 • 子ノードの全てが詰んで初めて詰むノード • 交互につながって探索木を構成
Depth-First Proof-Number探索 • 二つの閾値による探索の制御(黒先・黒生の場合) • 証明数 (Proof Number (pn) ) • 各ノードにおいて、その詰み(黒の生き)を証明するために展開しなければならない子ノードの最小の数 • 反証数 (Disproof Number (dn) ) • 各ノードにおいて、その不詰み(黒の死に)を証明するために展開しなければならない子ノードの最小の数 • ノードを探索する時に最低限必要なリソース量の見積もり 計算方法 C: children of node n
Depth-First Proof-Number探索 • リソース量の少ない見積もりから早く探索したい • ORノードでは証明数・ANDノードでは反証数の小さい(必要とされるリソース量の見積もりが少ない)ものから優先的に探索 • 深さ優先探索 • メモリ使用量や時間の効率が良い • 証明数・反証数それぞれに閾値を設けて探索
Depth-First Proof-Number探索 (thp,thd) [pn,dn] (∞,∞) [1,1] [1,2] ○:OR NODE □:AND NODE R R ルートノードに閾値を付与 R.thp =∞ , R.thd=∞ n2 nc nc n2 (2,∞-1) A A [1,1] [3,1] (4,∞-1) B B [1,1] [2,1] thp2 ≦ pn 3 nc n2 C D E (3,2) F F G [1,1] [1,1] [1,2] thd2 ≦ dn 2 [1,1] [1,1] [1,1] [1,1] H I [1,1] ノードnにおいて以下の条件を満たすまで子を探索(終了条件) pn(n)≧n.thp or dn(n)≧n.thd ノードnがORノード時証明数最小ncと二番目に小さいn2を選び閾値を与えてncを探索 nc.thp=min(n.thp, n2.pn+1) nc.thd=n.thd+nc.dn-∑C.dn ノードnがANDノード時反証数最小ncと二番目に小さいn2を選び閾値を与えてncを探索 nc.thp=n.thp+nc.pn-∑C.pn nc.thd=min(n.thd, n2.dn+1)
Df-pn+ • 人間の先読み • 見込みのある手は深く読む • 見込みのない手は早々に読むのをやめる • Df-pnにヒューリスティックスを用いて人間の見込みの判別を表現し、探索を効率化
Df-pn+ • Df-pnに加える二つのヒューリスティックス • cost(dis)proof(n, nchild) • ノードの展開の重さを計る指標 • ノードnからその子ノードnchildまでにかかるコストを計るヒューリスティックス • 証明数・反証数とそれぞれの閾値の計算に反映 • h(dis)proof(n) • 兄弟ノードの優劣を計る指標 • 静的にノードnを評価するヒューリスティックス • ノードnが先端ノードの時の証明数と反証数の値に反映
Bouzy’s 5/21 Algorithm [Bouzy 1995] • 盤面の形勢を評価するアルゴリズム • 各交点をそれぞれを周りの石の状況により評価 • 一定の計算式からなる評価関数 • 二つの操作を繰り返すことにより各交点に評価を与える • Dilation • Erosion • 軽い評価関数
Bouzy’s 5/21 Algorithm Dilation Erosion • Dilation • 周りに敵石がいなければ、周りの味方の暫定領地および味方の石の個数をその交点の暫定領地として加える • Erosion • 周りの敵石・敵側の暫定領地および空白地の個数を0になるまで引く 1 2 2 4 1 1 2 2 1
Bouzy’s 5/21 Algorithm • 盤上で石のある交点に対して、黒なら正・白なら負の高い評価値を与える • 空点に0の評価値を与える • 全ての交点に対してDilationをn回行う • 全ての交点に対してErosionをm回行う • m = n ( n – 1) + 1
Bouzy’s 5/21 Algorithm 5 5 5 5 5 -5 5 5 -15 5 5 -14 -10 -14 -14 -18 -14
Agenda • 背景と目的 • 関連研究 • Df-pn+ • Depth-First Proof-Number探索 • Bouzy’s 5/21 Algorithm • 提案手法 • 実験と評価 • まとめと今後の課題
Df-pn+ へのBouzyの適用 • 囲碁の評価関数 • 判断基準が曖昧 • 石に特徴が無い → 優先順位の決定が困難 • GoToolsの評価関数 • 様々な囲碁の知識を利用 →定式化された軽い評価関数BouzyをDf-pn+に適用
Df-pn+ へのBouzyの適用 • 詰碁は目的の石(のつながり)が二眼を持っているかどうか • 評価値の中で大きいものから二つが眼となる可能性が高い →二番目に大きい評価値を最大化する着手に最大の評価 • ノードnが先端ノードだった時に用いるヒューリスティックス(hproof(n))に適用 Df-pn Df-pn+
Df-pn+ へのBouzyの適用 2 0 0 -12 0 20 0 0 -11 0 -6 0 0 -20 -20 -15 -1 0 0 0 -9 0 0 0 0 0 -12 -15 -3 0 0 0 0 0 0 -3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Df-pn+ へのBouzyの適用 a b 2 0 0 20 0 0 0 0 0 0 c d 20 20 0 20 2 0 0 0 0 0 14 14 20 0 20 2 0 0 e f 0 0
Agenda • 背景と目的 • 関連研究 • Df-pn+ • Depth-First Proof-Number探索 • Bouzy’s 5/21 Algorithm • 提案手法 • 実験と評価 • まとめと今後の課題
評価実験 • 実験環境 • CPU: Pentium 4 1.90GHz • メモリ: 512MB • 言語: C++ • 比較手法 A.反復深化法(深さを閾値にして、閾値を徐々に大きくする 深さ優先探索)にBouzyを使って子ノードの 優先順位付けをするもの B. Df-pn C. Df-pnでpn・dnが同じ場合にBouzyを使って 子ノードの優先順位付けをするもの • 一眼問題40問
評価実験 A. 反復深化法にBouzyを使って 子ノードの優先順位付けを するもの B. Df-pn C. Df-pnでpn・dnが同じ場合に Bouzyを使って子ノードの 優先順位付けをするもの
評価実験 • 各手法において、提案手法よりも探索ノード数が多かった問題・同数だった問題・少なかった問題の数 • 手法Aよりは優れている • 手法Bよりはおおむね優れているが、場合によっては悪い結果を出す • 手法Cとはほぼ優劣がない
1 評価実験 • 成功した例 • 探索可能領域がある程度の大きさの空点で構成される場合 • 特に、その領域内に受け手の石がある場合
1 評価実験 • 失敗した例 • 問題の解が受け手の守るべき石から離れている場合 • 受け手の守るべき石に近いところに高い評価値
Agenda • 背景と目的 • 関連研究 • Df-pn+ • Depth-First Proof-Number探索 • Bouzy’s 5/21 Algorithm • 提案手法 • 実験と評価 • まとめと今後の課題
まとめ • 詰碁を効率的に解くことを目的 • Df-pn+にBouzy’s 5/21 Algorithm を適用 • 3つの手法と比較 A. 深さを閾値にした深さ優先探索に子ノードの優先順位付け としてBouzyを使ったもの B. Df-pn C. Df-pnでpn・dnが同じ場合にBouzyを使って子ノードの順位 付けをしたもの • 手法Aよりは優れた結果 • 手法Bよりもおおむね優れているが、場合によっては悪い結果 • 手法Cとはほぼ優劣がつかない
今後の課題 • 碁盤プログラムの改善 • 時間による考察 • Dilation, Erosionの回数変更 • 評価関数のBouzyの適用方法の変更 • 探索可能領域の全ての交点の評価値の和を最大化するような着手に最大の評価
発表は以上です。 ありがとうございました。