普段使っているネットワークがそこまで大きくはないのでもっと大きいネットワークを試したいと思って実験したが、ブログを見るとほとんど同じような実験を以前にもしていた。自分で書いた記事を自分で忘れている。
上の記事と同様に、普段128chである残差ブロック中のCNNを256chに増やして学習を行った。学習データはAobaZeroの棋譜、検証データはfloodgate2015年の棋譜を使っている。
上の記事では1,000,000ステップしか学習を回していないところを、今回は3倍の3,000,000ステップまで回した。学習率の減衰は0.6Mステップごとに1/10にする形で行った。つまり学習が終わるまでに等間隔で計4回減衰が発生する。
Policy損失
Policyの検証損失はほぼ変わらない。が、点線の方であるtrain損失ではそこそこ差がある点は気になる。AobaZero棋譜への適応はチャンネル数を増やした分良くなったが、floodgateの棋譜はまた性質が異なるので検証損失は伸びなかったと解釈するのが普通だろうか。
Value損失
初期局面での5秒検討
NPSは128chのとき8100.6、256chのとき5457.6
探索深さにやや差が出ているのは気になるが、偶然の範囲内かどうか。
対局@2080tiマシン
~/Miacis/scripts/vsYaneuraOu.py --time1=250 --time2=250 --NodesLimit=400000 --game_num=1000
なぜか128chは途中からしか計測していなかったが、まぁ学習序盤はどうせ弱いのでどうでもいいだろう。
最終的な対局による性能はほとんど変わらなかった。NPSの低下とValueの精度向上がちょうど打ち消し合うくらいだったということだろう。冒頭の記事でもだいたい同じ感じだったので128ch ~ 192ch ~ 256chでは同じ持ち時間での性能はほとんど変わらないというのがここまでの結果になる。
では結局どのチャンネル数が良いかというと、それぞれのメリットを考えると
- 128chにすると学習・生成が速いので実験サイクルは回しやすい
- 256chの方が対局時のGPU依存部分が多いので、強力なGPUを使った場合での伸びが期待できる
- 256chの方が探索ノード数が少なく、持ち時間を長くしたときの伸びは低ノード帯の方がやや大きいはず
(三番目の根拠についてはMuZeroの論文のFigure.3)
という感じなので、大雑把にいろいろ実験するなら128ch、最高性能を目指すなら256chという感覚。