だんだん分かってきた
ARPS*1の遷移確率の学習が上手く行ってなかったんですが、原因らしきものが分かってきました。
まず、前提として下記の様なアルゴリズムを考えました。
- 本将棋・5五将棋で使用する。
- ARPSベースの実現確率探索。
- 遷移確率は自己対戦の棋譜・最善手(ルートノードでの手)から学習する。
- 遷移確率はカテゴリ別に計算するのではなく、線形の遷移確率関数を用いて、着手の特徴・過去の指し手の履歴を元に計算する。
遷移確率関数の学習ですが、最善手は遷移確率1・それ以外は0を目標値としてロジスティック回帰で学習します。
で、とりあえず5五将棋で学習させてみたんですが、最善手もそれ以外も遷移確率が非常に小さい値になってしまいました。
色々原因を調べると、目標値が偏っている(合法手のほとんどは目標値が0になる)のが悪影響を与えていたみたいです。
試しに全合法手を対象に学習した場合と、最善手+ランダムに選んだ3手を対象に学習した場合の、最善手の遷移確率の変化をグラフにしてみました。(学習は、自己対戦で生成した単一の棋譜を対象とします。)
「P/N比」はPositive(最善手)とNegative(それ以外)の手の数の比です。
P/N比0.025が全合法手対象の場合ですが、学習初期に大きく遷移確率が下がっているのが分かるかと思います。
要するに「とりあえず小さな遷移確率を出力しとけば誤差が減るだろう」って感じの学習をしちゃってるみたいです。
つー訳で、P/N比を上げて学習させる必要があるんですが、それに関しては数日中に試して結果を書いてみます。