比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

豐色 發自 凹非寺

量子位 | 公眾號 QbitAI

儘管Transformer已經開始在諸多視覺任務上“大展身手”,但還有一個問題。

那就是在處理

大影象

上計算比較費勁。

比如面對一個1080p的圖時,它會有

超過60%的計算量

都耗費在了建立和應用注意矩陣上。

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

究其原因,主要是因為自注意力頭的數量是token的平方,而token的數量又與圖形大小呈二次方的關係。

那能怎麼辦呢?

好訊息是——

現在Meta搗鼓出了一種

多頭注意力

操作方法,可以做到足足

比標準注意力快197倍

而且在提高計算速度的同時,它也不會犧牲準確率,有時甚至還能將準確率提高1-2個點。

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

具體怎麼回事兒?

思路來源一個“矛盾點”

這個方法名叫

Hydra Attention

,主要針對Vision Transformer。

(“Hydra”有“九頭蛇”之義,來自希臘神話。)

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

Hydra Attention的思路源於線性注意力中的一種

有點矛盾

的點:

使用標準的多頭自注意力,再向模型中新增更多頭可以保持計算量不變。

而線上性注意力中改變操作順序後,增加更多的頭實際上還會降低層的計算成本。

於是,作者透過將模型中的

注意力頭數量設定成特徵

(feature)

,創建出一個token和feature的計算都是線性的注意力模組,從而把上述特性發揮到極致。

具體來說:

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

當標準自注意力頭是token數的平方

(O(T2D))

時,透過使用可分解核

(decomposable kernel)

,我們重新安排操作順序,讓注意力頭的數量變為特徵D的平方。

然後再使用Hydra Trick,最大化注意力頭H的數量,讓H=D,最終就可以化為一個在空間和時間上的O

(TD)

簡化操作了。

其中,Hydra Trick的依據見下圖:

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

作者在ImageNet-1k上訓練了具有不同頭數的DeiT-B模型,包括使用標準自注意力

(藍線,基於softmax)

和使用多頭線性注意

(紅線,基於餘弦相似性)

的。

前者在H>96、後者在H<3時出現記憶體不足的情況。

當他們往模型中新增更多的頭時,Softmax注意力模型的準確性似乎會崩潰,而多頭線性注意力仍可以保持一致,因此就有了上述操作。

(需要注意的是,H必須除以D=768。)

速度快197倍,準確率還能更上層樓

來看看Hydra Attention交出的成績單。

可以看到,Hydra注意力比標準注意力快197倍

(T=197)

隨著影象大小的增加,它顯著提高了模型的FLOP數,在建立和應用注意力矩陣所佔的計算量上也

始終只有0.02%

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

除此之外,作者發現,使用不同的核心,Hydra Attention還能讓模型的準確率提高大約兩個百分點。

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

或者用Hydra Attention替換特定的注意力層,也能將模型的精度在ImageNet上提高1%或者與基線維持不變。

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

當然,最多可替換8層。

另外,作者表示,這個方法應該可以擴充套件到NLP領域,不過他們還沒試。

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

作者介紹

這篇成果已入選

ECCV 2022 Workshop

作者一共5位,分別來自Meta AI和佐治亞理工學院。

比標準Attention快197倍!Meta推出多頭注意力機制“九頭蛇”

其中華人3名,分別是:

Cheng-Yang Fu,本碩畢業於清華大學,博士畢業於美國北卡羅來納大學教堂山分校,現在是Meta計算機視覺方面的研究科學家。

Xiaoliang Dai,本科畢業於北大,博士畢業於普林斯頓大學,同就職於Meta。

Peizhao Zhang,本碩畢業於中山大學,博士於美國德克薩斯A&M大學,已在Meta工作五年。

論文地址:

https://arxiv。org/abs/2209。07484

參考連結:

https://www。reddit。com/r/MachineLearning/comments/xgqwvu/r_hydra_attention_efficient_attention_with_many/

— 完 —

量子位 QbitAI · 頭條號簽約