nodchipのコンピューター将棋ブログ

コンピューター将棋ソフト「tanuki-」シリーズの実験結果を掲載しています。

tanuki- 2022-04-10 学習データ量 再実験2

tanuki- 2022-04-01 halfkp_256x2-32-32 再実験

実験内容

  • 学習データ量を 40 億局面から 80 億局面に増やした場合に、レーティングに変化があるかどうか調べた。

棋譜生成

生成ルーチン tanuki-棋譜生成ルーチン
評価関数 水匠5 FV_SCALE=16
1手あたりの思考 深さ最大 9 思考ノード数最大 50,000 ノード
開始局面 foodgate の 2020 年~ 2021 年の棋譜のうち、レーティング 3900 以上同士の対局の 32 手目までから 1 局面ランダムに選択し、その局面を開始局面とした ランダムムーブなし
生成局面数 10 億局面 × 8 セット
生成条件 対局は打ち切らず詰みの局面まで学習データに出力した

機械学習

機械学習ルーチン やねうら王機械学習ルーチン
学習モデル halfkp_256x2-32-32
学習手法 SGD ミニバッチ法
USI_Hash 1024
Threads 16
loop 100
batchsize 1000000
lambda 0.5
eta eta1=1e-8 eta2=1.0 eta1_epoch=100
newbob_decay 0.5
nn_batch_size 1000
eval_save_interval 100000000
loss_output_interval 1000000
mirror_percentage 50
eval_limit 32000
weight_by_progress 無効
次元下げ なし
学習データ内で重複した局面の除外 しない
初期ネットワークパラメーター tanuki-wcsc29
勝敗項の教師信号 0.80

レーティング測定

対局相手
思考時間 持ち時間 300 秒 + 1 手 2 秒加算
対局数 5000
同時対局数 64
ハッシュサイズ 768
開始局面 たややん互換局面集

実験結果

機械学習

レーティング測定

対局数=5000 同時対局数=64 ハッシュサイズ=768 開始手数=24 最大手数=320 開始局面ファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\TanukiColiseum\taya36_2020-11-06.sfen NUMAノード数=2 表示更新間隔(ms)=3600000

思考エンジン1 name=YaneuraOu NNUE 7.00 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\suisho5.halfkp_256x2-32-32.80G\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=300000 秒読み時間(ms)=0 加算時間(ms)=2000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

思考エンジン2 name=YaneuraOu NNUE 7.00 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2021-09-05\engine2\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\suisho5.halfkp_256x2-32-32\final 定跡手数=256 定跡ファイル名=no_book 思考ノード数=0 思考ノード数に加える乱数(%)=0 思考ノード数の乱数を1手毎に変化させる=False 持ち時間(ms)=300000 秒読み時間(ms)=0 加算時間(ms)=2000 乱数付き思考時間(ms)=0 スレッド数=1 BookEvalDiff=30 定跡の採択率を考慮する=false 定跡の手数を無視する=false SlowMover=100 DrawValue=-2 BookEvalBlackLimit=0 BookEvalWhiteLimit=-140

対局数5000 先手勝ち2193(52.7%) 後手勝ち1965(47.3%) 引き分け842

engine1

勝ち2108(50.7% R4.0 +-9.6) 先手勝ち1098(26.4%) 後手勝ち1010(24.3%)

宣言勝ち112 先手宣言勝ち53 後手宣言勝ち59 先手引き分け442 後手引き分け400

engine2

勝ち2050(49.3%) 先手勝ち1095(26.3%) 後手勝ち955(23.0%)

宣言勝ち111 先手宣言勝ち50 後手宣言勝ち61 先手引き分け400 後手引き分け442

2108,842,2050

まとめ

学習データ量を 40 億局面から 80 億局面に増やした場合に、レーティングに変化があるかどうか調べた。

学習ロスは、 80 億局面のほうが大きかった。

検証ロスは、 80 億局面のほうが小さかった。

学習の収束までのデータ量は、 80 億局面のほうが少なかった。

平手局面の評価値は、大きな差はなかった。

評価値の絶対値は、大きな差はなかった。

レーティングは、 80 億局面のほうが高かったが、有意な差はなかった。

学習ロスと検証ロスについては、 80 億局面のほうが、より過学習しにくいという事を表しているのだと思われる。

学習の収束までのデータ量については、理由が分からない。

平手局面の評価値については、学習に大きな問題が起きていない事を表している。

評価値の絶対値については、同じ学習データを使用しているため、大きな差がなかったのだと思われる。

レーティングについては、 halfkp_256x2-32-32 では、 40 億局面程度でレーティングが頭打ちになるという事なのだと思われる。

halfkp_256x2-32-32 では、 40 億局面程度で、レーティングが頭打ちになる事が分かった。次は、標準 NNUE 以外のネットワークアーキテクチャに対して、学習を行っていきたい。