駒割の学習
作ったルーチンで、テストで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
を新たな勾配値とする。本当にうまく考えられている。
ボナンザメソッドとは、将棋プログラマがボナンザソースを
必死に読んで学習することとも言える。