評価データは確定
今は、macOS版MRWorkerの開発フェーズで、評価精度の向上用作業を行っていたのだが、次バージョン用の評価データは決定した。評価精度が向上したかどうかは微妙なのだが、FFO40-59の性能は過去最高に出来ている。
少し前に書いていた様に、評価データは、基本的には、過去に使用していた学習データの中から、比較的、悪手が少ないと思われる「ランダムスタート対局」と、「Book生成用のエンジン対局」だけを使用して生成した。
更に言えば、過去に使用していた、「対局サイトからダウンロードした棋譜」と、初版の頃に作成した「序盤ランダムのセルフ対局」のデータを学習データから外した格好になる。
なので、教師データの数は「ランダムスタート対局:172万」+「Book生成用のエンジン対局:56万」なので、合計228万対局くらいになっているのだが、Ver1.5.7用に使った教師データの総数は389万対局くらいになっているので、かなり減らしている格好になる。
更に言えば、その前に使っていたVer1.5.1用の教師データは507万対局あったので、教師データはどんどん減らしている格好になる。
そんなに減らして大丈夫なの? という気もしないではないのだが、実際問題としては、あまり宜しくはない、感じはしないでもない感じだ。
つまり、劇的にダメ、という感じはしていないのだが、他ソフトとエンジン対局させてみると、何となく、評価が安定しない感じはしないでもなかった。
具体的には、ある局面で、いきなり、評価値が激変してしまう、という現象がたまに見られたので、評価データの生成ルーチンの処理を少し変更して、評価データの前後8局面でも、教師データを学習する格好にした。
評価データは4局面毎に学習して生成しているので、学習データを前後8局面でも使う格好にする事で、各4局面を見れば、学習パターン数は3倍くらいに増える事になるので、安定化できる訳だ。
もっとも、このような処理は、例えば、35手目で発生している局面のパターンを、27手目用の学習データとして使う事を意味するので、35手目で有効でも、27手目ではあまり有効ではない様なパターンの場合、過度に評価してしまって、評価値が正しい値からズレる危険性もある。
なので、より正確な評価値を期待するのであれば、こんな事はしない方が良いかもしれないのだが、今のところ、教師データの数が足りない感じは否めないので、こんなやり方をしてみた訳だ。
ちなみに、上記の様にして生成した評価データでも、それなりには使える感じなのだが、今回、FFO性能をどこまで上げられるか? というのも試してみている。
具体的には、FFOテスト実行中に内部で評価している盤面データをデータベースに出力しておき、その盤面から完全読みで補完した対局データを学習が終了した後の微修正用教師データとして使用している。
Ver1.5.1でも、同じ事はやっていて、その結果として、FFO性能を上げる事には成功したのだが、対局時に使用する評価値に、比較的大きめの誤差が発生する事もあった。
なので、その次に作成したVer1.5.7用の評価データでは、生成方法を変更して、FFO用の学習データは普通の学習データと同時に学習する格好にした結果、FFO性能もそれなりに高く、対局時の評価値も安定する感じになった。
今回は、また、Ver1.5.1みたいな格好、つまり、まずは、FFO用の学習データは使用せずに学習を終わらせ、出来上がった評価データをFFO用の学習データを使って微修正する格好に戻している。
また、使用するFFO用の学習データは新規にかなりの数を追加した。
この方が、FFOテストの性能を上げやすかったからなのだが、こんなやり方では、普通の評価に問題が出る! というのは経験済みなので、今回は、評価ルーチン側にも細工を入れている。
具体的には、FFO用のデータは、22〜24残の盤面を補完して作成しているので、基本的には、36手目くらいまでは、評価データに影響を与えない。
逆に言えば、37手目以降は、評価値に誤差が発生する可能性が高まっている筈なので、37手目以降では、評価データの誤差は通常の2倍発生する! という事にして、枝刈りを行わせている。
なので、Ver1.5.1の頃と比べると、FFO性能は向上しつつも、対局中に異常な悪手が発生する可能性は減らせた感じなのだが、FFO用のデータが評価値を捻じ曲げているとすると、中盤の評価値については、誤差が発生している事にはなる。
その結果として、中盤の評価値が比較的不安定な感じになっている感じもしないでもないのだが、その値に左右されにくくするために、最善手判定は、まず、浅い先読みで候補をしぼっておき、その中から、深い先読みで決定する格好にしている。
同様の処理はVer1.5.7でも採用していたのだが、今回は、より一層、その傾向を強めた。
その分、前向き枝刈り用の浅い評価については、従来の2,3手読みから4,5手読みくらいに、より深くはした。
また、評価データについても、FFO用対局だけを追加学習させると、評価値に誤差が多めに発生する感じなので、同時に、Book生成用対局からDrawLineのみを抽出した対局データも同時に学習させる事で、評価値の歪みを、極力、防止している。
その結果として、Ver1.5.1用よりも高いFFO性能を実現しつつ、対局用としても、普通に使える感じの評価データにはなったかもしれない。
もっとも、FFO40-59については、目に見えて性能が向上するのだが、FFO60-79については、向上はしているものの、その差は微妙だ。
具体的には、FFO40-59については、60秒かかっていた環境だと、55秒くらいにはなっているので、1割程度の性能向上は期待できるのだが、FFO60-79については、1500秒が1450秒程度になるだけなので、性能向上比率は大した事はない。
ただ、ここのところ、時事ネタばかりやっていたのは、実は、気を抜いていると、色々と評価データを生成してみても、FFO60-79の性能については、従来版よりも悪くなったりしていたからだ。
つまり、FFO60-79については、従来版並みを確保するだけでも大変だった訳なのだが、これは、EdaxとMRSolverの処理時間の違いを比較してみれば納得できる筈だ。
何故なら、FFO40-59については、新版を適用しても、環境によっては、Edaxの方が1割近く高速に動作したりしているのに対して、FFO60-79については、MRSolverの方が、結構、高速に処理を終わっているからだ。
つまり、FFO60-79の現行性能は、出来過ぎ! みたいな所もあるので、同等以上にするのが大変だった今日この頃になる訳だ。