2006/02/17 興味がわいて作成
囲碁の場合
1.モンテカルロ法とは?
2.モンテカルロ法を囲碁に適用すると?
3.5路盤での結果
4.9路盤と19路盤の結果
5.終局までの平均手数と平均目数、最大の手の目数
6.実際の囲碁プログラムでのモンテカルロ法
7.少し強く?したモンテカルロ法
8.実際にモンテカルロ法で対局させてみると?
2005年9月のコンピュータオリンピックの囲碁の9路盤部門でモンテカルロ法を採用したフランスの囲碁プログラムが 好成績を収めました。(3位と5位、9チーム中) こんなお手軽でインチキくさい?方法がどこまで効果があるものか自分でも少し調べてみました。この円の面積は πr2 = π*0.5*0.5 = π*0.25、正方形の面積は 1 、なので、1.モンテカルロ法とは?
モンテカルロ法、で真っ先に思い浮かべるのは、正方形の中に乱数で点を打っていって、 円の範囲内に収まる点の個数から円周率、πを求める手法ではないでしょうか? 1 x 1 の正方形の内部に半径0.5の円を書きます。 この中に乱数で点を打って生きます。
になります。 最初 100個 1000個 10000個πの値 3.28 3.208 3.154内部の点 82個 802個 7886個
2.モンテカルロ法を囲碁に適用すると?
囲碁に適用すると、 1. 全ての着手可能な場所に乱数で石を置く。 2. 1.を白黒交互に繰り返す。打つ場所がなくなってパスが2回続けば終局。 3. 点数を計算する。 4. 1. - 3. を何度も繰り返して点数の平均値を求める。 となります。 ここで注意しないといけないのは本当に完全に乱数で打っていくと、終局しない、という点です。 例えば下の図で、次に白がB4に打ってしまうと、黒はA5に打って、全部の石が 取られてしまいます。これを繰り返すため、無限に続きます。 ABCDE ABCDE ABCDE 1○○○●┐ 1○○○●┐ 1┌┬┬●┐ 2○●●┼● 2○●●┼● 2├●●┼● 3○○●●┤ 3○○●●┤ 3├┼●●┤ 4○+○●● 4○☆○●● 4├┼┼●● 5└○○●┘ 5└○○●┘ 5★┴┴●┘ B4に打つと・・・ 全部取られてしまう! そのため、「眼」には打たない、というルールを付け加えないといけません。 「眼」の定義は「4方向が全て自分の石か壁で、なおかつ自分の石のダメは2以上」 という風にしています。 もう一つ、ルールは中国ルールを採用しています。 これは終局図の点数計算が楽なためです。 中国ルールは簡単に言うと「盤上に残った自分の石と陣地の合計」を数える方法です。 日本ルールは「アゲハマ(取った石)と自分の陣地の合計」です。 最大の違いは「自分の陣地に石を置いても損にならない」という点でしょうか。 そのため、相手の死石を全部打ち上げても損になりません。 またアゲハマ(取った石)は無視できます。 ABCDE 1○○○●┐ アゲハマを無視すると、日本ルールでは黒地4目、白地2目なので黒2目勝ち。 2○●●┼● 3○○●●┤ 中国ルールでは黒地4目+黒石9個、白地2目+白石10個なので黒1目勝ち。 4○+○●● 5└○○●┘ このため、終局図で残っている石は全部活きた石(死石は全部取られている)と 考えることができます。3.5路盤での結果
下は5路盤でそれぞれの場所打った後に、100万局、乱数対戦を行った場合の 点数の平均値です。 例えば、5路盤の天元、C3に打った場合は、黒が平均+7.57目勝てる、という意味です。 逆に、隅のA1に打った場合は黒は-3.20目負ける(白が3.20目勝つ)になります。 5路盤の位置の平均点数(100万局の乱数対戦) A B C D E 1 -3.20 1.27 1.09 1.26 -3.21 2 1.26 4.89 6.07 4.97 1.27 3 1.02 6.14 7.57 6.09 1.05 4 1.26 4.95 6.09 4.93 1.29 5 -3.24 1.28 1.03 1.32 -3.24 なんだか意味ありげな数値が出ているようにも思えます。 実は5路盤は完全に解かれていて、解析された結果があります。 原論文は作者のページからダウンロードできます。 Solving Go on Small Boards. E.C.D. van der Werf, H.J. van den Herik, J.W.H.M. Uiterwijk (2003). ICGA Journal Vol.26, No. 2, pp.92-107. [ ps.gz ] http://erikvanderwerf.tengen.nl/5x5/5x5solved.html 完全解析の結果は、天元に黒が打って白全滅の黒25目勝ちです。 地の計算は中国ルールで数えてるので日本ルールなら黒24目勝ちが25目勝ち になっています。その他の初手は下の通りです。 黒25目勝ち 黒3目勝ち 白1目勝ち ABCDE ABCDE ABCDE 1┌┬┬┬┐ 1┌┬┬┬┐ 1┌┬┬┬┐ 2├┼┼┼┤ 2├┼┼┼┤ 2├┼┼┼┤ 3├┼●┼┤ 3├┼┼┼┤ 3├┼┼┼┤ 4├┼┼┼┤ 4├┼●┼┤ 4├●┼┼┤ 5└┴┴┴┘ 5└┴┴┴┘ 5└┴┴┴┘ 上3つ以外の初手は白25目勝ちです。 これを碁盤上に書くと、 -25 -25 -25 -25 -25 -25 -1 +3 -1 -25 -25 +3 +25 +3 -25 -25 -1 +3 -1 -25 -25 -25 -25 -25 -25 となります。 これをさっきのモンテカルロの結果と並べてみます。 100万回乱数で打った場合の平均 正しい答え A B C D E A B C D E 1 -3.20 1.27 1.09 1.26 -3.21 -25 -25 -25 -25 -25 2 1.26 4.89 6.07 4.97 1.27 -25 -1 +3 -1 -25 3 1.02 6.14 7.57 6.09 1.05 -25 +3 +25 +3 -25 4 1.26 4.95 6.09 4.93 1.29 -25 -1 +3 -1 -25 5 -3.24 1.28 1.03 1.32 -3.24 -25 -25 -25 -25 -25 どうでしょう? 個人的には5路盤という小さな盤ですら真の値とはかけ離れた結果が出ているように 思えます。特に実際は全滅するはずのB1、C1などの位置がモンテカルロでは+1.27、+1.09 と+で出ている点です。4.9路盤と19路盤の結果
同じように9路盤と19路盤で実行した結果です。 9路盤の各位置の平均点数(それぞれに100万局の乱数対戦) A B C D E F G H J 1 -2.70 0.36 0.31 0.69 0.77 0.69 0.30 0.31 -2.69 2 0.31 2.22 3.31 3.57 3.61 3.58 3.28 2.24 0.28 3 0.34 3.32 4.06 4.01 4.03 4.10 4.01 3.30 0.30 4 0.69 3.55 4.11 4.05 4.09 4.08 4.08 3.66 0.68 5 0.79 3.62 4.11 4.08 4.01 4.07 4.12 3.65 0.79 6 0.75 3.51 4.12 4.06 4.09 4.07 4.03 3.55 0.73 7 0.30 3.31 4.03 4.10 4.02 4.04 3.93 3.30 0.30 8 0.34 2.21 3.29 3.50 3.63 3.64 3.21 2.16 0.35 9 -2.72 0.33 0.28 0.70 0.76 0.65 0.33 0.37 -2.70 計算時間 10時間46分(Opteron248) 19路盤の各位置の平均点数(それぞれに10万局の乱数対戦) A B C D E F G H J K L M N O P Q R S T 1 -1.93 0.15 -0.33 0.53 0.35 0.10 0.66 0.12 0.14 0.56 0.20 0.23 0.03 0.42 0.59 0.35 -0.11 0.15 -1.98 2 -0.15 1.24 2.18 2.34 2.03 2.04 2.22 2.19 2.34 2.28 2.52 1.83 2.08 1.91 2.04 2.23 1.73 1.27 0.02 3 0.12 1.84 2.74 2.45 2.34 1.96 2.82 2.60 2.47 2.40 2.51 2.46 2.40 2.29 2.52 2.23 2.38 1.94 0.12 4 0.32 2.02 1.82 2.35 2.14 2.38 2.40 2.55 2.25 2.26 2.13 2.01 2.44 2.40 2.55 2.33 2.46 2.37 0.47 5 0.07 1.98 2.19 2.22 2.06 2.16 2.25 2.44 2.47 2.03 2.48 2.42 1.98 2.22 2.27 2.38 2.25 2.03 0.29 6 0.47 1.96 2.43 2.52 2.16 2.35 2.20 2.40 2.38 2.03 2.33 2.51 2.56 2.68 1.97 2.20 2.32 1.82 0.30 7 0.39 2.32 2.66 2.62 2.26 2.45 2.73 2.42 2.16 2.55 2.53 2.50 2.59 2.57 1.91 2.66 2.48 2.44 0.61 8 0.27 1.87 2.46 2.41 2.54 2.40 2.17 2.16 2.36 2.67 2.08 2.54 2.23 3.00 1.74 2.39 2.67 2.46 0.37 9 0.31 2.00 2.37 2.46 2.35 2.41 2.22 2.44 1.96 2.67 2.08 2.23 2.10 2.09 2.12 2.56 2.57 2.07 0.30 10 0.17 2.24 2.49 2.54 2.43 2.75 2.35 2.43 2.32 2.58 2.61 2.26 2.50 2.64 2.24 2.52 2.24 2.50 -0.00 11 0.20 2.51 2.67 2.30 2.47 2.64 2.38 2.47 2.50 2.07 2.42 2.28 2.05 2.43 2.54 2.75 2.69 2.41 0.40 12 0.15 2.03 2.73 2.58 2.74 2.29 2.21 1.84 2.44 2.68 2.40 2.41 2.40 2.39 2.67 2.69 2.39 2.42 -0.01 13 0.04 2.18 2.48 2.40 2.30 2.31 2.58 2.43 2.12 2.64 2.22 2.69 2.75 2.27 2.34 2.46 1.95 2.16 0.36 14 0.59 2.10 2.47 2.35 2.63 2.52 2.33 2.44 2.45 2.42 2.55 2.00 2.33 2.16 2.57 2.66 2.49 2.14 0.21 15 0.38 1.78 2.27 1.98 2.17 2.29 2.22 2.26 2.12 2.27 2.25 2.41 2.33 2.35 2.31 2.56 2.88 1.99 0.13 16 0.40 2.49 2.59 2.57 2.16 2.40 2.53 2.50 2.37 2.38 2.17 2.38 2.43 2.54 2.27 2.19 2.85 2.10 0.16 17 0.27 2.02 2.57 2.53 2.66 2.58 2.33 2.73 2.84 2.23 2.50 2.49 2.56 2.50 2.48 2.67 2.75 2.41 -0.06 18 -0.04 1.45 2.11 2.31 1.90 2.20 2.27 2.25 2.47 2.26 2.20 2.19 2.54 2.00 2.15 2.17 1.91 1.30 0.14 19 -2.31 0.14 -0.22 -0.08 0.03 0.41 0.52 0.14 0.32 0.27 0.30 0.37 0.49 0.57 0.51 0.36 -0.05 0.14 -2.25 計算時間 61時間(Opteron248) 19路は時間がかかるのでかなり回数が少ないです。 9路盤ではほぼ結果は収束しているようなのですが、19路盤では10万局の平均では かなりばらばらな値になっていて安定してるとは言いがたい数値になってます。 19路盤ではモンテカルロ法はかなり使い物にならない感じです。19路は参考程度で。5.終局までの平均手数と平均目数、最大の手の目数
| 5路盤 | 9路盤 | 19路盤 | |
|---|---|---|---|
| 平均手数 | 41.9手 | 110手 | 443手 |
| 平均目数 | +2.12目 | +2.26目 | +1.89目 |
| 最大の手の目数(当座の最善手) | +7.54目 | +4.12目 | +3.00目 |
| 回数 | 1000万回 | 100万回 | 10万回 |
| モンテカルロ囲碁同士の対戦 | 彩(黒)とモンテカルロ囲碁(白)の対戦 |
|---|---|
リンクなど