シャレになっていなかった
今は、macOS版MRWorkerの開発フェーズで、Windows版からコードを移植中だ。同時に、MasterReversi本体の評価精度の向上を目指す改良も行っているのだが、Ver1.5.1用の評価データは再現できない事が判った。
昨日書いた様に、Ver1.5.1用の評価データはFFOテストとの相性が良いので、コレを使うと、FFOテストでは過去最高の性能を出せる。
ここの所、新しい評価データを作成してみているのだが、FFO40-59については、Ver1.5.1用を超える性能を出せるモノも作れているものの、FFO60-79については、劣るモノしか作れなかった。
なので、とりあえず、もう一度、Ver1.5.1用の評価データを作成し、少しずつ、構成要素を変更していく格好で、より良い評価データを作成しよう! と、言う事にした訳だ。
しかし、使用する教師用データベースはバックアップしてあったので、それらを使って、再度、Ver1.5.1用の評価データを作成してみたものの、FFOテストでは、現在作成中の評価データ程度の性能しか出なかった。
評価データ生成用の処理ルーチンについても、過去に何度か改変してきた事から、それが影響しているのかなあ、と、思った作者的には、Ver1.5.1用の評価データを作成した筈のMasterReversi Ver1.5.1のバックアップを持ってきて、それを使って作成してみた。
しかし、結果は似た様な感じで、どうしても、Ver1.5.1に同梱してある評価データほどのFFO性能は出なかった。
と、言う事で、作者的にも、二度と、Ver1.5.1用の評価データは生成できない事が判明したのだが、その理由は、評価データ生成用の処理コードの中にある、探索枝刈り用データの生成処理にバグがあったからだ。
具体的には、生成用のコードはマルチスレッド動作させていて、それらのスレッドに対して、10対局分ずつ対局データを渡してデータを生成させ、終わった後に、それらの結果を合成する処理をしているのだが、スレッドに対してデータを渡した後、その終了を確認する前に、合成処理を実行していた。
なので、まだ、最後の10対局分の処理が終わっていない段階で、合成処理が行われる事になるので、意図していたデータと比べると、正しくない探索枝刈りデータが出力されてしまっていた。
そんな処理ルーチンも、4コア8スレッドのマシンで実行していた頃には、最大80対局分のデータが異常になっていただけだったのだが、今現在のメインマシンは12コア20スレッドなので、意図しないデータが反映される数が2倍以上に膨れ上がっていた事になる。
と、言う事で、MasterReversiの場合、探索枝刈りがイマイチかなあ、と、言い続けてきていた割には、その根本となる、データの生成処理は疑っていなかった。
これは、問題となるデータは非常に少なかったので、大体は、出力されたデータで、普通に動作している様に見えたからなのだが、FFOテスト的には、Ver1.5.1相当の評価データが生成できない事から、影響はそれなりにあったのかもしれない今日この頃だ。
ちなみに、今日の時点で、上記の不具合は修正したのだが、その結果として、Ver1.5.1相当の評価データが生成できたのか、というと、出来ていない。
これは、Ver1.5.1用の評価データを生成していた時に、既に、上記のバグは存在していたので、Ver1.5.1用の評価データは、その影響から、偶然、良い方向に転んで、高いFFO性能を出していたから、という事になる筈だ。
なので、作者が意図した評価データを作成できる様になったからといっても、Ver1.5.1と同様の性能は出せなかったのだが、これで、探索枝刈りについても、アンダーコントロール! な感じにはなった筈だ。
つまり、更に、色々な評価データを生成して行けば、今度こそ、意図して作成したデータで、最高性能を出せる様になるのかもしれない今日この頃だ。