Slide1 l.jpg
This presentation is the property of its rightful owner.
Sponsored Links
1 / 47

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


  • 92 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Slide1 l.jpg

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

岸本 章宏

公立はこだて未来大学システム情報科学部

情報アーキテクチャ学科

[email protected]

共同研究者: Martin Mueller

Department of Computing Science,

University of Alberta, Canada

[email protected]


Slide2 l.jpg

発表概要

  • 研究背景

  • 関連研究

  • 詰碁ソルバー:TsumeGo Explorer

  • 実験結果 – GoToolsとの性能比較

  • まとめと今後の課題


Slide3 l.jpg

ゲームと人工知能研究

  • なぜゲームなのか?

    • 探索アルゴリズムにとって理想的な題材

      • 簡単なルールと結果

      • 膨大な探索空間

      • リアルタイムに応答する必要性

    • 多くのアプリケーションが存在

      • シークエンスアラインメント問題

      • 定理証明など

    • 研究者への明確な動機付け

      • 世界チャンピオンに勝てるようなプログラムの作成


Slide4 l.jpg

コンピュータ囲碁研究の意義

  • チェスでのDeep BlueのKasparovへの勝利

    • 探索ベースのアプローチ

      より難しいゲームへ

  • 次のターゲットは囲碁

    • 大きな探索空間

      • チェス 1040 囲碁 10170

    • 局面の評価の難しさ

      • チェス 駒の損得  囲碁 ???


Slide5 l.jpg

白黒が交互にプレイ

空点に石を打つ手かパスが合法

石を取ることが可能

自殺手は禁止

地の大きな方が勝ち

囲碁のルール


Slide6 l.jpg

コンピュータ囲碁の現状

  • 強さ

    • 中級者が最強のプログラムに簡単に勝てるレベル

  • 足りないものは?

    • よい評価関数

    • 効率のよい探索アルゴリズム

囲碁は難しいので「賢い」探索アルゴリズムが必要


Slide7 l.jpg

コンピュータ囲碁における詰碁(死活)問題

  • 囲碁はやはり探索するのが困難

  • 囲碁の部分問題に着目

    • 詰碁は探索アルゴリズムにとって理想的な部分問題

      • 強い囲碁プログラムの重要な要素の一つである

      • 現状では常に正しい結果を保証するには探索しかない


Slide8 l.jpg

攻め方は△のついた石をすべて取る

受け方は活きようとする

例: 二眼、セキ

着手は領域内に制限

詰碁問題とは?


And or l.jpg

AND/OR木と詰碁の関係

  • AND/OR木探索アルゴリズムを用いて詰碁を解くことが可能

    • 先手は勝ちに至る少なくとも一つの着手を見つければよい   (OR節点)

    • 後手は全ての着手が負けに至ることを示せばよい  (AND節点)


And or 1 2 l.jpg

AND/OR木の定義 (1 / 2)

  • OR節点とAND節点

    • OR(AND)節点の子節点はAND(OR)節点

  • 各節点は3つの値の可能性

    • 勝ち: ORの勝ち

    • 負け: ANDの勝ち

    • 不明: 今のところ分からない

  • 終端節点:子節点のない節点

    • 勝ちか負けの値

  • 先端節点:未展開の節点

  • 内部節点:子節点を持つ節点

  • ルート節点:開始節点(OR節点)

ルート節点

A

内部節点

B

C

D

E

F

勝ち

負け

不明

先端節点

終端節点

OR節点

AND節点


And or 2 2 l.jpg

OR(AND)節点の値の決定

1つ以上の子節点が勝ち(負け)ならば勝ち(負け)

全ての子節点が負け(勝ち)ならば負け(勝ち)

それ以外は不明

ルート節点が勝ちか負けになるまで木を展開

不明

AND/OR木の定義 (2 / 2)

A

B

C

D

E

F

G

H

I

J

K

L

M

OR節点

AND節点

勝ち

勝ち

勝ち

負け

不明

負け


Slide12 l.jpg

探索空間 O(bd)

b: 分岐因子

d: 深さ

証明木: O(bd/2)

節点が勝ちであることを証明する木

トレードオフ:探索速度を落とさずに探索節点数を減らしたい

証明木

探索効率向上技術の重要性

A

B

C

不明

D

E

F

G

H

I

J

K

L

M

不明

負け

勝ち

勝ち

勝ち

勝ち

OR節点

AND節点


Slide13 l.jpg

探索効率向上へのアプローチ

  • ゲーム非依存の性質を用いる

    • AND/OR木探索一般に応用可能

  • ゲーム依存の知識を用いる

    • そのゲームにのみ利用可能

      高性能なソルバーは両方を用いるのが通常


Slide14 l.jpg

DAGの性質を利用

前の探索結果をハッシュに保存

ゲーム非依存の方法

B

C

D

勝ち

1回の探索でOK

性能向上手法の例 (1 / 2)トランスポジションテーブル

A

ハッシュ表

勝ち

A

B

C

D

勝ち

OR節点

AND節点


Slide15 l.jpg

3

1

2

性能向上手法の例 (2 / 2)評価関数による節点の並べ替え

  • 評価関数

    • 局面を「評価」し、点数化

    • ゲーム依存の知識

      • ある石を捕れるのでプラス10点

      • 2つの石がつながっているのでプラス5点

  • 評価関数による子節点の並べ替え

    • 探索時にすべての子節点を評価

    • 評価値のよい子節点から探索

    • この枠組み自体はゲーム非依存

20

11

5


Slide16 l.jpg

以前の詰碁ソルバーの研究

  • GoTools [Wolf:2000]

    • 石の生死を判定する強力なルール

    • 何年にもわたって書かれた囲碁の知識

      • 着手の並べ替え等に利用

    • 単純なαβ法+トランスポジションテーブル

    • 過去15年にわたって最強の詰碁ソルバーとして君臨

    • 14空点程度の問題しか解けない

      「多数」のゲーム「依存」の手法 + 「単純」なゲーム「非依存」の手法


Slide17 l.jpg

コンピュータ将棋における研究

  • 詰将棋ソルバー

    • 強力な探索アルゴリズム

      • Df-pnアルゴリズム+トランスポジションテーブル

        [Nagai & Imai:1999]

    • 様々な将棋の知識

      • 囲碁における知識よりもずっと単純

    • プロ棋士を凌駕する解答能力

      • 現存する100手詰以上の問題はすべて解答可能

        [Nagai:2002]

        比較的「少数」のゲーム「依存」の手法 + 「強力」なゲーム「非依存」の手法


Slide18 l.jpg

研究成果

  • 詰碁ソルバー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]

      比較的「少数」のゲーム「依存」の手法 + 「強力」なゲーム「非依存」の手法を用いたアプローチ


Tsumego explorer l.jpg

TsumeGo Explorerの概要

  • 探索エンジン: df-pn(r)

  • ゲーム依存プラグイン

    • 終端局面の判定

    • 着手生成

    • 性能向上手法

      • 接続 [Mueller:GPW1997]

      • 強制手順

      • シミュレーション [Kawano:1996]

      • 評価関数


Df pn nagai imai 1999 l.jpg

Df-pn アルゴリズム[Nagai & Imai:1999]

  • 証明数と反証数 [Allis:94]を利用

  • 深さ優先探索

    • 証明数と反証数の閾値を持つ

  • トランスポジションテーブルによる効率化


Slide21 l.jpg

証明数の定義

  • 節点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節点


Slide22 l.jpg

反証数の定義

  • 節点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節点


Df pn 1 2 l.jpg

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節点


Df pn 2 2 l.jpg

Df-pnアルゴリズム (2 / 2)

  • 何度も内部節点を展開

  • トランスポジションテーブルの利用

    • 以前に展開した節点を保存

      • 証明数・反証数など

    • 探索や証明数の計算時に参照

    • 内部節点の再展開を減少


Graph history interaction ghi palay 83 l.jpg

詰碁の探索空間はサイクルを含む

以前の局面に戻る着手は禁じ手

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節点


Df pn r ghi kishimoto mueller aaai2004 l.jpg

トランスポジションテーブルの各エントリーに局面+経路情報を保持

不明の節点は証明数・反証数の情報を利用

サイクルがらみの勝ち負けは勝ち/負け via pathと保存

サイクルが無関係のときは「無条件」勝ち/負けと保存

Df-pn(r)におけるGHI問題対策[Kishimoto & Mueller:AAAI2004]

A

B

C

D

D via ABD 勝ち

D via ACD 負け


Tsumego explorer27 l.jpg

TsumeGo Explorerの中身(残りの部分)

  • 探索エンジン: df-pn(r)

  • ゲーム依存プラグイン

    • 終端局面の判定

    • 着手生成

    • 性能向上手法

      • 接続 [Mueller:GPW1997]

      • 強制手

      • シミュレーション [Kawano:1996]

      • 評価関数


Tsumego explorer28 l.jpg

着手生成

パス+領域内の着手全て

強制手

終端節点の判定

活き形である

 例:二眼、セキ

受け方の勝ち

眼を作るスペースがない

攻め方の勝ち

TsumeGo Explorerのゲーム依存プラグイン

黒:受け方 白:攻め方


Mueller gpw97 l.jpg

攻め方の接続のみを考慮

不安定な石を活きた石と判定可能

受け方の石の死を早い段階で判定

黒死の例

見合い戦略[Mueller:GPW97]を用いた接続

黒:受け方 白:攻め方


Slide30 l.jpg

強制手の例

強制手:安全枝刈り方法


Kawano 96 l.jpg

シミュレーション [Kawano:96]

  • 「似た」局面の証明木を高速に構築する方法

勝ちの局面

P1

似た局面

Q1

P2

Q2

P3

P4

Q3

Q4

P5

P6

Q5

Q6

OR節点

AND節点


Slide32 l.jpg

勝ち

A4

Df-pn(r)

Df-pn(r)

Simulation

シミュレーションの詰碁への適用

P1

A4

P2

P3

P4

P5


Slide33 l.jpg

Df-pnベースの方法の問題

石を捕ることを嫌う

一時的な証明数・反証数が大きくなる

証明数・反証数の初期化のために評価関数を利用 [Nagai:GPW2001]

評価関数を利用した証明数・反証数の初期化 (1 / 2)

P1

P2

先端節点

pn(P2) = 1 dn(P2) = 1

pn(P2) = evalPN(P2)

dn(P2) = evalDN(P2)


Slide34 l.jpg

二眼を作れる距離の概算

目を奪う着手の評価値

評価関数を利用した証明数・反証数の初期化 (2 / 2)

2

1

2

3

4

2

4

15

2

4

1

2

2

3

5

5


Slide35 l.jpg

その他の話題(囲碁プレイヤー向け)

  • コウの取り扱い

    • 詰碁問題の結果に影響

  • TsumeGo Explorer のでコウの取り扱い

    • 2回の探索によって対応

      • 1回目:コウ立てなしとして探索

      • 2回目:負けたプレイヤーに無限にコウダテがあると仮定して再探索

        通常は再探索のオーバーヘッドは少ない


Tsumego explorer gotools l.jpg

TsumeGo ExplorerとGoToolsの性能比較

  • マシン環境: Athlon XP 2800+

  • 制限時間: 各問5分

  • 利用した問題

    • Muellerのテスト問題

      • Muellerによって作成された148題

      • 簡単なものから非常に難しいものまで様々な難易度

      • http://www.cs.ualberta.ca/~games/go/oneeye/

    • Wolfのテスト問題

      • GoToolsにとっての難問418題


Slide37 l.jpg

Muellerのテスト問題

(白先白活)

Wolfのテスト問題

(白先白活)

利用した問題の例


Slide38 l.jpg

Wolfの問題における性能比較

解けた問題数 実行時間の

合計(秒)

GoTools 418 1,235

TsumeGo Explorer 418 448

合計数 418


Slide39 l.jpg

Wolfの問題におけるパフォーマンスグラフ

両方のプログラムで解けた問題のプロット


Mueller l.jpg

Muellerの問題における性能比較

実行時間の

解けた問題の数合計(秒)

(119問)

GoTools 119 957

TsumeGo Explorer 142 47

合計 148


Mueller41 l.jpg

Muellerのテスト問題におけるパフォーマンスグラフ

両方のプログラムで解けた問題のプロット


Lessons learned 1 3 l.jpg

GoToolsの知識は小サイズの問題には有効

GoToolsは静的に解答

TsumeGo Explorerは3,159節点で解答(0.1秒)

白先黒死

Lessons Learned (1 / 3)


Lessons learned 2 3 l.jpg

黒先黒活

難しい問題ではより良い探索アルゴリズムが必要

GoToolsは5分以内に解答不可能

TsumeGo Explorer は 0.73秒(22,616節点)で解答

Lessons Learned (2 / 3)


Lessons learned 3 3 l.jpg

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


Slide45 l.jpg

まとめと今後の課題

  • まとめ

    • df-pnベースのアルゴリズムを詰碁へ応用

    • 比較的少ないゲーム依存の知識

    • 現在最高性能の詰碁ソルバーの実装に成功

  • 今後の課題

    • より大きなサイズの問題への挑戦

      • 22~27空点サイズの問題を解くのが限界

      • C.f. GoToolsは14空点程度

      • 知識をもっと足す必要あり?

    • 開いた問題を解けるソルバーの開発

    • 実際の囲碁を打つシステムへの利用


Slide46 l.jpg

最終的に解きたい問題の例

  • 囲碁発陽論 第1番 (白先白活)


Slide47 l.jpg

宣伝:現在進行中のプロジェクト

  • Akebonoプロジェクト

    • 「日本発」の強いコンピュータ囲碁プログラムの開発

    • 現在のメンバー

      • 岸本章宏 (はこだて未来大学情報アーキテクチャ学科助手)

      • 金子知適 (東京大学大学院広域科学専攻助手)

      • 美添一樹 (東京大学大学院情報理工学系研究科今井研)

      • 吉本晴洋 (東京大学大学院情報理工学系研究科田浦研)

    • 現在は9路盤のみ実装、将来は19路盤も

    • 興味のある方は [email protected]


  • Login