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

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

tanuki- 2022-05-15 学習時に best move が駒を取る指し手でない局面のみ qsearch なしで学習する

tanuki- 2022-05-15 学習時に best move が駒を取る指し手でない局面のみ qsearch なしで学習する

実験内容

  • 学習時に best move が駒を取る指し手でない局面のみ qsearch なしで学習し、レーティングが変化するか調べる。

棋譜生成

生成ルーチン 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 127
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 無効
次元下げ K・P・相対KP
学習データ内で重複した局面の除外 しない
初期ネットワークパラメーター tanuki-wcsc29
勝敗項の教師信号 0.80

レーティング測定

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

実験結果

機械学習

レーティング測定

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

思考エンジン1 name=YaneuraOu NNUE 7.10 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2022-05-02\engine1\source\YaneuraOu-by-gcc.exe 評価関数フォルダパス=D:\hnoda\shogi\eval\suisho5.halfkp_256x2-32-32.evaluate.exclude_capture\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 FVScale1=16

思考エンジン2 name=YaneuraOu NNUE 7.10 64ZEN2 TOURNAMENT author=by yaneurao exeファイル=C:\Jenkins\workspace\TanukiColiseum.2022-05-02\engine2\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 FVScale2=16

対局数5000 先手勝ち2415(57.5%) 後手勝ち1783(42.5%) 引き分け802

engine1

勝ち1281(30.5% R-118.0 +-10.2) 先手勝ち749(17.8%) 後手勝ち532(12.7%)

宣言勝ち22 先手宣言勝ち18 後手宣言勝ち4 先手引き分け496 後手引き分け306

engine2

勝ち2917(69.5%) 先手勝ち1666(39.7%) 後手勝ち1251(29.8%)

宣言勝ち58 先手宣言勝ち24 後手宣言勝ち34 先手引き分け306 後手引き分け496

1281,802,2917

まとめ

学習時に best move が駒を取る指し手でない局面のみ qsearch なしで学習し、レーティングが変化するか調べた。

学習ロスと検証ロスは、 qsearch なしのほうが大幅に大きかった。

平手局面の評価値は、ほとんど変わらなかった。

評価値の絶対値は、ほとんど変わらなかった。

レーティングは、 追加学習有のほうが有意に低かった。ただし、 best move が駒を取る指し手だった場合と比べ、やや上がっていた。

学習ロスと検証ロスについて、 best move が駒を取る指し手の局面と取り除くだけでは、駒の取り合いのない局面を排除しきれないためだと思われる。

平手局面の評価値については、学習に致命的な問題が起きていない事を表しているものと思われる。

評価値の絶対値についても、学習に致命的な問題が起きていない事を表しているものと思われる。

レーティングについては、 best move が駒を取る指し手の局面だった場合に比べて改善しているのは、ある程度駒の取り合いのある局面を学習から排除できているためだと思われる。一方、 qsearch ありの場合と比べて低いのは、駒の取り合いのない局面を排除しきれてないためだと思われる。

前回の実験同様、 qsearch なしでの学習は、基本的には必要ないと思われる。今後の実験においては、何らかの形で qsearch ありで学習を行っていきたい。