雑記(ViTをSサイズまで学習した・Weight Decay大きくすると最後に効く)

ViTをSサイズまで学習させた

 SサイズというのはScaling Vision Transformersに従った分類。

 将棋だとパッチ分割のサイズは関係ないので要約すると以下のサイズ。

f:id:tokumini:20220214221326p:plain

対局結果

 手元の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損失

f:id:tokumini:20220214222031p:plainf:id:tokumini:20220214222033p:plain
左: Policy損失 右: Value損失

 Policyはほとんど変わらない。Valueは途中まではViTの方がいいけど最後はほぼ同程度。

Valid損失

f:id:tokumini:20220214222109p:plainf:id:tokumini:20220214222112p:plain
左: Policy損失 右: Value損失

 こっちもTrain損失と傾向は同じ。

Weight Decayの効果

 上の学習は実はモデルの違いだけではなくて、Weight Decayの大きさが違う。ResNetでは1e-4、ViTでは1e-5でやっている。これはViTだと小さくした方が性能良くなったからそうしていたが、試し直すとそうでもなかった。ViT sサイズでWeight Decayを1e-4と1e-5で学習した結果、

f:id:tokumini:20220214222422p:plainf:id:tokumini:20220214222425p:plain
左: Policy損失 右: Value損失

となり、1e-4と大きくすると途中まではあまり良くないけど最後に伸びるというResNetと同じような結果が得られた。まぁ最終的な到達地点はほぼ変わらないので別にどっちだって良さそうだが……。

 これは多分、学習率の線形減衰との合わせ技で起きる現象なんじゃないか。パラメータと学習率の相対的な大きさがどうのこうのというの。