TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

【dlshogi】dlshogiモデルでNNUEの評価値を付け替える その4

前回、NNUE系で生成した教師データの方策と評価値に加えて、勝敗もdlshogiのモデルで推論した結果に付け替えた方が精度が上がることを確かめた。

前回までは、2020年にNNUE系で生成した教師データを使用したが、nodchip氏が公開している最近のNNUEで生成した教師データでも同じ傾向になるか追加で検証する。

nodchip氏が公開している教師データ

最新のtanuki-で深さ9で生成した80億局面を公開している。

前回までの検証に使用したデータは、100万ノードで探索しているのに比べ、深さ9で生成したデータは、局面により探索ノード数が異なるが、多くても数万ノードくらいであり、探索ノード数は少ない。

精度評価

付け替え条件

前回までの検証結果を踏まえ、加重平均の係数0.9、0.95で、方策、評価値、勝敗を付け替える。

比較のために、付け替えない条件でも学習する。

データ数

前回の条件に近づけるため、公開されているデータの9ファイル分を使用して、70,689,473局面、同一局面を平均化した後で65,802,717局面を学習する。

前回までデータは、平均化した後、63,965,555局面である。前回より少し多い。

学習条件

前回と同じ条件とする。

  • バッチサイズ: 4096
  • エポック数: 8
  • 評価値と結果の加重平均の按分係数(val_lambda): 0.333
  • 学習率: 0.04から1エポックごとに半減
  • オプティマイザ: MomentumSGD
  • 同一局面は平均化
  • モデル: ResNet 20ブロック256フィルタ
  • 評価値の付け替えに使用するモデル: dlshogiの40ブロック512フィルタのモデル

評価値と結果の加重平均の按分係数が1/3になっているが、訓練するキャッシュデータを作成する時点でモデルの推論結果を反映している。

学習結果

テストデータに、2017年~2018年6月のfloodgateのR3500以上の棋譜からサンプリングした856,923局面(重複なし)を使用して、評価した結果は以下の通り。

加重平均の係数 方策損失 価値損失 方策正解率 価値正解率
0.95 1.5930 0.4902 0.4921 0.7426
0.9 1.5774 0.4924 0.4926 0.7414
0 1.6888 0.5587 0.4644 0.7120

加重平均の係数0は、モデルの推論結果を使わないことを意味する。

加重平均の係数0.9のとき方策の損失が最小になり、加重平均の係数0.95のとき価値の損失が最小になっている。

いづれにしろ、付け替えを行った方が精度が高くなっている。


前回の結果と比較すると、付け替え後の精度は近い精度になっている。

\lambda_{val} 方策損失 価値損失 方策正解率 価値正解率
0.95 1.5841 0.4913 0.4894 0.7419
0.9 1.5735 0.4892 0.4917 0.7435

付け替え前のデータ(元データ)では、前回までのデータの方が精度が高い。

加重平均の係数 方策損失 価値損失 方策正解率 価値正解率
0 1.6446 0.5151 0.4732 0.7272

tanuki-のデータは探索ノード数が少ないため、2020年のNNUE系で100万ノードで生成したデータの方が質が良いようである。

まとめ

nodchip氏が公開している最近のNNUEで生成した教師データを使用して、dlshogiのモデルで方策と評価値、勝敗を付け替えた場合に、前回までと同じ傾向になるか検証した。
結果、前回までと同じくdlshogiの推論結果で付け替えた方が精度が上がることが確認できた。

dlshogiの最新モデルの自己対局で生成したデータに対して、同一モデルで付け替えを行った場合、どうなるか追加で検証したい。
データの質は下がるはずだが、加重平均の係数0.1など小さい値であれば、ラベルスムージングの効果が得られるかもしれない。