TadaoYamaokaの開発日記

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

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

前回、dlshogiのモデルの自己対局で生成した教師データの方策、価値、勝敗を、同一モデルで推論した結果に付け替えた場合、精度が上がることを観測した。
自己対局で探索した教師データより、探索なしで推論した結果の方が精度が上がるのは予想外の結果だった。

前回は、ResNet 20ブロック256フィルタのモデルを学習したが、より大きなサイズでも同じ傾向になるか検証する。

モデルサイズ

今回は、最新のdlshogiと同じResNet+Transformerの40ブロック512ブロックのモデルを学習する。

精度が教師データを学習のしやすさに関連するのであれば、サイズの大きなモデルであれば、探索ありの教師データを学習できるはずである。

精度評価

付け替え条件

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

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

データ数

前回と同じ、自己対局で生成した教師データの同一局面を平均化した50,878,296局面を学習する。

学習条件

前回と同じ条件とする。

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

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

今回(ResNet+Transformer 40ブロック512フィルタ):

加重平均の係数 方策損失 価値損失 方策正解率 価値正解率
0.9 1.5676 0.4880 0.5053 0.7471
0.1 1.6538 0.5754 0.4818 0.6950
0.05 1.6674 0.5812 0.4809 0.6945
0.01 1.6865 0.5972 0.4806 0.6917
0 1.6829 0.6057 0.4789 0.6877

前回(ResNet 20ブロック256フィルタ):

加重平均の係数 方策損失 価値損失 方策正解率 価値正解率
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)では、前回の方が精度が高い。
サイズの大きなモデルは探索ありの教師データをより学習できると考えたが、そのような結果にならなかった。

付け替え(係数0.9)を行ったデータでは、サイズの大きなモデルの方が精度が高い。
付け替えを行うと精度が上がるという事象は、サイズの大きなモデルでより顕著になった。

まとめ

探索ありの教師データを、同一モデルの推論結果に付け替えると精度があがる事象は、サイズの大きなモデルでも同じ傾向になった。

探索なしのデータで精度が上がる理由ははっきりしないが、画像認識の分野では、ラベルなしデータに疑似ラベルを付けて学習する半教師あり学習の手法は以前から行われているので、それと同様の効果があるのかもしれない。

これまで、将棋AIの強化学習では、モデルを改善するには、探索をして自己対局した教師データが必要と考えられていたが、単に学習済みモデルで推論しただけのデータを学習することで精度があるのであれば、サンプル効率の高い学習方法が見つかったと言える。


今回の検証に使用したデータ量は5千万局面と少なく、収束するまで学習できていないので、より多くのデータ量で収束するまで学習するとどうなるかは別途検証したい。

今回は、最新のdlshogiのモデルで付け替えを行ったが、モデルを訓練した後に同じモデルで付け替えて、同じサイズのモデルが学習した場合にも効果があるか検証したい。
また、訓練に使用していない新規の局面を加えて付け替えして学習した場合どうなるか検証したい。