マイロ将棋(30)同一展開の回避

将棋プログラムでほぼ避けて通れないのが、同一展開の回避方法検討です。プログラムで将棋を指す場合、乱数要素を入れない限り同じ局面では必ず同じ手を指すようになります。どんなに強い将棋プログラムでも毎回同じ手を指すようでは、必勝法を編み出されてしまいます。また、コンピュータ同士の対局では毎回同じ棋譜になってしまって、勝率を正しく算出することができません。そこで、同一展開を回避するために以下のような方法を取りました。指し手の内、自分の勝率が最も高い評価値となった手を最善手とする。2番目に勝率が高い評価値となった手を次善手とする。7割の確率で最善手を指し、3割の確率で次善手を指すというようにしました。7割というのは適当に決めた数字ですが、なるべくなら最善手を指した方強くなる、かといって最善手ばかり指していては同一展開になってしまうということを考慮し、7割くらいを最善手とすれば同一展開が避けられるのではないかというようにして決めました。

これまで、マイロ将棋1.0と対局するときもこの方法で指していました。ですがマイロ将棋1.0に限っては指し手の選定方法そのものに乱数要素が入っているので、対局相手が同一の手を指しても同一展開にはなりません。ということでマイロ将棋1.0と最善手のみ指す方法で対局した結果が以下です。最善手次善手ミックスとなっているものはこれまでの方法での結果で(4つ並んだ棒グラフの内左二つ)、最善手のみとなっているのが今回測定した結果です(4つ並んだ棒グラフの内右二つ)。

最善手のみ指す方法でマイロ将棋1.0と対局した結果

思った以上に勝率に差がでました。教師データ改善前と改善後の結果も差が確認しやすくなっています。最善手のみ指す方法で、50万局面学習したモデルでは平均勝率が5割に迫る結果になっています。さらに改善後教師データ作成を進めて対マイロ将棋1.0、平均勝率5割突破を目指します。