カーネル法評価関数+TD(λ)での実験結果
テーブル形式評価関数での実験結果はこちら。 http://d.hatena.ne.jp/Gasyou/20111112/1321093400
一つひどいバグがあって、関数の引数で「先手から見た評価値」か「後手から見た評価値」のどちらを計算するか指定するんですが、その指定を無視して常に先手の値を計算していました。
んで、カーネル法に書き換えてそのバグを潰した結果ですが、かなり良くなりました。
まずは実験の条件。
んで、実験結果は下記の通り。
学習条件 | 結果 | 収束までの対局数 |
---|---|---|
先後とも学習 | ○(-8) | 約1,100局 |
先手のみ学習 | ○(+16) | 約1,200局 |
後手のみ学習 | ○(-14) | 約80局 |
前回は書き忘れていましたが、グリーディー方策に従って対局した結果(石の数の差)が、完全解析した結果(石の数の差)と一致し、それ以降変化しなくなった時点で収束したものと判断しています。
前回の結果とは違い、先手のみ学習でもちゃんとした結果に収束していますし、先後とも学習と後手のみ学習は(対局数ベースで見ると)収束速度が桁違いに速くなってます。
ただ、一つ問題があって、線形評価関数だと24時間あたりの対局数が数百万局なんですが、カーネル法評価関数にするとこれが8万局弱になり、桁違いに遅くなります。
という訳で、時間ベースで見ると収束速度は1桁位遅くなるんですが、その分評価関数の精度は上がってるはずなんで、とりあえずはこれで良しとしておきます。
さて、次はどうするかですね。本将棋でTD(λ)+カーネル法評価関数を実験するか、4x4リバーシで方策勾配法+カーネル法評価関数にするか。
どっちにしろ最終的には本将棋で方策勾配法+カーネル法評価関数にする予定なんで、途中経路が違うだけなんですが、ちょっと迷いますね。(両方やるのは時間的に厳しいので…)