128チャンネルで1ヶ月学習(2回目)

 5月の世界コンピュータ将棋オンライン大会が終わってから、実験サイクルを早めるため学習は64チャンネルのネットワークで行っていた。しかしlibtorch1.5.0版に対応した影響で後方互換性がなくなり、すぐ動かせる強いパラメータが手元ないと細かい動作の検証で困るため、128チャンネルのネットワークで1ヶ月の学習をやり直した。

実験

 ほぼMiacisのWCSOC2020版

と同じ内容で実験を行ったが、「学習スレッドのスリープ時間と学習速度の関係」から生成量2倍で学習ステップ数1/2にしてもほぼ変わらないという結果を得ており、それを追試も兼ねてそこ(と学習率の減衰)についてだけ変更を行った。

変更のある項目 今回 前回
生成量 1ステップあたり256局面 1ステップあたり128局面
学習ステップ数 1M 2M
学習率 学習の80%経過時点で1/10 学習の50%経過時点、75%経過時点で1/10

学習結果

 横軸に学習時間、縦軸にfloodgate棋譜を用いた検証損失を取りプロットすると次のようになった。

f:id:tokumini:20200727100602p:plainf:id:tokumini:20200727100604p:plain
左:Policy損失 右:Value損失

 今回の学習の方が進みが良く、前回の学習の学習率減衰が起きた後と同じくらいの損失値を学習率減衰が起こる前で実現できていた。

 横軸を学習ステップ数にして比較した結果も載せておく。

f:id:tokumini:20200727102916p:plainf:id:tokumini:20200727102920p:plain
左:Policy損失 右:Value損失

 最終的な学習時間は649時間28分(≒27日)であった。前回の672時間32分より約一日短くなったが、これは学習ステップ数が少なくなった影響である。

 最終ステップでの損失は具体的には

手法 Policy損失 Value損失
今回 1.897591 0.672531
前回 1.923749 0.677997
差分 -0.026158 -0.005466

となった。以前の検証ではEloレートと損失の間に線形な関係を仮定すると係数はPolicy:-2135、Value:-8649と算出され、今回の結果と合わせるとPolicy損失の差分から計算すると55.8、Value損失の差分から計算すると47.3のEloレート向上が予想できる。

対局結果

 Miacis(1手1秒)とYaneuraOu/Kristallweizen(1手0.2秒、4Thread、定跡オフ)で対局を行った。

手法 勝数 引分数 負数 勝率 相対Eloレート
前回 317 0 183 63.4% 95.4
今回 697 2 301 69.8% 145.5

 約Eloレート50の伸びであり、ほぼ想定通りといったところ。

 YaneuraOu/Kristallweizenは持ち時間を増やしていくとかなり強くなる印象なのでなかなか同条件で互角というところまではまだ遠そうだが、また少しは近づいたか。