ViTをSサイズまで学習させた
SサイズというのはScaling Vision Transformersに従った分類。
将棋だとパッチ分割のサイズは関係ないので要約すると以下のサイズ。
対局結果
手元の2080tiマシンで計測。vs水匠5(4Thread)、1手1秒
モデル | NPS | Policy損失 | Value損失 | 勝 | 引分 | 負 | 勝率 | 相対レート |
---|---|---|---|---|---|---|---|---|
ResNet(20bl, 256ch, FP16) | 11742.3 | 1.7598 | 0.4625 | 116 | 19 | 165 | 41.8% | -57.5 |
ViT(6bl, 256ch, FP16) | 16179.3 | 1.7515 | 0.4729 | 73 | 7 | 220 | 25.5% | -186.2 |
ViT(12bl, 384ch, FP16) | 5936.2 | 1.7500 | 0.4625 | 74 | 8 | 218 | 26.0% | -181.7 |
sサイズではNPS高いけど精度悪くて弱い。SサイズではResNetと同程度の精度になったけど遅くて弱い。明快! ViT内で比較すれば大きくして性能維持できているのでそれはいいんだけど、ResNetに到達できない。
損失グラフ
Sサイズの方について。
Train損失
Policyはほとんど変わらない。Valueは途中まではViTの方がいいけど最後はほぼ同程度。
Valid損失
こっちもTrain損失と傾向は同じ。
Weight Decayの効果
上の学習は実はモデルの違いだけではなくて、Weight Decayの大きさが違う。ResNetでは1e-4、ViTでは1e-5でやっている。これはViTだと小さくした方が性能良くなったからそうしていたが、試し直すとそうでもなかった。ViT sサイズでWeight Decayを1e-4と1e-5で学習した結果、
となり、1e-4と大きくすると途中まではあまり良くないけど最後に伸びるというResNetと同じような結果が得られた。まぁ最終的な到達地点はほぼ変わらないので別にどっちだって良さそうだが……。
これは多分、学習率の線形減衰との合わせ技で起きる現象なんじゃないか。パラメータと学習率の相対的な大きさがどうのこうのというの。