マイロ将棋(3)マイロ将棋0.1

学習用の勝率データを作成するために、簡易的な思考ルーチンで指す将棋プログラムを使っています。この思考ルーチンでは、取れる駒があれば取る、無ければ指せる手の中からランダムで手を選択します。自分の手番で相手の王を取れる時は必ず王を取りその手番の勝ちとします。この思考ルーチンをマイロ将棋バージョン0.1と呼びます。

 

学習データは以下のようにして作成します。まずマイロ将棋0.1同士で対局をさせて、一定のタイミング毎に局面を切り出して保存する。10万局面分溜まるまで局面情報を保存します。保存した各局面について、その局面からマイロ将棋0.1同士で対局するというのを40回繰り返します。40回にしたのはある程度誤差に左右されないような勝率を求めたいというのと、あまり一局面に多数回の対局をすると処理に時間が掛かり、多くの勝率データを作れなくなってしまうという思いから決めています。40回分対局して、その局面から対局を続けた時にどのくらい勝つ見込みがあるかを勝率データとして保存します。10万局面分の勝率データを求め終えたら、また別の局面を生成して勝率データを作成するということを繰り返しています。

 

このマイロ将棋0.1は、でたらめに動かしているのに近い指し方なので、精度はよくありません。ですが、この方法のメリットは処理が高速に行えるということです。PythonでNumbaという処理を高速に実行するためのライブラリを用いることで、24時間で10万局面分くらいのデータを作成できています。これまでに作り溜めた勝率データは3000万局面分を超えました。機械学習を行うにはデータが大量に必要です。大量にデータがないことには十分な学習が行えないので、今は精度には目を瞑り、この方法で作成しています。