UCTにMinMax
一気にUCTまで実装したら、時間さえかければGnuGoにも勝てるようになりました…
(9路、16k playoutでGnuGo レベル10に7勝3敗)
(初手15秒とか総消費時間で6分とかかかるけど)
(でも何回か同じ展開が再現したり、怪しいところはある)
UCTすげえ。てか原始モンテカルロ恥ずかしい
で、強く速くするのは後回しにして、中国ルール的な終局とか日本ルール的な終局とかを実現するべく試行錯誤をしています。
・UCB1とかに使う評価値には、勝率にほんのちょっとだけ目数差を混ぜる(仮に1/1024)
・ルート候補手にはパス手を含ませる、でUCTがパス手ばっかりを探索しないようにUCT部分のコードに小細工
・どんな手を打っても100%負けるとか100%勝つとかなら確かに決着がついてるけど、「手入れが必要になるダメ詰め」とかplayoutで100%正しく対応できるものじゃない
・ほぼ決着がついてるとかほぼ絶望的な状況において、相手の次の一手で簡単に否定されてしまうような手を打ちたくない
・なのでUCTの結果の探索木から最終的に手を選択するときに、各ルート候補手の平均評価値じゃなくMinMax(深さ固定)を使ったらどうか
・と思ってやってみたが、思うように効果が上がらない
・平常時に対してMinMaxは良い効果を与えない(勝率評価から遠ざかる方向だし)とは予想してたけど、深さ1でも明らかに手が悪くなった。というか「読めてない」雰囲気。やっぱりどこかおかしいのかも