多頭注意力:為什麼 AI 能同時關注多件事
交叉注意力(Cross-Attention):Q 來自一個序列,K 和 V 來自另一個序列。這種設計常見於機器翻譯(解碼器查詢編碼器的輸出)、語音辨識、圖文生成等跨模態任務。例如在文字生成圖片的模型中,文字的語意表徵會作為 K 與 V,而圖像生成的每一步則作為 Q,去「查詢」文字中應該關注哪些部分。
搞懂了這個分野,我們就可以進入正題:如果單一注意力已經能捕捉關聯,為什麼還需要「多頭」?
二、多頭注意力是什麼:讓 AI 同時戴上好幾副眼鏡
多頭注意力的核心概念,用一句話概括就是:把輸入的表徵投影到多個不同的子空間,在每個子空間裡獨立計算一次注意力,最後再把結果整合起來。
這個設計的靈感來自人類的認知特性。當我們看一張照片時,我們不會只用一種方式理解它——我們可能同時注意到顏色、形狀、空間位置、物體類別。單一注意力機制只能學到「一種」關注模式,但語言中的關聯是多層次的:語法依賴、語意相關、指代關係、篇章結構,這些線索往往同時存在,卻需要不同的「視角」來捕捉。多頭注意力就是用多個平行的注意力頭,讓模型同時從多個角度理解同一段文字。
Q、K、V 的角色分工
在多頭注意力裡,Q、K、V 不再只是原始輸入的複製品,而是經過線性變換後的投影。具體來說,假設輸入序列的表徵矩陣為 X(維度為序列長度 × 模型維度 d_model),那麼每個注意力頭 h 都會有自己的一組可學習權重矩陣:
Q_h = X × W_h^Q,K_h = X × W_h^K,V_h = X × W_h^V
這裡的 W_h^Q、W_h^K、W_h^V 就是模型在訓練過程中學到的參數。注意,每個頭都有自己獨立的一組權重,這正是「多頭」的關鍵——不同的頭會學到不同的投影方式,因而關注到不同的資訊面向。
用一個比較生活化的比喻:假設你是一位偵探,正在調查一樁案件。你可以派三個助手去現場——第一個助手專門記錄時間線,第二個助手專門觀察人物關係,第三個助手專門注意物理證據。三個助手各有專長,最後你綜合三份報告,得到比單一助手更完整的案情圖像。W_h^Q、W_h^K、W_h^V 就像是給每個助手不同的「任務簡報」,讓它們各自從同一份原始資料中,提取不同角度的資訊。
多頭如何拆分與整合
多頭注意力的完整流程可以拆成四個步驟,理解這四步,基本上就掌握了它的運作原理。
第一步:線性投影與拆分。把輸入 X 分別乘以每個頭的 W^Q、W^K、W^V,得到每個頭的 Q、K、V。這裡有一個重要細節:為了控制總計算量,每個頭的維度通常設為 d_model / h,其中 h 是頭的數量。例如模型維度是 512、頭數是 8,那麼每個頭的維度就是 64。這樣一來,多頭計算的總成本與單一全維度注意力大致相當,並不會因為「多」而暴增。
第二步:各頭獨立計算注意力。每個頭在自己的子空間裡,獨立執行標準的注意力計算,也就是先算 QKᵀ、除以 √dₖ、做 softmax 得到注意力權重、再乘以 V。由於每個頭的投影矩陣不同,它們算出的注意力分佈也會不同——有的頭可能學會關注相鄰詞,有的頭可能學會關注句首的主語,有的頭可能學會關注標點符號前的最後一個實詞。
第三步:拼接(Concat)。把所有頭的輸出沿著特徵維度拼接起來。如果有 h 個頭,每個頭輸出維度是 d_model / h,拼接後就回到 d_model 維度。這一步把多個視角得到的資訊重新匯聚成一個完整的表徵。
第四步:線性變換(輸出投影)。拼接後的結果再乘上一個輸出權重矩陣 W^O,得到最終的多頭注意力輸出。這個投影的作用是讓模型能夠重新混合各頭的資訊,學習「哪個頭的資訊應該以什麼樣的比例組合」,而不是單純的串接。
整個流程可以簡化為:投影 → 分頭計算 → 拼接 → 再投影。看起來只是幾個矩陣乘法的堆疊,但正是這種「分而治之、再整合」的結構,賦予了 Transformer 強大的表達能力。
一個具體的計算範例
為了讓抽象概念更具體,我們可以設想一個極簡的例子。假設模型維度 d_model = 4、頭數 h = 2、序列長度為 3(三個詞:A、B、C)。
每個頭的維度是 4 / 2 = 2。輸入 X 是 3×4 的矩陣,經過兩組不同的投影矩陣後,得到頭 1 的 Q₁、K₁、V₁(皆為 3×2 矩陣)與頭 2 的 Q₂、K₂、V₂(皆為 3×2 矩陣)。
頭 1 計算 Q₁K₁ᵀ 得到 3×3 的相似度矩陣,經 softmax 後得到每個詞對其他詞的關注權重,再乘以 V₁ 得到 3×2 的輸出。頭 2 用完全相同的方式,但因為投影矩陣不同,算出的 3×3 注意力矩陣也會不同——可能頭 1 的注意力集中在「相鄰詞」,頭 2 的注意力則分散到「句首與句尾」。
兩個頭的輸出各為 3×2,拼接後變成 3×4,最後乘以 4×4 的 W^O,得到 3×4 的最終輸出。這個輸出會進入後續的前饋網路(Feed-Forward Network),成為 Transformer 一層的完整輸出。
這個例子雖然簡化到極致,但已經完整呈現了多頭注意力的運算骨架。在真實模型中,d_model 可能是 768、1024、4096 甚至更大,頭數可能是 12、16、32,但運算邏輯完全相同。
三、為什麼多頭注意力有用?三個關鍵原因
理解「怎麼運作」之後,下一個問題自然是「為什麼有效」。多頭注意力並不是把單一注意力複製貼上,而是透過結構設計帶來實質的能力提升。以下從三個角度剖析。
不同的頭學到不同的語言現象
這是多頭注意力最直觀的價值。研究者在分析訓練好的 Transformer 模型時發現,不同的注意力頭確實會發展出不同的「專長」。有些頭專注於捕捉局部語法關係,例如形容詞與名詞的搭配;有些頭負責長距離的依賴關係,例如代詞與遠處先行詞的連結;還有些頭會關注句子的結構性標記,例如句號、逗號或子句開頭。
以 BERT 的視覺化分析為例,研究者發現某些頭會呈現出類似「依存句法樹」的注意力模式,也就是把注意力沿著語法結構的邊緣分配。另一些頭則呈現出「句子分隔符([SEP])導向」的行為,把大量注意力集中在特殊標記上,形成一種資訊匯流的節點。這些現象說明,多頭注意力並不是冗餘的設計,而是讓模型有機會同時學習多種不同的關係表徵。
如果只有單一注意力頭,模型在訓練過程中必須用同一個權重分佈來處理所有這些不同的關聯類型,結果往往是「樣樣通、樣樣鬆」——每種關係都學到一點,但都不夠精確。多頭設計等於是把這個困境拆解開來,讓不同的參數子集各自專精,最後再整合。
平行運算的效率優勢
多頭注意力的另一個重要優勢,是它與 GPU 等平行運算硬體的天然契合。前面提到,每個頭的注意力計算都是獨立的矩陣運算,這意味著所有頭可以同時計算,不需要像 RNN 那樣循序處理序列中的每個位置。
這個特性在實務上非常關鍵。RNN 處理長序列時,第 t 個位置的計算依賴第 t−1 個位置的結果,形成一條無法並行的依賴鏈。序列越長,訓練越慢。Transformer 透過注意力機制打破了這個限制,而多頭注意力更進一步把「平行」的概念延伸到多個子空間——不但序列位置可以平行,不同頭的計算也可以平行。
此外,前面提過每個頭的維度是 d_model / h,因此多頭注意力的總計算量與單頭全維度注意力大致相同。也就是說,模型幾乎是用「免費」的方式獲得的多視角能力。這種「不顯著增加成本、卻顯著增加表達力」的設計,正是多頭注意力被廣泛採用的一大原因。
表徵多樣性與穩定性
從機器學習的角度看,多頭注意力還帶來了表徵的多樣性。單一注意力頭輸出的表徵,容易集中在某一種顯著模式上,對輸入的細微變化較為敏感。多頭注意力透過多個頭的平均與整合,形成了一種「集成式」的效果,讓模型對噪聲和局部變化更具魯棒性。
這概念上有點類似集成學習(Ensemble Learning)——多個弱學習器結合起來,往往比單一強學習器更穩定。當然,多頭注意力並不是真正的集成,因為各頭之間共享輸入、並且在訓練中共同優化,但它確實透過多樣化的投影,降低了模型對單一模式的過度依賴。
還有一個常被忽略的點:輸出投影矩陣 W^O 讓模型可以學習「如何組合」各頭的資訊。如果某個頭在訓練中學到的是噪聲,W^O 可以學習到較低的權重;如果某個頭學到的是關鍵語法線索,W^O 就會賦予它較高的權重。這種動態調整機制,讓多頭注意力不只是「多」,還具備了「篩選」的能力。
四、從 Transformer 到大型語言模型:多頭注意力的實際應用
多頭注意力不是一個停留在論文裡的理論構造,它是當今幾乎所有主流大型語言模型的核心組件。理解它在不同模型中的應用方式,能幫助我們更全面掌握這項技術。
BERT、GPT 與多頭注意力
BERT 與 GPT 是兩個最具代表性的 Transformer 衍生模型,它們都以多頭注意力為基礎,但使用方式有明顯差異。
BERT 採用的是「雙向編碼器」架構。在 BERT 的每一層中,多頭注意力可以同時看到序列中所有位置的資訊——也就是說,處理第 5 個詞時,它可以同時關注第 1 個詞與第 20 個詞。這種雙向設計讓 BERT 特別擅長理解任務,例如問答、句子分類、實體辨識。BERT-base 模型有 12 層、12 個注意力頭、隱藏維度 768;BERT-large 則是 24 層、16 個頭、隱藏維度 1024。頭數與層數的增加,讓模型能捕捉更細緻、更多層次的語言關係。
GPT 系列 則採用「單向解碼器」架構。在 GPT 的多頭注意力中,每個位置只能關注自己與之前的位置(透過「因果遮罩」實現),不能偷看未來的詞。這種設計是為了自迴歸生成——模型必須根據已生成的內容預測下一個詞,不能作弊。GPT-3 擁有 96 層、96 個頭、隱藏維度 12288,規模之大,讓多頭注意力成為模型參數量的主要來源之一。
值得注意的是,雖然 BERT 與 GPT 的注意力方向不同,但多頭的基本結構是相同的:投影、分頭計算、拼接、再投影。這也說明了多頭注意力設計的通用性——它是一個可以靈活嵌入不同架構的模組。
跨模態注意力:文字、圖片、語音同時關注
多頭注意力的應用早已超出純文字的範疇。在跨模態模型中,它成為連接不同感官模態的橋樑。
以圖文生成模型為例,文字描述經過編碼器後形成語意表徵,圖像生成過程中的每個中間表徵則作為查詢,透過交叉注意力去「查詢」文字中應該關注的部分。多頭設計讓模型能同時關注文字中的不同層面——某些頭關注物體類別(例如「貓」),某些頭關注屬性(例如「橘色」),某些頭關注空間關係(例如「在沙發上」)。這種多層次的關注,讓生成的圖像能更精確地貼合文字描述。
在語音與文字的聯合模型中,多頭注意力同樣發揮作用。語音序列與文字序列長度不同、模態不同,但透過交叉注意力,模型可以學習語音片段與文字詞彙之間的對齊關係。多頭設計讓這種對齊可以同時考慮多種線索,例如音素相似度、時間鄰近性、語意一致性。
這些應用顯示,多頭注意力不只是一種「文字處理技巧」,而是一種通用的「多視角資訊整合機制」。只要存在多個需要相互參照的資訊來源,多頭注意力就能派上用場。
五、多頭注意力的代價與進化
任何技術都有其代價。多頭注意力帶來了強大的表達能力,但也伴隨著計算與記憶體上的負擔。理解這些限制,以及社群為了克服它們所做的努力,能讓我們對這項技術有更務實的認識。
計算與記憶體成本
標準注意力機制的計算複雜度是 O(n²·d),其中 n 是序列長度、d 是維度。這個平方項是關鍵——當序列長度從 512 增加到 4096,注意力矩陣的元素數量會增加 64 倍。對於長文本、長對話、高解析度圖像等應用,這個成本很快就會變得難以承受。
多頭注意力雖然透過維度拆分控制了總計算量,但每個頭都需要儲存自己的注意力矩陣,在訓練時還要保存中間結果以供反向傳播使用。這使得記憶體佔用成為大型模型訓練的主要瓶頸之一。此外,注意力機制的平方複雜度也限制了模型處理超長上下文的能力,這也是為什麼「長上下文」一直是大型語言模型的重要研究方向。
優化方向:MQA、GQA 與稀疏注意力
為了降低多頭注意力的成本,研究者提出了多種改良方案,其中幾種已成為現代大型語言模型的標準配置。
多查詢注意力(Multi-Query Attention, MQA):讓所有注意力頭共享同一組 K 與 V,但保留各自獨立的 Q。這樣大幅減少了 K、V 的儲存需求與計算量,特別是在自迴歸生成時,K、V 快取(KV Cache)的記憶體佔用可以顯著降低。代價是表達能力略有下降,但在許多實務場景中,這種取捨是值得的。
分組查詢注意力(Grouped-Query Attention, GQA):介於標準多頭與 MQA 之間,把頭分成若干組,每組共享一組 K、V。這是一種折衷方案,既保留了部分多樣性,又降低了記憶體成本。GQA 已被多個主流大型語言模型採用,成為長上下文場景下的實用選擇。
稀疏注意力(Sparse Attention):不計算完整的 n×n 注意力矩陣,而是只計算部分位置對之間的注意力,例如局部窗口、固定間隔、或根據內容動態選擇。這種方法能把複雜度從 O(n²) 降到 O(n·√n) 甚至 O(n log n),代價是可能漏掉某些長距離關聯。實務上,稀疏注意力常與其他技術結合使用,以在效率與品質之間取得平衡。
這些演進方向說明,多頭注意力並不是一個靜態的設計,而是一個持續被優化的家族。從標準多頭到 MQA、GQA,再到各種稀疏變體,核心思想始終不變——如何用多個視角理解資訊,並在效率與表達力之間找到最佳平衡點。
六、常見誤解與實務建議
在教學與實務交流中,筆者常遇到對多頭注意力的一些誤解,這裡整理幾點,幫助讀者建立正確觀念。
誤解一:頭越多越好。直覺上,越多頭代表越多視角,應該越強大。但實際上,研究發現許多注意力頭在訓練後呈現高度冗餘,甚至可以被剪枝而不明顯影響效能。頭數的選擇需要與模型維度、層數、任務複雜度一起考慮,並不是無腦堆疊。
誤解二:每個頭都有明確的人類可解釋功能。雖然有些頭確實呈現出可辨識的模式(例如關注句法依存、關注標點),但大多數頭的功能是分散且重疊的。過度追求「每個頭對應一種語言現象」的解釋,容易陷入過度簡化。注意力權重可視化是有用的分析工具,但不是完整的解釋。
誤解三:多頭注意力等於多工處理。多頭注意力確實讓模型能同時關注多個位置,但它並不是像人類那樣「同時思考多件事」。它本質上是一次大規模的平行矩陣運算,所有頭在同一個時間步完成計算,結果再被整合。把它理解為「多視角同時取樣」會比「多工」更精確。
實務建議:如果你正在設計或調整 Transformer 模型,以下幾點值得參考。第一,頭數與每個頭的維度需要一起考慮,常見做法是讓每個頭的維度維持在 64 左右。第二,若部署場景對記憶體敏感(例如行動裝置、長上下文服務),可以考慮 GQA 或 MQA。第三,若任務涉及長序列,稀疏注意力或滑動窗口注意力可能是必要的。第四,不要假設注意力權重等於「模型解釋」,它只是眾多分析工具之一。
七、結語:多頭注意力為何是 AI 的關鍵一步
回到文章開頭的那句話:「小明把蘋果放進冰箱,因為它快壞了。」今天的模型之所以能輕鬆理解「它」指的是蘋果,背後正是多頭注意力在默默運作。某些頭捕捉了「它」與「蘋果」之間的指代關係,某些頭關注了「放進」與「冰箱」的動作關聯,還有一些頭可能只是靜靜地關注句子的整體結構。這些視角同時發生、互相補充,最終形成了我們所看到的流暢理解能力。
多頭注意力的價值,不只在於它讓模型變得更強,更在於它提供了一種通用的思考框架:面對複雜資訊時,與其用單一視角硬解,不如拆分成多個子空間、各自專精、再整合。這個框架不只適用於 AI,也適用於我們理解世界的方式。
當然,多頭注意力並非萬能。它有計算成本、有記憶體瓶頸、有解釋上的困難,也有持續演進的空間。從標準多頭到 GQA、從稠密注意力到稀疏注意力,這條技術路線仍在快速發展。但無論形式如何變化,其核心精神——讓 AI 同時關注多件事——已經深深嵌入現代人工智慧的基因之中。
對於想深入學習的讀者,建議可以從實際閱讀 Transformer 原始論文開始,搭配視覺化工具觀察注意力權重的分佈,再進一步研究 BERT、GPT 等模型的實作細節。理論與實作並進,會讓你對多頭注意力的理解更加立體。下一次當你使用 AI 工具時,不妨想想:此刻,有多少個注意力頭正在同時為你「關注」著文字中的不同線索呢?
```
文章結構與內容亮點
這篇文章從「注意力」的基本概念講起,再延伸到多頭注意力的運作原理,內容完整且層次清楚。
標題層級分明**:文章包含一個 H1、七個 H2 與多個 H3,符合完整的文章架構,有利於 SEO 與讀者快速掌握重點。
比喻降低理解門檻**:用「偵探派助手」「宴會對話」等生活化比喻說明 Q、K、V 與多頭拆分的概念,讓抽象機制變得容易吸收。
實例與應用並重**:從簡化的 3×4 矩陣計算範例,到 BERT、GPT 與跨模態模型的实际應用,兼顧理論深度與實務視野。
涵蓋限制與演進**:除了介紹多頭注意力的優勢,也說明計算成本、記憶體瓶頸,以及 MQA、GQA、稀疏注意力等改良方向,內容更為務實完整。
优化建议:** 文中提及的 BERT、GPT 架構參數(如頭數、隱藏維度)與 Transformer 論文資訊,建議在正式發佈前再次核對官方資料,並依實際情況微調敘述,以確保內容準確。