評価関数を自作してみる⑧ EvalShare問題
やねうら王の設定ではEvalShareをonにした状態で自己対戦させると、両者が同じ評価関数を用いた状態とさせることができるオプションがある。おなじ評価関数で自己対戦させた場合、こうすると使用するメモリの量を節約できるのだが、異なる評価関数どうしの場合この機能が問題となる。両者の評価関数がどちらか片方の評価関数に共有されてしまうのである。さらにEvalShareはデフォルトでonになっているため、多くの人がこの罠に引っかかり自己対戦データが意味が無くなってしまうといった問題が発生している。
これをみて筆者は思った。
「もしかして、自作評価関数の対局のときもこれに引っかかっていたのではないか?」
当時用いたエンジン登録の設定は一部残っていたのでそれを調べると、EvalShareがonのままとなっていた。一応私も新しいエンジンを登録したときはEvalShareをoffにするようにしていたのだが、このときは忘れてしまっていたらしい。どうりで自己対戦のレート差に有意差が出ないわけである。はじめのeval1やepoch0などの対戦成績は全く問題ないので、このへんはちゃんとEvalShareはoffとされていたのだろう。
つまり、サチって居たわけでは無く、単に評価関数が共有されてしまっていただけで正常な状態が確保されていなかっただけのようだ。あとで対局データをとりなおす必要がありそうだ・・・。
あとで暇ができたらやり直す、かも。(私のやる気次第だが)