多頭注意力機制 是什麼?

Multi-Head Attention:多頭注意力機制 的完整解釋

Transformer 的核心元件,透過多組平行的注意力運算同時捕捉輸入序列在不同子空間中的依賴關係。

Multi-Head Attention(多頭注意力機制)由 Vaswani 等人在 2017 年論文《Attention Is All You Need》中提出,是 Transformer 架構取代 RNN 的關鍵設計,也是現代大型語言模型(GPT、BERT、T5 等)的核心建構塊。

單頭注意力的基礎

注意力機制的本質是:對一個查詢(Query),計算它與一組鍵(Key)的相似度,再以此相似度作為權重,對對應的值(Value)做加權求和。數學表示:

Attention(Q, K, V) = Softmax(QKᵀ / √dₖ) × V

其中 √dₖ 是縮放因子,防止點積值過大導致 Softmax 梯度消失。Q、K、V 是輸入序列 X 透過三個不同線性投影矩陣(Wq、Wk、Wv)變換得到的。

多頭的設計動機

單一注意力頭只能在一個子空間中計算注意力,表達能力有限。多頭設計讓模型能同時:

  • 捕捉不同距離(短距/長距)的依賴關係
  • 關注不同語義層次(詞彙、語法、語義)
  • 在不同位置的子空間中獨立學習

實驗觀察發現,不同注意力頭確實學習到不同類型的語言特徵,例如某些頭專注於指代解析,某些頭學習句法結構。

數學形式

Multi-Head Attention 的計算步驟:

  1. 對每個頭 i,分別計算:headᵢ = Attention(Q × Wqᵢ, K × Wkᵢ, V × Wvᵢ)
  2. 串接所有頭的輸出:Concat(head₁, head₂, ..., headₕ)
  3. 通過最終線性投影:MultiHead(Q, K, V) = Concat(...) × Wₒ

通常 dmodel 維度的模型分為 h 個頭,每個頭的維度為 dₖ = dmodel / h,因此總計算量與單頭相近,但表達能力大幅提升。

Transformer 架構中的角色

Multi-Head Attention 在 Transformer 中以三種形式出現:

自注意力(Self-Attention):Q、K、V 都來自同一序列,讓每個位置能關注序列中的其他位置,捕捉上下文依賴。

遮蔽自注意力(Masked Self-Attention):用於解碼器,透過遮蔽未來位置防止資訊洩漏,確保每個位置只能看到之前的詞。

交叉注意力(Cross-Attention):編碼器-解碼器架構中,Q 來自解碼器,K 和 V 來自編碼器,讓解碼器在生成每個輸出詞時能「查看」整個輸入序列。

計算複雜度

自注意力的時間複雜度為 O(n² × d),n 為序列長度,d 為模型維度。這意味著序列越長,計算成本呈二次方增長,是處理超長文本的主要瓶頸。為此,研究者提出了多種高效注意力變體:

  • Sparse Attention:只計算部分位置對之間的注意力
  • Flash Attention:透過重新設計記憶體存取模式加速計算,不改變數學結果
  • Linear Attention:將複雜度降至 O(n)
  • Sliding Window Attention:只關注局部窗口(Longformer 採用)

與 RNN 的根本差異

RNN 處理序列時必須逐步順序計算,無法並行,且長距離依賴容易因梯度消失而丟失。Multi-Head Attention 能一次計算序列中所有位置對之間的關係,高度可並行(適合 GPU 加速),且任意兩個位置的路徑長度始終為 1,不存在長距離梯度消失問題。

常見問題