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

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

tanuki- 2022-07-10 nnue-pytorch 学習率調整

tanuki- 2022-07-10 nnue-pytorch 学習率調整

実験内容

  • nnue-pytorch を用いた学習で、いくつかの学習率を試し、最もロスが下がる学習率を求める。

棋譜生成

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

シャッフル条件

生成ルーチン tanuki-シャッフルルーチン
qsearch() あり
置換表 無効

機械学習

機械学習ルーチン nnue-pytorch + やねうら王 https://github.com/nodchip/nnue-pytorch/tree/shogi.2022-05-23
学習モデル halfkp_256x2-32-32
学習手法 SGD ミニバッチ法
最適化手法 Ranger
学習率調整手法 StepLR step=1 gamma=0.992
batch-size 16384
threads 2
num-workers 2
gpus 1
features HalfKP
max_epoch 50
scaling (kPonanzaConstant) 361
lambda 0.5
勝敗項の教師信号 1.0

実験結果

機械学習

学習ロスと検証ロスは、 0.00025 および 0.0005 のときに、最も下がった。学習率が高いと、学習の序盤は大きく学習が下がるが、その後ロスが下がりにくくなった。学習率を下げると、後半でロスが下がりやすくなる場合があるが、下げすぎると、ロスが下がりにくくなった。

考察

学習ロスと検証ロスについては、 nnue-pytorch デフォルトの 0.000875 は高すぎる可能性がある。

まとめ

nnue-pytorch を用いた学習で、 nnue-pytorch を用いた学習で、いくつかの学習率を試し、最もロスが下がる学習率を求めた。

結果、 0.00025 と 0.0005 の時に、学習ロスト検証ロスが、最も下がった。

次回は、学習率 0.00025 で学習を行い、レーティングを測定したい。