TadaoYamaokaの開発日記

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

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

前回、NNUE系のtanuki-で生成した教師データを使用して、dlshogiのモデルで方策と評価値、勝敗を付け替えた場合に、dlshogiの推論結果で付け替えた方が精度が上がることが確認できた。

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

自己対局データ

dlshogiの最新のモデルで、平均で約7500ノード探索して自己対局した教師データを使用する。
探索ノード数は、探察打ち切りや延長を行っているため、局面により異なっている。
開始局面は、dlshogの定跡に登録されている局面から抽出している。

精度評価

付け替え条件

加重平均の係数0.9、0.1、0.05、0.01で、方策、評価値、勝敗を付け替える。

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

データ数

同一局面を平均化した後で50,878,296局面を学習する。

データ数は、前回の77%程である。

学習条件

前回と同じ条件とする。

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

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

加重平均の係数 方策損失 価値損失 方策正解率 価値正解率
0.9 1.6183 0.5150 0.4846 0.7300
0.1 1.6400 0.5388 0.4733 0.7096
0.05 1.6521 0.5488 0.4708 0.7032
0.01 1.6517 0.5531 0.4712 0.7014
0 1.6481 0.5526 0.4716 0.7021

同一モデルで探索して生成したデータを、探索なしで推論した結果に付け替えるので、精度は下がると予想していたが、加重平均の係数0.9で付け替えた場合が最も精度が高くなった。

学習の精度は、教師データの学習しやすさと関係しているかもしれない。
探索して生成したデータは、局面を先読みした結果なので、読むことができないモデルには学習が難しいのかもしれない。

教師データは、必ずしも深く探索したデータがよいとは限らないという仮説が成り立ちそうである。

まとめ

dlshogiの最新モデルの自己対局で生成したデータに対して、同一モデルで付け替えを行った場合、精度がどうなるか検証した。
結果、同一モデルで生成したデータでも付け替えを行った方が精度が上がるという結果になった。
データの質は下がるはずなので、精度が下がると予想したが、予想に反する結果になった。
学習の精度は、データの学習のしやすさと関連している可能性がある。

より大きなパラメータ数のモデルで学習した場合は、読みの結果を反映できるのか追加で検証したい。