[論文メモ] CONVOLUTIONAL XFORMERS FOR VISION

arxiv.org
github.com

linear attentionとconvolutionを組み合わせた低コスト高精度なConvolutional Xformers(CXV)を提案

Transformer(Attention)は広範囲を見ることができるが、シーケンス長の2乗の計算コストがかかるし、Visionタスクでは低解像度でもかなりのシーケンス長になりメモリコスト等も大きい。また学習には大量のデータも必要になる。

Convolutionは画像への帰納バイアスがあり少ないデータでも学習ができるが、その分受容野が狭く、広い範囲を見るには深いアーキテクチャにする必要がある。
そこでConvolutionとLinear Attentionを組み合わせることでconvolutionの機能バイアスを持ちつつ、低コストで広範囲を依存関係を解決できるモジュールを作成する。

手法

アーキテクチャ

提案するCXVのアーキテクチャの全体像は図1参照。
f:id:Ninhydrin:20220208092949p:plain

attentionの二乗の計算コストをへらすためにNyströmformerやPerformerで採用されたlinear attentionを採用。
これにより画像ピクセルの長いシーケンスを低コストで行える。

ピクセルの埋め込みにconvolution layerを使うと機能バイアスのおかげで学習データを大幅に減らせるという報告がある。
そこで始めの埋め込みはconvolutionで行う。カーネルサイズやストライドは環境のGPUサイズに依存。

Convolutional vision Transformer(CvT)ではTransformerのブロックにconvolutionを追加すると低コストでロバスト性の向上やパフォーマンス改善につながると報告。

CXVではlinear attentionの前にconvolutionを追加し、attentionへの機能バイアスとする。
convolutionの導入によりpositional encodingが不要になる。

layer normalization(LN)について。
LNはオリジナルtransformerのpost-normとViTのpre-normの2つがあり、それぞれforward時の分散やbackward時の勾配の大きさなどに影響する。
比較的浅いtransformer(≦6)のとき、pre-normはパフォーマンスが落ちるという報告もある。

CXVでは2つあるnormalizationを1つに減らし、その1つをconvolutionとattentionの間に追加する。

最適化

最適化には2つのoptimizerを用いる。
始めは収束の早いAdamWを用い、top-1 accuracyが収束(20epochで不変)したらSGDに切り替える。

実験・結果

データセットはCIFAR-10、CIFAR-100、Tiny ImageNet。比較対象のアーキテクチャはReNet-18やConvMixerなどなど。
提案手法のネーミングはCXVのXの部分を採用するLinear Attentionのものに。
NyströmformerはCNV、PerformerはCPV、Linear TransformerはCLTV。
その他の細かい設定や結果は論文参照。

f:id:Ninhydrin:20220208095813p:plain
f:id:Ninhydrin:20220208095904p:plain
f:id:Ninhydrin:20220208095956p:plain

所感

transformer blockにconvolutionを導入するのは最近はよくあるケースに感じる。
確かにコスパは良さそう。
optimizerの切り替えは自分も使っていたが、非常によいテクニック。
個人的にAdam系は収束は早いがもう少し伸びの余地のあるローカルミニマムに収束する印象。
(Momentum)SGDは収束は遅いが、アーキテクチャの一番最適なミニマムに収束する印象。