学習(2)

前回の学習の続き。5回目のiteration。
Moves Countedは減り続けている。Move Predictionは少し向上している。

iteration #5
   Number of Games : 42756
   Total Moves     : 329406267
   Moves Counted   : 71243096
   Illegal Moves   : 6
   Nodes Searched  : 14483850750
   Max pos_buf     : 10ecb
   Move Prediction : 36.5% 53.8% 64.2% 71.2% 76.4% 80.3% 83.3% 85.7%
   Target          : 0.053406 (0.009128)
   Futility        : misc=312 drop=316 cap=526 mt=1345 misc(k)=611 cap(k)=585
  Parse 2
   Moves Counted   : 71243096
   Objective Func. : 0.071143 0.053315 0.017828
   Steps 888888888886321 done

一回のiterationで、34〜38時間かかる。使用しているマシンは、Intel Core 2 Duo 2GHz, 2GB。
学習させている間、他の目的で使用していることもあるので、本当ならもう少し速いかもしれない。さらに、実行させているプログラムは、各パラメタの学習機会数をカウントするように改造しているので、どの程度かは不明だがそれによる実行時間差も存在する。

長時間の留守中に電源を入れたままにしたくないので、休日に1回分のiterationだけを実行して、平日は動かしていない。この場合、fv.binは更新されているものをそのまま使えば良いが、param.hは新しいものに置き換えて毎回Bonanzaを再コンパイルする必要がある。二回目以降では、パラメタの初期化を行わないようにコマンドで指定する。

一回目     > learn ini 100 50000 1 2 2
二回目以降  > learn no-ini 100 50000 1 2 2

これで、連続的に学習をさせた通常の場合とほぼ同じように学習できる。
但し厳密に言うと、futility pruningのために参照される変動マージン(fmg_misc, fmg_cap, fmg_drop, fmg_misc_king, fmg_cap_king, fmg_mt)が、毎回起動時点で初期化されてしまうという違いがある。しかし、これらの値は探索中、check_futil_score_quies()の中で適切な値に更新されていくので、全体に大きな差は生じないと考えている。