雑記(ViT実験など)

 ViTについての実験をいくつか。

10ブロック、256chを長期学習

 Google Colab Pro+を使って7日かけていつもの10倍、1.6Mステップ回した。

f:id:tokumini:20220109193154p:plainf:id:tokumini:20220109193157p:plain
左: Policy損失 右: Value損失

 Policy損失はResNet(20ブロック・256ch)より良くなる。Value側がひどい。

 速度差もあるので対局させたら多分大差だと思う。モデルが変わってしまったので対局やるのがちょっと面倒。まぁいずれやるかも。

 ResNetでの対局結果(1手1秒)

f:id:tokumini:20220110102510p:plain

Self-Attention後のMLPでチャンネル数を増やさないようにする

f:id:tokumini:20220107225700p:plainf:id:tokumini:20220107225702p:plain
左: Policy損失 右: Value損失

 露骨に精度が落ちる。

大きくする

 かなり大きくしてみる(20ブロック512ch)。

f:id:tokumini:20220107230001p:plainf:id:tokumini:20220107230003p:plain
左: Policy損失 右: Value損失

 まともに学習ができていなさそうだったので撤退。

速度の検証

 まずsサイズを試すのが常識的なラインかなと思っている。

ブロック数を10blockから6に減らす

f:id:tokumini:20220109192150p:plainf:id:tokumini:20220109192153p:plain
左: Policy損失 右: Value損失

 ちゃんと精度は落ちるが、ギリギリ許容範囲内かなぁというところか。

Poolformer

 多少CNNに近いものなのでなんとかなるかと思ったら全然ダメだった。

f:id:tokumini:20220107225749p:plainf:id:tokumini:20220107225752p:plain
左: Policy損失 右: Value損失

学習量試算

 ViTの学習をいろいろ試した論文の、sサイズモデルについての学習結果である表19を見ていた。

f:id:tokumini:20220109192635p:plain

 データサイズとしては300Mが一番近い。その場合(そうじゃない場合でも)2Mステップくらいまでは上がっていっていそう。

 この論文ではバッチサイズ4096で学習が行われているそうだ。消費データ量を一致させる法則からすると、手元でできる最大限のバッチサイズが512で1/8なので、ステップ数は8倍するので16Mステップ。

 今、よくやっているのが160Kステップ。なので100倍回せば良い。この記事冒頭の1.6Mステップから見れば10倍。

 雑に計算すると70日〜80日くらい回せばなんとか達成できそう。簡単にやれるものではないが、腹を括ればできないものでもない。