74
モンテカルロ法から 勝率優先探索へ 「どうぶつしょうぎ」 2010/05/22 井原健紘

win-rate first search

Embed Size (px)

Citation preview

Page 1: win-rate first search

モンテカルロ法から勝率優先探索へ「どうぶつしょうぎ」

2010/05/22井原健紘

Page 2: win-rate first search

要するに

• コンピュータ将棋のアルゴリズムの話• 目次

– どうぶつしょうぎエキシビション– 昔からあるmin-max法のおさらい

– 原始的なモンテカルロ法のおさらい– 本題:勝率優先探索

Page 3: win-rate first search

どうぶつしょうぎ

• どうぶつしょうぎで実験した• どうぶつしょうぎ:ミニチュア将棋• 本将棋だと盤が大きすぎて実験には適さ

ない

Page 4: win-rate first search

どうぶつしょうぎルール1

駒の動きは5種類初期配置は右図らいおんをとれば勝ちらいおんが入玉しても勝ち

ひよこは敵陣でにわとりに成る

Page 5: win-rate first search

どうぶつしょうぎルール2

どの駒も1マスずつ動く

前だけ斜め前と前後左右将棋の金

八方 斜め四方

前後左右

将棋と同じで、取った駒は使える反則はほぼない(2ひよこ・打ひよこ詰め・行き所のないひよこ打OK)

Page 6: win-rate first search

どうぶつしょうぎ著作権

• どこが著作権保持者なのか外部から見て分からない– 藤田麻衣子(イラスト作成)– 北尾まどか(ルール作成)– LPSA(作成時二人が所属)– 幻冬舎エデュケーション(販売元)

Page 7: win-rate first search

イラスト

• なお、このスライドでは、藤田女史のイラストではなく、下記サイトのイラストを用いる(著作権が複雑なため)

• 素材屋じゅん• (http://park18.wakwak.com/~osyare/)

Page 8: win-rate first search

エキシビション0手目

先手:勝率優先探索(提案手法)後手:駒割のみのmin-max法の9手読み(従来手法)

Page 9: win-rate first search

エキシビション1手目

先手、きりんを上がる

Page 10: win-rate first search

エキシビション2手目

後手、きりんを上がる

Page 11: win-rate first search

エキシビション3手目

先手、ひよこ交換をせまる

Page 12: win-rate first search

エキシビション4手目

後手、ぞうでひよこを取る

Page 13: win-rate first search

エキシビション5手目

先手、ぞうを上がるひよこ換わり相腰掛けぞうに収まる

Page 14: win-rate first search

エキシビション6手目

後手、一段ひよこを打つ

Page 15: win-rate first search

エキシビション7手目

先手、きりんが下がる渋い手

Page 16: win-rate first search

エキシビション8手目

後手のきりんが進出

Page 17: win-rate first search

エキシビション9手目

きりんを追い払うべく、先手も一段ひよこ

Page 18: win-rate first search

エキシビション10手目

後手、きりんでぞうを取る

Page 19: win-rate first search

エキシビション11手目

先手、らいおんできりんを取る一手

Page 20: win-rate first search

エキシビション12手目

後手、ぞう打ちぞうが横に並ぶかたちは強い後手優勢

Page 21: win-rate first search

エキシビション13手目

先手、らいおんを逃げるしかない

Page 22: win-rate first search

エキシビション14手目

後手、らいおんで圧迫

Page 23: win-rate first search

エキシビション15手目

先手、きりんを打ってらいおんを追い払う

Page 24: win-rate first search

エキシビション16手目

後手、らいおんをここに逃げる

Page 25: win-rate first search

エキシビション17手目

先手、きりんを上がる後手のぞうに、取るか逃げるかの選択を迫っている

Page 26: win-rate first search

エキシビション18手目

後手、ぞうできりんを取った

Page 27: win-rate first search

エキシビション19手目

先手、らいおんでぞうを取る

Page 28: win-rate first search

エキシビション20手目

後手、きりん打ちこのあたりで形勢が五分に戻る

Page 29: win-rate first search

エキシビション21手目

先手、らいおんの後ろにぞうを打つという珍しい手

Page 30: win-rate first search

エキシビション22手目

後手、ぞうを引くどうぶつしょうぎは引く手はあまり悪手にならない

Page 31: win-rate first search

エキシビション23手目

先手、ぞうを上がるここで、先手の評価値が少し上がる

Page 32: win-rate first search

エキシビション24手目

後手、きりんとぞうの交換をせまる

Page 33: win-rate first search

エキシビション25手目

先手、交換に応じてぞうで取る

Page 34: win-rate first search

エキシビション26手目

後手、ひよこでぞうを取るここでぞうで取っていたらきりん打ちから後手のらいおんが詰んでいた

Page 35: win-rate first search

エキシビション27手目

先手、らいおんを逃げる

Page 36: win-rate first search

エキシビション28手目

後手、ぞう打ち

Page 37: win-rate first search

エキシビション29手目

先手、きりん打ちどうやらこれで勝負ありのようである

Page 38: win-rate first search

エキシビション30手目

後手、一応ぞうできりんを取る

Page 39: win-rate first search

エキシビション31手目

先手、らいおんでひよこを取る後手、投了投了図以下、入玉を阻むために後手が自玉の横にきりんを打つ・先手のきりんがぞうを取って王手・らいおんがそのきりんを取る・ひよこが上がる・ひよこを取ると入玉されるので後手のらいおんは下がる・後手のらいおんの頭にひよこを打って詰み

Page 40: win-rate first search

min-max法

• 古くからある手法• 現在でも将棋では最も有力な手法• 木構造を使って説明する

Page 41: win-rate first search

min-max法 例:三手読むことにする

現在の局面

途中の局面

三手先の局面

Page 42: win-rate first search

min-max法

三手先の局面の評価値が

分かったとする

-4 -3 10 3 -9 5 23 -8

Page 43: win-rate first search

min-max法

二手先の評価値は

それぞれの最大値となる

-4 -3 10 3 -9 5 23 -8

-3 10 5 23

Page 44: win-rate first search

min-max法

一手先の評価値は

それぞれの最小値となる

-4 -3 10 3 -9 5 23 -8

-3 10

5

23

-3

5

Page 45: win-rate first search

min-max法

最大の評価値となる

手を選ぶ

-4 -3 10 3 -9 5 23 -8

-3 10

5

23

-3

5

5

Page 46: win-rate first search

min-max法

• 原理的にはこれでN手先に評価が最大になる手を指すことができる

• 終局まで読み切れば、理論的には必勝法を作ることができる

• 現実には全ての手を読んでいたら時間が足りなくなる

Page 47: win-rate first search

min-max法

• 計算量低減について様々な手法が考案されているが、ここではふれない

• 探索局面を減らすことによる計算量の低減を枝刈りという

• 全ての手を読んだのと全く等価の枝刈りもあれば、ほぼ等価の枝刈りもあれば、近似の強引な枝刈りもある

Page 48: win-rate first search

min-max法のまとめ

• 木構造を使って読む• 途中(N手先)の局面評価が必要

• 枝刈りが必要

Page 49: win-rate first search

モンテカルロ法

• 数学的にはいろいろと歴史があるようだが思考ゲームの世界ではコンピュータ囲碁で成功した手法

• コンピュータ囲碁はこの手法で爆発的に強くなった(正確には「モンテカルロ木探索」で強くなった)

• 将棋にはまだ適していないといわれる

Page 50: win-rate first search

モンテカルロ法概略1

• 全くランダムに手を進める

• そうすると終局する→勝敗が分かる

• ランダムに手を進めて終局させることを「プレイアウト」という

最初の手

終局結果

プレイアウト

ランダムな着手

Page 51: win-rate first search

モンテカルロ法概略2

• プレイアウトを何度も繰り返す

• 最初の手に対する勝率が分かる

• (勝数)/(プレイアウト数)

• 勝率のよい手を最終的に選ぶ

Page 52: win-rate first search

モンテカルロ法概略3

• 簡単すぎるかもしれないが、概略はこれだけ

• これに木探索を混ぜて「モンテカルロ木探索」をしたら強くなった(が、その説明はしない)

• また、プレイアウトを単純乱数ではなく、囲碁の知識にそったものにするという改良も加えられる

Page 53: win-rate first search

知識ありプレイアウトの例

• 例えば、周囲3×3を見る

• 上の図の中央に黒石を打つ割合を低くする

• 下の図の中央に黒石を打つ割合を高くする

Page 54: win-rate first search

将棋でモンテカルロ

• ここまでは囲碁の例• 将棋に単純なモンテカルロ法を適用しよう

とするとまともに動かない(明らかな悪手ばかりを指す)

• 原因として、将棋の合法手はほとんどが悪手だからではないかと考えられる

• かといって、最初から知識を植えつけておくのは(私としては)気持ち悪い

Page 55: win-rate first search

将棋でモンテカルロ導入動機

• 投了図から次の一手を計算することができるのが最大の美点(投了図から逆算すべし!)

• 評価関数が要らない(単純モンテカルロなら、事前知識も要らない)

• プレイアウト数が増えるほど精度が増すので、マシンパワーを高めれば勝手に強くなる(ように工夫すべし)

Page 56: win-rate first search

木構造からモンテを考察1

全くランダムだと

赤も緑も勝率は同じ

本当は緑が勝ちで赤が負け木構造を見ることの重要さが分かる

Page 57: win-rate first search

木構造からモンテを考察2

三手先の勝率が理想的に

分かったとする

0.1 0.3 0.7 0.8 0.2 0.6 0.9 0.4

この値から赤と緑の勝率を計算したいしかも、プレイアウトで

Page 58: win-rate first search

木構造からモンテを考察3

理想的には m

in-max

同じ値となる

0.1 0.3 0.7 0.8 0.2 0.6 0.9 0.4

0.3 0.8 0.6 0.9

0.3 0.6

Page 59: win-rate first search

木構造からモンテを考察4

• Q:下のノードの0.2と0.6から上のノードの0.6をプレイアウトで計算するにはどうするか?

• A:0.2を無視する

0.2 0.6

0.6

Page 60: win-rate first search

木構造からモンテを考察5

• Q:0.2を無視するには?

• A1:常に勝率が最大のノードを探索していればいい(事前知識ありの極端な例のような感じ)

• A2:ただし、たまにランダムに勝率が最大でないノードも探索する

0.2 0.6

0.6

Page 61: win-rate first search

木構造からモンテを考察6

勝率の高い方を

常に選択して探索

0.1 0.3 0.7 0.8 0.2 0.6 0.9 0.4

ひとりでにこの道筋が見つかる

Page 62: win-rate first search

勝率優先探索

• 探索したことのある局面について勝率を保持しておく

• ほぼ常に勝率が最大(または最小)のノードを選んでたどる

• たまにランダムにノードをたどる(理想的にはこれは必要ないが)

• 最善の次の一手が見つかる

Page 63: win-rate first search

勝率優先探索の補足

• 保持されている勝率はプレイアウトごとに随時更新する

• 勝率として分母と分子を保持しておく• 勝ったら分母分子両方に定数を足す• 負けたら分母のみに定数を足す

Page 64: win-rate first search

勝率優先探索の問題点

• 未探索ノードの勝率の設定(以下、これについて語る)

• その他いろいろ(これは語らない)

Page 65: win-rate first search

未探索ノード

• まだ勝率のついていないノードが存在する

• 勝率の初期値は1/1=1としていたが、これでは収束が遅くなる

• 未探索ノードにも勝率がほしい

0.4 0.6 0.3未探索

Page 66: win-rate first search

別の勝率テーブル

• ここまで将棋ならではの知識はまったく出てこなかったが、ようやく将棋の知識を使う

• ノードではなく、「指し手の種類」に対して勝率を出す

• 例えば、「取る手」「成る手」など

Page 67: win-rate first search

今回使用した勝率テーブル1

• 次の項目について勝率を出した–移動元と移動先の駒の位置– 動かす駒の種類と取る駒の種類–移動元と移動先の利き

• これらについて(線形結合ではなく)全ての場合のテーブルを用意した

• このテーブルは最初から値を用意しておくのではなく、プレイアウトによってゼロから学習する

Page 68: win-rate first search

今回使用した勝率テーブル2

• もう一つ勝率テーブルを用意した– 動かす駒の種類と取る駒の種類–移動元と移動先の利き

• このテーブルは小さいので、学習が速い• 「テーブル1」に勝率がついていないときに

使用• どのテーブルにも勝率がついていない場合

は、勝率=1とした

Page 69: win-rate first search

手法のまとめ

• 探索したノード全てに対して勝率を保持しておく(この勝率はプレイアウトによって学習する)

• プレイアウト中は最も高い勝率のノードを選ぶ(勝率優先探索)

• たまに勝率に関わらずランダムにノードを選ぶ

• 未探索ノードの勝率は、指し手に対する勝率に従う(これもプレイアウトで学習する)

Page 70: win-rate first search

シミュレーション条件

• 原始的なmin-max法と対戦させた(評価関数は駒割のみ)

• 千日手の判定はせず、80手を越えたら引き分けとした

Page 71: win-rate first search

シミュレーション結果1

プレイアウト数 10000 30000 100000

提案手法が先手 22-76 44-52 48-49

提案手法が後手 16-81 30-68 61-35

100局対戦したときの提案手法から見た勝敗100に満たない分は、引き分けMin-maxは6手読みプレイアウト数を増やすと強くなる

Page 72: win-rate first search

シミュレーション結果2

100局対戦したときの提案手法から見た勝敗100に満たない分は、引き分け提案手法のプレイアウト数は100000回min-max6手読みといい勝負

min-maxの読み 4手 5手 6手 7手 8手 9手

提案手法が先手 94-6 77-20 48-49 37-61 24-73 14-85

提案手法が後手 78-21 78-20 61-35 38-57 40-52 20-74

Page 73: win-rate first search

対局を見た感想

• しばしば明らかな悪手を指す(min-max6手読みあたりから、悪手が挽回できなくなる)

• 詰みや必至がある場合にはちゃんと見つけてくれる

• 一本道の読みは得意• プレイアウト数によって明らかに強さに差が

出る

Page 74: win-rate first search

まとめ

• まとめ– 勝率優先でプレイアウト–事前知識ほとんどなしで指し手を決定–終局結果から指し手を決定

• 今後–誰か本将棋や5五将棋で試してください–誰か囲碁で試してください–私はほかのことをする