評価関数を自作してみる⑥
振り飛車定跡から評価関数を作るという試みだが、既に十分の強さを持った振り飛車専用評価関数を作った方がいるようだ。私が定跡作成やバイナリのコピペなどでくだらないミスをしまくりながら学習を回している間に先を行かれてしまった。まあ、いかんせん低スペ(2コア4スレッド)のノートパソコンなので、のんびりマイペースでやるしかない、と言い訳してみる。
上の振り飛車評価関数が具体的にどれくらいの強さなのか分からないが、技巧2と十分に渡り合っているらしい旨が述べられていたので、まあ相当な強さなのだろう。私の環境でこれくらい強くするにはどれくらいの時間と電気代がかかるのだろう…。
ともかく。
このまま普通に学習させるだけだと、上記の評価関数のただの劣化版と化しそうだ。スペックが違うので、同じ量の学習でもあちらのほうが圧倒的に早く終わるからだ。そこで、何か相違点を見いだして独自色を出してみたい。違いと言えば学習に用いる定跡があげられる。あちらは手入力した定跡を用いているそうだが、こちらは既存の棋譜集を用いて定跡を生成している。この点で違いが生まれるのかもしれないが、もう一押しオリジナリティーがほしいところだが…。
さて、epoch0から振り飛車定跡で2回目まで学習してみた。自己対戦成績は以下の通り。条件は全て1スレッド0.1秒。
epoch0 8-0-92 eval1
eval1 50-0-150 eval2
epoch0 10-0-90 eval2
となった。順調に強くなっている。
さらに、eval1と、振り飛車定跡の読み込みに失敗した状態で2回学習したeval1(旧)も対戦させてみた。
eval1 140-6-154 eval1(旧)
若干負け越しているが、まだ有意差は付いていないので、一応互角ということになるのだろうか。定跡の有無、種類が及ぼす影響を調べてみたかったが、これではよく分からない。体感的に、振り飛車定跡を使った方は若干右美濃囲いが増えたような気がするようなしないような。
もうすこし続けてみる、かもしれない。