進行度の計算に着手
将棋用評価関数の精度向上の為、進行度の計算に着手。
今の所、ざっとこんな感じ。ダメな部分があればその都度適当に対処する方針で。
- 進行度の値の範囲は0.0〜1.0。
- 初期局面なら0.0で投了局面で1.0になる様に学習する。
- 進行度に応じて、評価関数内で序盤と終盤のパラメータに重み付けする。
- 進行度計算は線形近似を用いる。
- 進行度は自己対戦の棋譜から学習(出来たらいいなぁ)。
- 先手進行度・後手進行度・全体進行度の3つの値を計算し、適当に使い分ける。
- 全体進行度=max(先手進行度,後手進行度)
- 進行度計算用の評価項目は下記の通り
- 自玉に近い自分と相手の駒の数(上位各10個)
- 相手の成り駒の数
- 相手の持ち駒の数
- 評価関数の評価項目と進行度の対応は下記の通り。
- 駒割:全体進行度
- 絶対位置評価:全体進行度
- 二駒の相対・絶対位置関係:全体進行度
- 駒の自由度:全体進行度
- 王将の移動可能範囲:王将側の進行度*1
- 王将周辺の利き:王将側の進行度
んで、将棋倶楽部24の棋譜から、とりあえずLIBSVM用に訓練データと学習データ作ってみました。棋譜数は共に100局*2です。
結果、上記3つの評価項目を実装すると、nu-SVR(-s 4オプション)で平均二乗誤差が0.01を切りました。
という訳で、自前の進行度学習ルーチンで同程度の精度を目指したいと思います。出来るかどうかは知らんけど。