[論文メモ] Hydra Attention: Efficient Attention with Many Heads
CADL2022
効率的なmulti-head attentionの提案
transformerのattentionはトークンの数の2乗オーダーの計算コストを必要とする。
そのためVision Transformer(ViT)などで高解像度の画像を扱うとトークン数が膨大になり、計算のほとんどをattention matrixの生成と適用に費やすことになる。
これをなんとかしたいというお気持ち。
提案手法
一般的なsoftmax self-attentionは以下の式(1)
トークン数を、特徴量の次元数をとすると計算量は。
softmaxをとの類似度を図る関数として一般化したのが以下の式
非線形関数でを分解する。
を先に計算することで、計算量はになる。
これが1つのヘッドに相当。計算量はTについて線形になったが一般になのでまだ高コスト。
基本self-attentionはmulti-headで扱われる(MSA)。
ヘッド数をは大体6~16で、の特徴量をに分割して行う。
コレがmulti-head linear attention(MLA)
multi-headはもとのattentionと計算量は変わらないが、先程のように非線形関数で分解することで計算量をに抑えられる。
なのでヘッド数を増やすと高速化できるが精度とのトレードオフで、実際いくつくらいまで増やしていいのか。
調査のためImageNet-1kをDeiT-Bで学習した結果が以下の図2。横軸が。
MSAはで、MLAはでメモリ不足。
MLAはでもある程度精度を保っているが、これはでただのスカラ特徴。
類似度関数としてsoftmaxを使わなければをスケールアップできそう(ここではcosine similarityを採用)。
そこでとした hydra trick を導入する。
なお、
をアダマール積として
は全体に適用することに注意(は列ベクトルなので)。
HydraはMSAとは全く異なる動作で、すべてのトークンを集約したグローバルな特徴ベクトルに対してでゲーティングしている。
計算量は。
その他のの手法でAttention-Free TransformerやPloyNLなどがあるが、Hydra Attentionはこれらの一般化と捉えることができる(論文参照)。
実験・結果
アーキテクチャは基本的にDeiT-B、データセットはImageNet-1k。
としてcosine similarityを採用(はL2 normになる)。
cosine similarity以外について調査した結果が表1。
cosine similarityが最もよく、MSAのそもそもの性質を変化させてるのが原因と考えられる。
MSAは重みの和が1になるようになっているがそれらがそもそも望ましい性質では無いのかもしれない。
Hydra Attentionでの置き換え位置の調査。
すべてを置き換えるのではなく一部を置き換えた方がいいのではというお気持ち(よくあるグローバルを扱うAttention系は後半の層を置き換えると良い的なのが多い)。
Hydra Attentionはグローバルな情報を扱うためその可能性は高い。
実験結果が図4。
はじめの層の置き換え(forward)は精度が低下しているが、後ろの層の置き換え(Backward)は精度が1%近い改善もあった。
既存手法との比較
他のの手法に比べ精度低下が少ない。
後半2層の置き換えは速度向上は少ないが精度が向上。
所感
ヒドラという名前がセンスがある。
すべてを置き換えると精度に影響が出るが、少し利用するなら精度・速度両方に恩恵があるそうなので良さそう。
実装も手軽そうなのも良い。
ただViTによる画像分類の結果だけなので他のタスクでうまくいくのかは気になるところ。