[論文メモ] DeiT III: Revenge of the ViT

arxiv.org

Meta AI


ただの教師あり学習だけ(自己教師あり学習なし)でVision Transformerのパフォーマンスを向上させた。

Vision Transformer(ViT)はconvolutionのような帰納バイアスが無い分能力は高いが学習しパフォーマンスを出すのが難しく、事前学習としてBerTのような自己教師あり学習が重要と考えられてきたが本当にそうなのか?というお気持ち
あくまでこの議論を盛り上げようということ。

手法

VIT用に教師あり学習を工夫する。具体的には

  • augmentationの見直し
  • 正則化追加
  • lossの見直し
  • crop方法の見直し
  • 低解像度でのカリキュラム学習

Regularization & loss

Stochastic depth

stochastic depthはresidual構造がある場合にブロック部分を確率的にパスしてskip connectionの部分のみでforwardする手法。
Dropoutのレイヤーバージョン。
drop率は表13参照。

LayerScale

LayerScaleはresidual blockに学習可能パラメータを導入しtransformerの収束を助けるためのものだがパフォーマンスの向上も確認できたので導入。
初期値はシンプルに 10^{-4}に。

Binary cross-entropy

クラス分類の学習ではcross-entropy(CE)が一般的だがこれをbinary cross-entropy(BCE)に変更する。
既存研究ではCEからBCEへの変更は精度向上はわずかだがMixup等のaugmentationとの親和性が高いと結論づけていたが、今回のImageNet1kの実験では大きなパフォーマンス向上があった(表4)。

ただImageNet-21kではそうでもなかったのでImageNet-21kの実験はCEを採用。

Data-augmentation

ConvNetではRandAugmentのようなaugmentationが採用されているがViTはアーキテクチャが全く異なり帰納バイアス等を考えても同じaugmentationでは過学習する可能性がある。
再検討した結果3つを採用する。

  • Grayscale:色ではなく形状に重点が置かれるように
  • Solarization:色に対して強いノイズを加え、色変化にロバストにする。これも形状に注目しやすくなる
  • Gaussian Blur:形状を少し変化させ形状にロバストにする

3つのaugmentationの例が図2。

この3つに加え一般的なaugmentationのhorizontal flipとcolor-jitterも採用。

ablationで効果を検証(表2)。

Corpping

Random Resized Crop(RRC)

GoogLenetで採用された方法。
大きなモデルでの過学習を防ぐのに重要とされてきたが、オブジェクトの見た目の大きさの変化により学習データセットとテストデータセットで不整合が発生する。これは実質ドメイン変化といえる。
また、ImageNet-21kのような巨大で過学習しにくいデータセットでも効果的なのかは懐疑的。

Simple Random Crop (SRC)

AlexNetで採用されたシンプルなクロップ。
画像の短辺を入力解像度なるようにリサイズしてクロップする。
ここでは4ピクセルだけreflect paddingしてクロップ。

図3にRRCとSRCの例を示す。

SRCはアスペクト比を保っているがオーバーラップが大きく、画像の多様性が少ない。
ImageNet-1kの学習ではRRCのほうが効果的だった。
しかしImageNet-21kのような巨大なデータセットではそもそも過学習リスクが小さく、データの多様性もデータ自体で担保している。
むしろSRCのようにアスペクト比を保った方法の方にアドバンテージがある。
またRRCはクロップされた画像から対象となるオブジェクトを推測できないことが多々ある(図4)。

表5にImageNet21kに対してRRCとSRCを適用した際の比較を示す。

Lower Resolution

ViTではあまり使われないが、既存手法で低解像度で学習しターゲットの解像度でfine-tuningをするという方法がある。
これにより学習時とテスト時の(サイズに関する)ドメインの不一致を軽減出来るらしい。
適用してみると大きいモデルへの正則化の効果も確認できた。

こちらの論文を参照(著者がほぼ一緒)
arxiv.org


既存手法との学習方法の最終的な差異のまとめ

実験・結果

ImageNet系のクラス分類とセグメンテーション等のダウンストリームタスク。

ImageNet-1k-trainをバッチサイズ2048で400エポック学習。解像度は224x224。
結果は図7。

ImageNet-21k(224x224)を90epoch学習後、ImageNet-1kを50エポック学習。解像度は224x224と384x384。
結果は図8。

過適合してないかのチェックのため上記2つのモデルをImageNet-v2(validationでも見たことが無いデータ)で評価した結果。
しっかりパフォーマンスが出ている。

BerT系との比較。MAEはこれ
ninhydrin.hatenablog.com

結果が表9。提案手法は自己教師あり学習なしでもそれらに匹敵するパフォーマンス。

転移学習

セマンティックセグメンテーション


Ablations。
学習の量による変化(図5)

augmentationの比較(表3)
既存のaugmentationはConvNet用に提案されたものなのでResNetでの比較実験もした。
提案した3-augmentはViTに効果的。既存のaugmentは確かにConvNet(ResNet)で有効だった。

低解像度で学習->ターゲット解像度でのfine-tuningの効果。
わずかだが確かに効果あり。低解像度での学習はViTはパッチ数が減るため高速化・省メモリの恩恵もあり、またViT-H52等の大きなモデルも安定する。

所感

クロップによるドメインシフトはありそうだなと思っていたが、しっかりと考えてはいなかった。
今後augmentationするときはドメインシフトについても考えて使おうと思う。
最近の論文では新しい良い方法が出るとそれをスタンダードとして特に検証せず採用することが多いのでこういう論文も大切。
「既存研究でいいらしいから採用しました!!」じゃなくて「実際検証してよかったです!!」といったablationも欲しいということです。
過去の手法を見直して、現在の設計に合っているか考るのも大切。