評価関数の特徴量をkkp_kpptに変更し、駒割のみのゼロベクトルから自己対局による強化学習を行っています。学習用局面をsfenなどで出力することなく、ある程度の対局数を貯めてミニバッチとして更新しています。教師探索深さは3であり、ミニバッチサイズは100としました。
このようにするメリットは自己対局によって強くなっていることを確認しながら学習を進められることであり、以下が勝率のグラフとなります。
指数移動平均を取っている勝率が52.88%を超えたら対局相手とするパラメータをアップデートしています。並列化の関係でアップデートした直後にも高い勝率が発生してしまうため、アップデートが起きたら平均を取る初期値を30%から再スタートしています。つまり上のグラフで溝の個数がパラメータのアップデート回数であり、今回は
学習時間 | 対局数 | 更新回数 |
---|---|---|
7時間51分 | 21600局 | 11回 |
という結果になりました。まだバグがあるようで、ここでエラーが発生しプログラムが止まってしまいました……。
52.88%はEloレートでいうと+20であり、これが11回ということで理想的には+220、勝率では78.01%となってほしいところです。これを1手1秒,全100局による自己対局により検証してみると、
勝ち | 引き分け | 負け |
---|---|---|
82 | 13 | 5 |
となりました。引き分けは0.5勝0.5敗とすると勝率は88.5%、Eloレートでいうと354.5の差ということになります。多少高めに出てしまいましたが、もとが駒割りのみということで、そういうこともあるのかもしれません。
問題はこの先ちゃんと強くなるかどうかで、手元ではあまりうまくいっていません。やはり棋譜を出力していく形式でないと難しいのでしょうか。まだ教師あり学習を施した2駒関係のプログラムには勝ち越せないので、しばらくはそれを超えることを目標にやっていきたいと思います。