搜尋意圖: 如果你在找「多頭注意力機制 是什麼」或「多頭注意力機制 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: Transformer 的核心元件,透過多組平行的注意力運算同時捕捉輸入序列在不同子空間中的依賴關係。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
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 的計算步驟:
- 對每個頭 i,分別計算:headᵢ = Attention(Q × Wqᵢ, K × Wkᵢ, V × Wvᵢ)
- 串接所有頭的輸出:Concat(head₁, head₂, ..., headₕ)
- 通過最終線性投影: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,不存在長距離梯度消失問題。
常見問題
注意力頭的數量(number of heads)對模型性能有什麼影響?
注意力頭的數量影響模型捕捉不同類型依賴關係的能力。在固定模型維度(dmodel)的前提下,頭數越多,每個頭的子空間維度(dₖ = dmodel / h)越小,每個頭能表達的資訊量也越有限,但多頭能並行捕捉更多元的模式。研究表明,並非頭數越多越好:有實驗顯示刪除某些頭對模型性能影響很小甚至有益(這些頭可能是冗餘的)。實務上,GPT-2 小型版本使用 12 頭,大型版本使用 25 頭;BERT-Base 使用 12 頭,BERT-Large 使用 16 頭。頭數通常是一個需要根據模型規模和任務特性調整的超參數,建議參考同類規模的基準模型設定,而非盲目增加。
Flash Attention 是什麼?它怎麼加速 Multi-Head Attention?
Flash Attention 是由 Tri Dao 等人於 2022 年提出的高效注意力實作方法,核心思想是重新設計注意力矩陣的計算順序以最佳化 GPU 記憶體存取,數學結果與標準注意力完全相同,但實際執行速度大幅提升(測試顯示在長序列上可提速 2 至 4 倍)。標準注意力計算中,需要在 GPU 的 HBM(高頻寬記憶體)和 SRAM(靜態隨機存取記憶體)之間進行大量讀寫,而 SRAM 雖然速度快但容量有限(數 MB),HBM 雖容量大但延遲高。Flash Attention 將計算拆分成適合 SRAM 容量的小塊(tiling),盡量在快速的 SRAM 中完成計算,減少往返 HBM 的頻率。Flash Attention 2 和 3 進一步最佳化並行策略,已成為大多數主流訓練框架的標準元件。
不同注意力頭實際上學到了什麼?
研究人員透過視覺化注意力權重,發現不同的注意力頭確實學到了結構不同的語言模式。部分頭專注於相鄰詞的語法關係(如形容詞與名詞的搭配);某些頭學習長距離的指代消解(代名詞指向哪個名詞);另一些頭關注動詞與其論元之間的關係;還有頭幾乎只關注特定的句法結構(如介詞短語的附著)。然而,也有研究表明許多頭的功能是冗餘的,在大型模型中,相當比例的頭可以被剪枝掉而對性能影響有限。目前對注意力頭行為的解讀更多是描述性的觀察,而非嚴格的因果分析,注意力權重不能直接等同於模型的推理依據,這也是 NLP 可解釋性研究的持續課題。