マイロ将棋(33)同一展開の回避(ダーツ法)

同一展開の回避方法がよくないのではないかと思い始めています。これまで取っていた方法は自称73法というものです。候補手の中で最も予測勝率が高い手を7割の確率で選択し、残りの3割を勝率が二番目に高い手とするという方法です。

この方法だと、一局面で取りうる手が2つに絞られてしまいます。このことで戦局に偏りが生じてしまって正しく勝率を算出できないことを疑っています。

 

そこで考えた新しい選択方法が自称ダーツ法です。この方法では全ての候補手を対象にして、予測勝率が高いものほど高い割合で選択します。単純に予測勝率の割合で選択すると、負けに直結するような、ひどい悪手もそれなりの確率で選択されてしまいます。ひどい悪手を極力選択しないようにするため、予測勝率を4乗した値を用いて選択しています。本当は一定以下の予測勝率の手を除外するということもしたいのですが、処理時間がさらに伸びてしまいそうで、今は入れていません。

 

 

マイロ将棋(32)戦局の確認

教師データを改善しているはずなのに、対マイロ将棋1.0の勝率が上がらない原因、50万局面より多くの学習データを学習させると勝率が下がってしまう原因を考えています。戦いの様子を確認すると、マイロ将棋1.0に対して無謀な王手を繰り返して駒を取られ、自滅するというパターンが多いように見えます。この傾向を何とかして数値に表すことを試みます。

改善前(40)と改善後(50)の教師データで学習したモデルでそれぞれマイロ将棋1.0と対局し、以下の指標値を測定してみました。

 

指標値

内容

勝率

マイロ将棋1.0に対してどれだけ勝てたか。これまで取得していた値と同じ。

平均持ち駒率

全40駒の内、自分が保持していた駒数の割合。全手番の平均。

回避率

相手から王手をされた次の手で負けなかった割合

王手勝利率

王手をした直後に勝てた割合

被王手率

相手の手番の時に相手が王手をした割合

王手率

自分の手番の時に王手をした割合

 



 

あまり見やすいグラフにできませんでした。今のところ、有力な手掛かりは見つかっていないですが、いくつか読み取れたこともあります。平均持ち駒率と勝率の関係ですが、平均持ち駒率は60万局面以降特に低下して行っています。対局中の自分の駒が少ないほど勝率が低いというのは納得のいく結果です。

王手率(グラフで緑色の線)も納得のいく結果です。無駄な王手を繰り返すような対局内容では王手率が高めになると考えました。教師データ改善により、王手すれば勝つという学習データが少なくなり、改善後の教師データで学習したモデルは改善前より王手率が低くなるはずです。わずかですが、改善前より改善後の方が王手率は低くなっていて、これは意図した通りの結果でした。その割には勝率が改善しないのですが。

回避率(グラフで灰色の線)は少し意外な結果でした。マイロ将棋1.0はほぼでたらめに打っているだけなので、王手されても、容易に対処可能なものがほとんどです。それに対処できずに負けてしまうというのは、ほぼ王手されたことに気づいていないということになります。王手に気づけるようにするというのは、自分にとって大きなテーマで結論が出ていないのですが、王手に気づける割合は学習とともに増えていくという認識でした。ところが、改善前データで学習した結果では80万局面以降、回避率が下がってしまっているように見えます。もう少し確認を続けます。

 




 

マイロ将棋(31)教師データ改善結果の確認

前回、最善手のみ指す方法で、マイロ将棋1.0に対して平均勝率5割に迫る結果があったことから、この調子で教師データを更新していけばどんどん強くなっていくはずという思いが湧いてきていました。ですが、期待は裏切られました。

勝率データの内訳を以下とする改善後(60)というデータを作成して、学習した後、マイロ将棋1.0と対局するということをやっています。

 

教師データとする勝率の内訳

 

改善後(60)のマイロ将棋1.0との対局結果は以下です。途中までしかデータができていませんが、改善後(50)よりも悪いだけでなく、改善前(40)よりも悪くなってしまっています。

 

対マイロ将棋1.0勝率

 

教師データの改善結果そのものにも疑問が出てくるような結果になってしまいました。もう少し教師データ作成は続けようと思いますが、もっと基本に立ち返った方が良い気がします。なぜ勝率データの学習をするとマイロ将棋1.0にわずかながらも勝てるようになるのか、ということを確認したいです。

 

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

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

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

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

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

 

マイロ将棋(29)教師データ作成に用いたモデルとの対局結果

改善後の教師データの効果が中々見えず、何とかして確認できないものかと考えていたところ、よさそうな案を思いつきました。これまで効果を確認するのにマイロ将棋1.0というマイロ将棋界では強めの相手と対局させていたのですが、教師データ作成に用いたモデルと対局させればよいかな、と。改善後の教師データ作成に用いたモデルは、確か改善前の教師データを1500万局面分くらい学習させたものです。このモデルを使って勝率を学習したのだから、その学習結果はこのモデルに対して強みを発揮できるはずです。

その結果が以下のようになりました。

教師データ作成に用いたモデルに対する勝率

学習経過の全てで、改善前の勝率を上回ったわけではないですが、概ね改善後の結果の方がよい勝率になっています。上のグラフだと横軸が2の20万局面分学習した結果が改善前より悪くなっていますが、他は同じくらいか少しよい結果です。

 

マイロ将棋(28)教師データの改善結果を確認中

改善後の教師データを作り続け、ようやく100万局面分の教師データができました。前回50万局面分のデータで確認したときは、若干ですが改善前よりも勝率が悪いという理解しがたい結果でした。もっと教師データを作れば、勝率が上がるかもしれないという期待もあったのですが、100万局面分の教師データで確認した結果でも、あまり変わっていません。強いて言えば、80万以降の学習結果では改善後の勝率が改善前を上回っていますが、単なる誤差のような気もします。参考値として以前作成した、王手局面を除外した教師データでも勝率を確認しました。以下グラフのオレンジ色の点線ですが、こちらは60万教師データ以降、改善前データ、改善後データと比べて大きく勝率を上げています。このことから、王手局面での勝率データは50万局面以降の学習で大きな意味を持つように思います。

 

対マイロ将棋1.0勝率

ここから先どう進めるかが難しくなってきました。以下のような選択肢があるかなあと思っています。

  • 100万局面以降の改善後教師データを作り続ける
  • 改善後の割合をさらに増やした教師データを作成する
  • 王手局面のみ改善後のデータとして差し替えた教師データを作成する。
  • 現在の改善後データの内容、学習結果に問題がないか確認する。

もう少し考えてこの内のどれかをやろうと思います。

マイロ将棋(27)教師データの改善結果を確認中

苦戦しています。現在も改善後の教師データを作成し続けていて、50万局面分の改善後教師データが溜まりました。これを使って学習をして、強くなったかの確認をしているのですが、結果が芳しくないです。これまで教師データの作成に使っていたマイロ将棋0.1と比べると大分ましな手を打つはずのモデルを使っているので、それによって作った教師データで学習をすれば当然これまでよりも強くなると思っていました。

ところが、改善後の教師データで学習したモデルでマイロ将棋1.0と対局させると、勝率が改善前より低くなってしまうのです。一体どういうことなのか、データ量が少なくてまだ結論は出せませんが、二つのパターンがあると思っています。一つは、このまま教師データ作成を続けても、改善前データで学習したモデルより良くならないというパターン。もしそうだとすると、データの作成方法の問題とか、そもそも作成の仕方が間違っているとかの可能性を考えることになりそうです。もう一つは、このまま教師データ作成を続けることで、徐々に改善前よりも強くなっていくというパターン。今の結果を見る限りではあまりその兆候は感じられませんが、もしかしたら、改善後のデータは学習するのにこれまでよりも時間が掛かるのかもしれません。そうだとすると始めの内は改善前より弱いですが、学習を進めるにつれて少しずつ強くなり、いずれは改善前を追い越すでしょう。こっちのパターンだといいなと思いながら教師データ作成を続けています。

対マイロ将棋1.0勝率