適当にやった実験の結果

 以下全てEloレートは全て技巧2(深さ10)と1手0.25秒で500局対戦した結果から推定したもの。

ディリクレノイズなし

 行動選択を価値のソフトマックス関数にしたので、ある意味Policyに対する依存性が弱まり、ディリクレノイズを抜いても良いのではないかと思ったので試してみた。

f:id:tokumini:20190915155916p:plainf:id:tokumini:20190915155929p:plainf:id:tokumini:20190915155938p:plain

 Policy損失はあまり下がらなかったが対局させてみると性能が落ちている感じもしなくて謎。

リプレイバッファサイズ4倍

 リプレイバッファサイズは今まで適当に決めた1Mでやっていて、AlphaZeroは局面数換算するともっと大きいので大きくして実験してみた。

f:id:tokumini:20190915160030p:plainf:id:tokumini:20190915160033p:plainf:id:tokumini:20190915160036p:plain

 ほとんど差はないが、まぁ大きくしておいた方が少しだけ良いのかなという気がする。

スリープ時間2倍

 学習スレッドのスリープ時間を2倍にすれば実質生成速度を2倍にするのと一緒なので基本的にはこれで性能が伸びるはずだと期待してやった。

f:id:tokumini:20190915160144p:plainf:id:tokumini:20190915160146p:plainf:id:tokumini:20190915160149p:plain

 1.3Mステップのベースラインは上ブレっぽいのでおそらくスリープ時間2倍の方が全体的には良いと思われる。単純に学習時間が2倍になるので結構つらいが、余裕があるならやっておきたい設定ではある。あるいはAWSとかでGPU8枚インスタンスとかを使ってみるというのもあり。

バッチサイズ2倍

 なんとなくやった。

f:id:tokumini:20190831120655p:plainf:id:tokumini:20190831120711p:plainf:id:tokumini:20190831120715p:plain

 バッチサイズを2倍にするとステップあたりの学習速度が2倍になるので、横軸をステップ数で並べるとめちゃくちゃ性能が良くなったように見える。しかし今は学習スレッドのスリープ時間をバッチサイズに応じて調整しているので、バッチサイズを2倍にするとスリープ時間が2倍になる。横軸を学習時間にすると

f:id:tokumini:20190831120719p:plainf:id:tokumini:20190831120722p:plainf:id:tokumini:20190831120725p:plain

 ほとんど変わらない。バッチサイズを大きくした方がGPUで並列計算ができる分、学習部分がやや高速になるが、結局スリープ時間の方が遥かに大きいので全体としてはあまり変わらない。DeepMindみたいに生成側を十分な数用意できるなら学習部分がボトルネックになるのでバッチサイズを4096と大きくする意味があるのだろうが、GPUが少ない環境で回すならどっちでも良さそう。