多頭注意力(multi-head attention)
多頭注意力並行地跑好幾組自注意力計算,再把它們的結果合併。直覺是:單一個注意力模式一次只能表達一種關係——一個比方說「依顏色分群」的權重,無法同時依形狀或依空間鄰近度分群。藉由給模型好幾個獨立的「頭(head)」,每個頭都能自由學自己的查詢/鍵/值投影,你就讓它一次注意好幾種不同的關係:某個頭也許追蹤紋理,另一個追蹤長程版面,再一個追蹤局部邊緣。這些輸出接著被組合起來,讓下一層同時看到所有這些視角。
在機制上,模型維度 D 被切分到 h 個頭。每個頭有自己較小的投影,把詞元映射到維度 d_k = D/h 的查詢、鍵與值,在那個子空間內執行完整的縮放點積注意力,並對每個詞元產生一個 d_k 維的輸出。h 個頭的輸出被串接回寬度 D,再通過一個最終的學習式輸出投影,讓各頭得以相互混合。關鍵在於:因為每個頭在 D/h 維裡作業,總計算量與參數量大致與一個全寬注意力相同——你幾乎是免費取得了多樣性,靠的是「切分」而非「增加」容量。
切分成子空間正是多樣性得以成立的原因:每個頭的投影挑出特徵空間裡不同的切片來進行比對,於是各頭能各司其職。對訓練後的 Transformer 所做的研究發現:有的頭表現得像邊緣偵測器、有的頭專注於類別詞元、有的頭去複製鄰近位置,還有許多頭其實是冗餘的、可被修剪而幾乎不掉效能——這說明收益是真的,但分布並不均勻。
尤其在視覺裡,多頭自注意力(MHSA)是每個 Transformer 編碼器區塊的空間混合核心;頭的數量(標準 ViT 常是 6 到 16)是一個調校旋鈕,在表徵多樣性與每頭維度之間取捨。頭太少,沒充分用上「並行關係」這個點子;頭太多,又會讓每個頭維度過低,無法做有意義的比對。
頭愈多不會自動愈好。每個頭仍需有足夠的維度(d_k = D/h)來形成有意義的查詢-鍵比對;把 h 推得太高會讓每個頭都餓著。而且許多訓練後的頭是可修剪的,所以頭數是一種容量選擇,並不保證會學到各自不同的角色。