34
囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲 囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲 囲囲囲囲囲囲囲囲囲囲囲囲囲 囲囲囲囲囲囲囲囲囲囲囲囲囲 囲囲 囲囲 囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲 囲囲囲囲囲囲囲囲囲囲囲囲囲囲囲 囲囲囲囲囲囲囲囲囲囲 囲囲囲囲囲囲囲囲囲囲 囲囲囲囲囲 囲囲囲囲囲

囲碁プログラミングの探索における小目標間の依存関係解決に向けて

  • Upload
    nellie

  • View
    43

  • Download
    2

Embed Size (px)

DESCRIPTION

囲碁プログラミングの探索における小目標間の依存関係解決に向けて. 美添 一樹 東京大学大学院情報理学系研究科 コンピュータ科学専攻 今井研究室. 囲碁のルール. 黒、白交互に交点に石を置いていく 19x19 の盤が普通 最終的に「地」が大きいほうが勝ち 「地」とは一方の色の石だけで囲われた範囲のこと. 囲碁のルール : 囲んだら取れる. ▲ のところに黒が打つと、白石を取れる 空点が無くなると取られる 空点のことを、「 呼吸点 」「 ダメ 」などと言う つながっている石は一蓮托生になっている 取られるときはまとめて取られる - PowerPoint PPT Presentation

Citation preview

Page 1: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

囲碁プログラミングの探囲碁プログラミングの探索における小目標間の依索における小目標間の依

存関係解決に向けて 存関係解決に向けて 美添 一樹美添 一樹

東京大学大学院情報理学系研究科東京大学大学院情報理学系研究科コンピュータ科学専攻コンピュータ科学専攻

今井研究室今井研究室

Page 2: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

囲碁のルール囲碁のルール黒、白交互に交点に石を置いていく黒、白交互に交点に石を置いていく 19x1919x19 の盤が普通の盤が普通最終的に「地」が大きいほうが勝ち最終的に「地」が大きいほうが勝ち 「地」とは一方の色の石だけで囲われた範囲「地」とは一方の色の石だけで囲われた範囲

のことのこと

Page 3: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

囲碁のルール 囲碁のルール : : 囲んだら取れる囲んだら取れる▲▲ のところに黒が打のところに黒が打つと、白石を取れるつと、白石を取れる 空点が無くなると取ら空点が無くなると取ら

れるれる空点のことを、「空点のことを、「呼吸呼吸点点」「」「ダメダメ」などと言」などと言うう

つながっている石は一つながっている石は一蓮托生になっている蓮托生になっている

取られるときはまとめ取られるときはまとめて取られるて取られるつながっている石の集つながっている石の集合を「合を「連連」という」という

Page 4: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

囲碁のルール 囲碁のルール : : 着手禁止点と例着手禁止点と例外外

AA に打つと反則に打つと反則 そのまま取られるそのまま取られる

場所には打てない場所には打てないBB には打って良いには打って良い 打った瞬間に黒石打った瞬間に黒石

を取れるからを取れるから

Page 5: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

囲碁のルール 囲碁のルール : : コウコウ右図の形になったら、簡右図の形になったら、簡単に無限反復が生じる単に無限反復が生じる 取られてもすぐに取り返し取られてもすぐに取り返し

てはいけないてはいけない 取り返すと反則取り返すと反則

コウがあるせいで囲碁のコウがあるせいで囲碁のプログラムは難しい・・プログラムは難しい・・・・

Page 6: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

生き、死に、という概念生き、死に、という概念着手禁止点が二つある石は、着手禁止点が二つある石は、絶対に取られる事はない絶対に取られる事はない 絶対に取られない石を「生き絶対に取られない石を「生き

ている」と言うている」と言う 着手禁止点のことを「着手禁止点のことを「眼眼」と」と

言う言う

二眼あると「生き」二眼あると「生き」

Page 7: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

実戦例実戦例「手談対局「手談対局 VV 」と」と私が私が 99 路盤で打った路盤で打った例例 これは終局図これは終局図 ちなみに引き分けちなみに引き分け 手加減したからです手加減したからです

Page 8: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

研究の背景 研究の背景 : : ゲームプレイングゲームプレイングプログラムプログラム // コンピュータの強さコンピュータの強さチェッカー チェッカー : CHINOOK (Jonathan Shaeffer): CHINOOK (Jonathan Shaeffer) 1992, 19941992, 1994 にに TinsleyTinsley と対戦と対戦リバーシ リバーシ : Logistello (Michael Buro): Logistello (Michael Buro) 19961996 に世界チャンピオン村上に勝利に世界チャンピオン村上に勝利チェス チェス : Deep Blue: Deep Blue 19971997 にに KasparovKasparov に勝利に勝利中国将棋中国将棋 チェスと将棋の中間の強さらしいチェスと将棋の中間の強さらしい将棋 将棋 :: 激指、 激指、 YSS YSS 、、 ISIS 将棋、…将棋、… アマ五段クラス 角落ちでプロアマ五段クラス 角落ちでプロ (( 勝又五段勝又五段 )) に勝利に勝利 アマ竜王戦ベストアマ竜王戦ベスト 16 (16 ( 激指激指 ))

しかし囲碁は・・・しかし囲碁は・・・

Page 9: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

囲碁プログラムの強さ囲碁プログラムの強さ現在世界最強の囲碁プログラムはおそらく現在世界最強の囲碁プログラムはおそらく 33 級級程度の強さ程度の強さ

現在最高の死活判定プログラムは非常に強い現在最高の死活判定プログラムは非常に強い 速度と正確性は人間をはるかに上回る速度と正確性は人間をはるかに上回る 「開いた」問題は解けない「開いた」問題は解けない

GoTools [Wolf]GoTools [Wolf]

df-pn based life and death solver [df-pn based life and death solver [ 岸本 岸本 and Muller]and Muller]

大きなギャップ

Page 10: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

囲碁プログラムの難しさ囲碁プログラムの難しさ

チェスなどでの成功チェスなどでの成功 評価関数 評価関数 + + 探索探索

しかし囲碁では、・・・しかし囲碁では、・・・ 早く正確な評価関数は存在しないし、今後も作れない早く正確な評価関数は存在しないし、今後も作れない

(( と思うと思う ))

多くのプログラムでは小目標多くのプログラムでは小目標 (sub-goal, partial (sub-goal, partial goal, local goal,…)goal, local goal,…) ごとのサーチが用いられているごとのサーチが用いられている 小目標 小目標 : : 明確に定義された評価関数がある目標明確に定義された評価関数がある目標

石取り、連絡切断、死活、・・・石取り、連絡切断、死活、・・・

Page 11: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

小目標ごとのサーチの問題点小目標ごとのサーチの問題点各小目標の間の依存関係各小目標の間の依存関係 端的に言えば、二つ以上の目標を端的に言えば、二つ以上の目標を

同時に狙った手の発見が難しい同時に狙った手の発見が難しい「両利き」の発見「両利き」の発見

既存の手法既存の手法 石取り、死活に関する点をある程石取り、死活に関する点をある程

度記憶して置く度記憶して置くGnuGoGnuGo 、、 Goemate(Goemate( 商品名「手商品名「手談対局」談対局」 ))

複雑な候補手生成と評価関数で対複雑な候補手生成と評価関数で対応応

Haruka(Haruka( 商品名「最高峰」商品名「最高峰」 ))

Page 12: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

「利き」を利用した依存関係の「利き」を利用した依存関係の検出検出

「利き」の定義「利き」の定義 利き 利き : loser: loser の手で、の手で、 winnerwinner がが

11 回パスをすると回パスをすると loserloser ととwinnerwinner が入れ替わる手が入れ替わる手

上の図の上の図の ×× の点の点 利きの利きの orderorder というものを定義というものを定義

することもできるすることもできる下の図の下の図の ×× の点はの点は order 2order 2 の利きの利きと言えると言える

Page 13: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Related WorkRelated Work“Search for Transitive Connections”“Search for Transitive Connections”

連連 AA と連と連 BB は連結 は連結 (CN_AB)(CN_AB)

連連 BB と連と連 CC も連結 も連結 (CN_BC)(CN_BC)

では連では連 AA と連と連 CC は?は?

[Cazenave, Helmstetter 2004][Cazenave, Helmstetter 2004]

Page 14: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Related Work : “Trace”Related Work : “Trace”

Introduced in [Cazenave and HIntroduced in [Cazenave and Helmstetter 2004]elmstetter 2004] 小目標は、連絡切断に限られる小目標は、連絡切断に限られる ““Trace”Trace” の定義は、探索アルゴリの定義は、探索アルゴリ

ズムに依存するズムに依存する““the trace is a set of empty intersectiothe trace is a set of empty intersections such that if none is modified, the rns such that if none is modified, the result of the search associated to the tesult of the search associated to the trace is not modified.” (from “Search frace is not modified.” (from “Search for transitive connections”)or transitive connections”)

Page 15: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

““Trace”Trace” の特徴の特徴定義は探索アルゴリズムに依存する定義は探索アルゴリズムに依存する GTS (Generalized Threats Search)GTS (Generalized Threats Search) が用いらが用いら

れている れている [Cazenave and Helmstetter 2004][Cazenave and Helmstetter 2004]

比較的大きくなりにくい比較的大きくなりにくい 連絡切断の判定の性質連絡切断の判定の性質 GTSGTS は枝狩りと打ち切りの双方に有効は枝狩りと打ち切りの双方に有効

現状、連絡切断以外には使われていない現状、連絡切断以外には使われていない

Page 16: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Related Work :Related Work :Relevancy Zone (1/2)Relevancy Zone (1/2)

Introduced in “Lambda-Search” [Thomsen Introduced in “Lambda-Search” [Thomsen 2000]2000]

目指すところは “目指すところは “ Trace” Trace” と同じと同じ真の真の R-Zone R-Zone を発見するのは困難を発見するのは困難 R*-Zone R*-Zone というものが提案されているというものが提案されているR*-ZoneR*-Zone の定義の定義 ““shadow stones”shadow stones” ““surrounding stones” surrounding stones” のダメのダメ (( 呼吸点呼吸点 )) の数の数

Page 17: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Related Work :Related Work :Relevancy Zone (2/2)Relevancy Zone (2/2)

[Ramon & Croonenborghs 2004][Ramon & Croonenborghs 2004]

R*-ZoneR*-Zone を用いて、複数の小目標を組みを用いて、複数の小目標を組み合わせた目標を探索合わせた目標を探索 NOT, AND, ORNOT, AND, OR によるによる 22 つの小目標の組合せつの小目標の組合せ 小目標は連絡切断、石取り、生き小目標は連絡切断、石取り、生き (( 眼持ち眼持ち ))

Page 18: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

R*-ZoneR*-Zone の定義の定義 (( 概要概要 ) (1/2)) (1/2)

[Thomsen 2000][Thomsen 2000] から引用した盤面から引用した盤面

Page 19: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

R*-ZoneR*-Zone の定義の定義 (( 概要概要 ) (2/2)) (2/2)

shadow stones およびそれに隣接する点

surrounding stones のダメの一部

Page 20: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

R*-ZoneR*-Zone の問題点 の問題点 (1/2)(1/2)

100%100% 安全ではない安全ではないこの点は「利いて」いる( シチョウアタリになっている )

どうやって発見するか ?

Quasi-surrounding stonesQuasi-surrounding stones この白の連は、黒の連をこの白の連は、黒の連を

shadow stonesshadow stones 経由で囲んで経由で囲んでいると言えるいると言える

Page 21: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

R*-ZoneR*-Zone の問題点 の問題点 (2/2)(2/2)

““quasi-surrounding stonesquasi-surrounding stones”” のダメのダメ (( 呼吸点呼吸点 )) shadow stoneshadow stone 経由で間接的に相手の連を囲っている経由で間接的に相手の連を囲っている しかししかし shadow stoneshadow stone は一意に定まるわけではないは一意に定まるわけではない

Page 22: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

「利き」を探索する動機 「利き」を探索する動機 (1/2)(1/2)

““Trace”Trace” は連絡切断にしか使われていなは連絡切断にしか使われていないいR*-ZoneR*-Zone はは 100%100% ではないではない

11 パターンのパターンの shadow stoneshadow stone を使うだけでを使うだけでは基本的に安全でないは基本的に安全でない

現状では、複数の目的を同時に考慮し現状では、複数の目的を同時に考慮したサーチの正解率は低いたサーチの正解率は低い

問題の種類によるが、正解率は問題の種類によるが、正解率は 50%~80% 50%~80% [Ramon and Croonenborghs 2004][Ramon and Croonenborghs 2004]

より良いアイデアが必要より良いアイデアが必要

Page 23: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

「利き」を探索する動機 「利き」を探索する動機 (2/2)(2/2)

特に「両利き」を発見するには、「利特に「両利き」を発見するには、「利き」の範囲を厳密に知ることが重要き」の範囲を厳密に知ることが重要 理想的には可能な全ての場合について理想的には可能な全ての場合について

shadow stoneshadow stone を発見すればよいを発見すればよい

1. 白が 1 に打つ ( 実は利いていない )

2. 黒はどこか他のところに打てる

3. 白が逃げようとしても

4. ゲタでとられる

Page 24: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

利きの求め方 利きの求め方 ::Alpha-BetaAlpha-Beta でとりあえずやってみでとりあえずやってみ

たた1.1. まず普通にサーチしてまず普通にサーチして winnerwinner とと loserloser をを求める求める

2.2. winnerwinner の他の勝ち方を求めるの他の勝ち方を求める (( 他の 他の shadow stonesshadow stones を求めるを求める ))

囲碁ではパスは合法なので囲碁ではパスは合法なので null movesnull moves は自は自動的にサーチされる動的にサーチされる

3.3. サーチしたツリーから「利き」の情報をサーチしたツリーから「利き」の情報を収集する収集する

Page 25: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Step 1,2Step 1,2

まず普通に探索をするまず普通に探索をする df-pndf-pn による石取り探索を実装したによる石取り探索を実装した

枝狩りを限定した枝狩りを限定した Alpha-BetaAlpha-Beta 探索を実行探索を実行 全ての全ての shadow stoneshadow stone を発見するためを発見するため

まず対象とした問題

白石の逃げ出しを可能にする「利き」の範囲を求める

Page 26: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Step 3Step 3

探索木から「利き」の情報を収集する探索木から「利き」の情報を収集する 「利き」の候補手の情報はルートノードでは「利き」の候補手の情報はルートノードでは知られていないので、深いノードからも情報知られていないので、深いノードからも情報を収集するを収集する

Page 27: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

lose

lose

winlose

win

OR node AND node

pass

inverting threat

loselose

Get Union of the inverting threat

OR nodeOR node でのアルゴリズでのアルゴリズムの動作ムの動作 winnerwinner がパスすることによがパスすることによ

って結果が反転する場合、って結果が反転する場合、その直前の手が「利き」その直前の手が「利き」

子ノードから伝播してきた子ノードから伝播してきた「利き」の和集合を取る「利き」の和集合を取る

Page 28: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

lose

OR node AND node

set of inverting threat

AND nodeAND node でのアルゴリでのアルゴリズムの動作ズムの動作 「最小の利き」を求める「最小の利き」を求める 子ノードから伝播してきた子ノードから伝播してきた

「利き」の共通部分を取る「利き」の共通部分を取るpass

lose

Take intersection of the inverting threat

lose ?

lose lose

lose win

lose

Page 29: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

結果結果正しい「利き」を発正しい「利き」を発見した見した可能な全ての可能な全ての R*-R*-Zone Zone の共通部分と同の共通部分と同じじ探索したノード数は探索したノード数は2,000,000+2,000,000+ ほぼほぼ mini-maxmini-max

Page 30: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Future WorkFuture WorkBrute Force + Simulation (1/2)Brute Force + Simulation (1/2)

期待していること期待していること 単一の目標に対しては、高速なアルゴリズム単一の目標に対しては、高速なアルゴリズム

が知られているが知られているdf-pn [Nagai 2002]df-pn [Nagai 2002]

Lambda Search [Thomsen 2000]Lambda Search [Thomsen 2000]

Generalized Threats Search [Cazenave 2002]Generalized Threats Search [Cazenave 2002] 典型的なシチョウやゲタでは探索ノード数は典型的なシチョウやゲタでは探索ノード数は

数十~数百ノード数十~数百ノード

Page 31: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Future WorkFuture WorkBrute Force + Simulation (2/2)Brute Force + Simulation (2/2)

1.1. 11 つ つ shadow stoneshadow stone を見つけるを見つける2.2. shadow stoneshadow stone の要素のの要素の 11 つつ 11

つについてそれが「利き」かつについてそれが「利き」かどうか探索するどうか探索する

それぞれについて石を打ってみそれぞれについて石を打ってみて、普通に探索て、普通に探索

それだけだと点の数に比例したそれだけだと点の数に比例した時間がかかるので、時間がかかるので、 simulation simulation [Kawano 1996][Kawano 1996] により時間を短により時間を短縮縮

3.3. 再帰的に「利き」の範囲を限再帰的に「利き」の範囲を限定していく定していく

Page 32: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

Open Problem :Open Problem : より間接的なより間接的な「利き」の発見「利き」の発見 (( よりより orderorder の高いの高い

利き利き ))11 手で利く範囲を発見するだけでは不十分手で利く範囲を発見するだけでは不十分 この例では、この例では、 ×× の付いた点はの付いた点は 11 手では利きで手では利きで

はないはない 22 手打たれて初めて利きとなる手打たれて初めて利きとなる

Page 33: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

結論結論特に両利きの手を発見するためには、真の「利特に両利きの手を発見するためには、真の「利き」の範囲を発見することが重要き」の範囲を発見することが重要 そのためには、「最小の利き」を発見する能力が必そのためには、「最小の利き」を発見する能力が必

要要一応、「利き」を発見するアルゴリズムを作成一応、「利き」を発見するアルゴリズムを作成したした このままではこのままでは mini-maxmini-max に近い時間がかかるに近い時間がかかる 性能向上のためのアルゴリズムを提案性能向上のためのアルゴリズムを提案22 手以上打たれて初めて「利き」となる問題に手以上打たれて初めて「利き」となる問題についてはアイデア募集中ついてはアイデア募集中

Page 34: 囲碁プログラミングの探索における小目標間の依存関係解決に向けて

おわりおわり