視覺 Transformer

自注意力(self-attention)

自注意力是一種機制,讓序列裡的每個詞元都能直接諮詢其他所有詞元,並依照它認為相關的內容來更新自己。想像一張圓桌會議,每個圖塊都能向全場拋出一個問題,按相關程度加權地聆聽每個人的回答,再據此改寫自己的筆記。「自」的意思是:問題、被比對的候選對象、以及取回的資訊,全都來自同一條序列——是影像在跟自己對話。這正是 Transformer 從第一層起就擁有全域感受野的原因:某個角落的圖塊可以立刻被對角另一端的圖塊影響。

它透過每個詞元的三種學到的「視角」來運作。每個詞元被投影成一個查詢(query,我在找什麼)、一個鍵(key,我提供什麼來被比對)、一個值(value,被比對中之後我會交出的資訊)。對某個給定的詞元,你拿它的查詢去比對所有詞元的鍵,得到對每個詞元的相關性分數,用 softmax 把這些分數正規化成權重(讓它們為正、加總為一),再對所有值取加權平均。這個加權平均就是該詞元的新表徵——一份摻和了眾人資訊、由最相關者主導的混合物。

兩個性質界定了它的特色。第一,它是基於內容且動態的:權重是在執行時從資料算出來的,所以哪些圖塊與哪些圖塊對話,會因每張影像而異,這與卷積那固定的感受窗不同。第二,它是置換等變的:在沒有位置編碼時,重排輸入只會把輸出同樣重排,這正是位置必須被注入的原因。代價是二次方成本——讓每個詞元與其他每個詞元比對,相對於詞元數 N 是 O(N²)——這正是長序列與高解析度影像的核心擴展之痛。

自注意力與交叉注意力(cross-attention)相對:後者的查詢來自一條序列,而鍵/值來自另一條(例如解碼器去注意編碼器,或文字提示去注意影像特徵)。兩者底層的算術相同;「自」只是替「三個投影都讀同一個輸入」這個情形命名。在視覺 Transformer 裡,自注意力是唯一會跨空間位置混合資訊的運算——接在它後面的 MLP 對每個詞元獨立作業。

在一張「草地上的狗」的圖片裡,某個「狗耳朵」圖塊的查詢,對其他狗圖塊的鍵得到高分、對草地圖塊得到低分,因此它更新後的向量主要摻和了狗的資訊——注意力在沒有被告知物體位置的情況下,把物體聚攏在一起。

又称
self attention自注意力intra-attention