[論文メモ] When Shift Operation Meets Vision Transformer: An Extremely Simple Alternative to Attention Mechanism

arxiv.org
AAAI2022

Vision Transformers(ViT)において、Attentionが必要なのかを調査した。
Swin TransformerのAttentionをShift operation(zero parameters)に変更したが大きな差は出なかった。

ViTが出てから様々な派生(Swin Transformerなど)が出た。それらはAttentionの強みであるglobal attentionをなくしlocal attentionにしたがむしろ性能は良い。
では一体ViTの何が重要なのか?というお気持ち。

手法

Swin TransformerのAttention BlockをShift operationに変更する(図1参照)。
f:id:Ninhydrin:20220209092932p:plain

Shift operationは結構古くに提案されたものでいくつか亜種がある。
今回採用するのはPartial shift operation(PSO)。
PSOはshiftするチャンネルの割合を予め決め、それに対して上下左右にshiftを実行する。
ここでは割合  \gamma = \frac{1}{12}で、上下左右なので実際はチャンネル Cのうち、 \frac{4}{12}Cがshiftすることになる。
shiftは単純で上下左右をそれぞれ1単位ずらす。1単位としたのはViTで、画像がパッチ化されているため。画像そのものに適用するなら1ピクセルになる。
残りの \frac{8}{12}Cチャンネルはそのまま恒等写像
アルゴリズム1を見ればPSOの仕組みはすぐわかるはず。
f:id:Ninhydrin:20220209094150p:plain

Swin TransformerをベースとしたPSOを使ったアーキテクチャをShiftViTとし、図2に全体像を示す。
f:id:Ninhydrin:20220209094345p:plain
チャンネル数 Cやブロックの繰り返し回数 N_iなどが違う3つのモデルで検証。
f:id:Ninhydrin:20220209094534p:plain

実験・結果

classification、semantic segmentation、object detectionで比較。
Swinに比べ大きな差はない。それどころか一部はSwinを凌駕する。
f:id:Ninhydrin:20220209094600p:plain

vs SOTA。大きく引けは取らない。
f:id:Ninhydrin:20220209094758p:plain
f:id:Ninhydrin:20220209094922p:plain

shiftに使うチャンネルの量。1/3ぐらいが良さげ
f:id:Ninhydrin:20220209095034p:plain

CNNの学習セッティングをViTのセッティングに徐々に変更。epochを増やしたときの影響がでかい。
f:id:Ninhydrin:20220209095131p:plain

所感

ViTの重要な部分はAttention以外の残りの部分にありそうという結論が述べられていた。
単純なshiftだけでこれだけ精度が出るのは驚き。
しかもshift operationはめちゃくちゃシンプルなので計算コストもパラメータも大きく削減できてとても嬉しい。
本当にViTのどこがパフォーマンスに影響しているのか気になる。
Convolutionの共有のフィルターパラメータだけでは流石に表現を獲得しにくく、CNNも間にMLP挟めばなんとかなるのでは?という気持ちになる。