駒割の学習

作ったルーチンで、テストで1000局面の学習を行ってみた。
歩を100に固定。以下は結果。

歩=100
香=156
桂=135
銀=176
金=253
角=283
飛=316
と=360
成香=269
成桂=260
成銀=231
馬=393
龍=459

「と」が大きいが気になるが、なんとなく、あっていそう。でも、やけに値のスケールが小さい。
一致率は11→60%なので、うまく学習はできてそうだが、過学習が発生している模様。

というわけ、ボナンザソースをもう一度読み直すと、
駒割の更新は総和が一定になるように更新をかけていた。
参考までにbona6の初期値と最終的な駒割は以下のようになっている。

初期値 最終
100 87
300 232
300 257
400 369
500 444
600 569
700 642
300 534
成香 400 489
成桂 400 510
成銀 500 495
800 827
1000 945
総和 6400 6400

やり方は、駒割の微分値をソートして、微分値の小さな順に

  • 2,-2,-1,-1,-1,0,0,0,1,1,1,2,2

を新たな勾配値とする。本当にうまく考えられている。

ボナンザメソッドとは、将棋プログラマがボナンザソースを
必死に読んで学習することとも言える。