[論文メモ] 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参照)。
Shift operationは結構古くに提案されたものでいくつか亜種がある。
今回採用するのはPartial shift operation(PSO)。
PSOはshiftするチャンネルの割合を予め決め、それに対して上下左右にshiftを実行する。
ここでは割合 で、上下左右なので実際はチャンネルのうち、がshiftすることになる。
shiftは単純で上下左右をそれぞれ1単位ずらす。1単位としたのはViTで、画像がパッチ化されているため。画像そのものに適用するなら1ピクセルになる。
残りのチャンネルはそのまま恒等写像。
アルゴリズム1を見ればPSOの仕組みはすぐわかるはず。
Swin TransformerをベースとしたPSOを使ったアーキテクチャをShiftViTとし、図2に全体像を示す。
チャンネル数やブロックの繰り返し回数などが違う3つのモデルで検証。
実験・結果
classification、semantic segmentation、object detectionで比較。
Swinに比べ大きな差はない。それどころか一部はSwinを凌駕する。
vs SOTA。大きく引けは取らない。
shiftに使うチャンネルの量。1/3ぐらいが良さげ
CNNの学習セッティングをViTのセッティングに徐々に変更。epochを増やしたときの影響がでかい。
所感
ViTの重要な部分はAttention以外の残りの部分にありそうという結論が述べられていた。
単純なshiftだけでこれだけ精度が出るのは驚き。
しかもshift operationはめちゃくちゃシンプルなので計算コストもパラメータも大きく削減できてとても嬉しい。
本当にViTのどこがパフォーマンスに影響しているのか気になる。
Convolutionの共有のフィルターパラメータだけでは流石に表現を獲得しにくく、CNNも間にMLP挟めばなんとかなるのでは?という気持ちになる。