完全ランダムプレイヤーによる終局までのシミュレーション

開始局面から1万局のシミュレーションにおいて、500手以内に5789局、1000手以内に8075局が終局していました。



上図はランダムプレイヤーの終局までの手数のヒストグラムです。1万局。グラフの下部にある数値は手数を10で割った数。


例えば、このグラフのピークとして、28の付近に218という値がありますが、これは270手〜279手で終局したものが218局あって、これがピークだという意味です。わかりにくくてすみません。


この一定手数で決着がつかなかったものをここでは「引き分け」と呼ぶことにします。

引き分けからはあまり情報が得られないと思うので、play outの精度を高めるためには引き分けはなるべくなら0に近いほうが良いはずです。

仮に、引き分け時の情報的な価値が0だとしたら、頑張って調べて、引き分けですと、その分の計算機的なコストがまるっきり無駄になります。

いま、N手までで終局するかどうかを調べるとして、N手までに引き分けにならず終局する確率がP(N)だとします。引き分けになってしまう確率は 1 - P(N)です。

play outまでをM回試行するなら、うち、 M * { 1 - P(N) } 回は引き分けです。

また、指し手を生成し、そのなかからランダムに1手選び、進めるためのコストは 一定のコスト a だとします。

すると、このシミュレーションでは、 a * M * { 1 - P(N) } のコストをドブに捨てたことになります。... これを(1)とします。

そして得られた結果は M * P(N) 回の 勝ち/負け の情報です。 ... これを(2)とします。

これに要したコストは、a * Σ (N手までに終局したシミュレーションの終局までの手数) となります。 ... これを(3)とします。

少ない労力で最大の勝ち/負けの結果が欲しいので、
(4) = { (1) + (3) } / (2)
が最小になるようなNを選ぶのが最も効率が良いはずです。

私の1万局シミュレーションでは N = 692が最善だとわかりました。


つまり、平手局面からランダムプレイヤーでシミュレーションする場合は N = 692がベストでした。Nを100ぐらい増やしてもあまり効率ダウンにはならないようなので、対局開始局面から進行したからと言ってこの値を減らすような調整はする必要はないと思います。また、N = 500 ぐらいでも(4)の値はそれほど変わらず、パフォーマンスダウンにはなっていないことがわかります。


また、ランダムプレイヤーより賢いプレイヤーならばもう少し早く終局させることが出来るはずです。(例えば終端局面で1手詰めがあれば必ず詰ませるようなランダムプレイヤーなど)


ゆえに、モンテカルロ法型の探索においては、UCB1-tunedなどであろうと、N = 700以上に設定するのはあまり賢明ではなく、おそらくN = 500ぐらいの値が最適値ではないかと思います。