Transformer 的心臟:多頭注意力與 FFN

從單頭注意力的極限出發,理解多頭注意力、前饋神經網路與多層堆疊如何構築深層語言理解。

Transformer 的心臟:多頭注意力與 FFN

上一篇我們拆解了注意力機制的核心:QKV、Mask 與縮放點積。
但你有沒有想過:如果只有「一個」注意力頭,模型是不是只能從單一角度理解句子?
語言同時包含語法、語意、指代、修辭等多重關係,單一視角顯然不夠。

這一篇,我們要進入 Transformer 的心臟:多頭注意力(Multi-Head Attention)前饋神經網路(Feed-Forward Network, FFN),並看看它們如何透過多層堆疊,構築出深層的語言理解能力。

Multi-Head Attention → FFN → Stacked Layers

一、單頭注意力的極限

在上一篇文章中,我們學會了縮放點積注意力:

[ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V ]

這個機制讓每個詞能根據 Query,去跟所有詞的 Key 比對,再對 Value 加權求和。
但問題是:一組 QKV 只能捕捉一種關係

例如,當模型處理「小明把書放在桌上,因為它太重了」時:

  • 一個注意力頭可能關注「它」與「書」的指代關係。
  • 但「小明」與「放」的主詞動詞關係呢?
  • 「書」與「桌上」的地點關係呢?
  • 「太重」與「書」的屬性關係呢?

這些不同的關係,很難用單一組注意力權重同時表達。
就像你只用一台攝影機拍一個場景,很難同時捕捉主角特寫、遠景構圖與光線氛圍。

所以,我們需要多個注意力頭。

二、多頭注意力:多個鏡頭同時觀察

多頭注意力的設計靈感,就像多個攝影鏡頭同時拍攝同一個場景:

  • 有的鏡頭聚焦於主體,捕捉主詞與動詞的關係。
  • 有的鏡頭關注地點,捕捉位置與事件的關聯。
  • 有的鏡頭感知氛圍,捕捉形容詞與名詞的情感色彩。
  • 有的鏡頭負責遠距離依賴,把相隔很遠的詞連起來。

具體作法是:把原本的 Q、K、V 分別投影到多個較低維度的子空間,每個子空間稱為一個「頭」。
每個頭獨立執行一次縮放點積注意力,最後把所有頭的輸出拼接起來,再經過一個輸出權重矩陣整合。

公式如下:

[ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O ]

其中每個頭為:

[ \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) ]

假設模型維度是 (d_{\text{model}}),注意力頭數是 (h),則每個頭的維度通常設為:

[ d_k = d_v = \frac{d_{\text{model}}}{h} ]

這樣做的好處是:總計算量與單頭注意力相近,但模型能同時從多個角度理解語境。

Multiple Heads → Concat → Output Weight

三、為什麼多頭有效?

多頭注意力並不是簡單地把同一個計算重複多次。
因為每個頭有自己獨立的 (W_i^Q)、(W_i^K)、(W_i^V),它們會學到不同的關注模式。

在訓練完成後,研究者常觀察到:

  • 某些頭專注於語法關係,例如主詞與動詞的搭配。
  • 某些頭專注於指代消解,例如「他」指的是誰。
  • 某些頭專注於局部順序,例如相鄰詞的關係。
  • 某些頭專注於長距離依賴,例如句首與句尾的呼應。

這讓模型能同時獲得多種角度的語意理解,而不是被迫用單一權重表達所有關係。
多頭注意力因此成為 Transformer 表達能力的重要來源。

四、前饋神經網路(FFN):位置獨立的特徵加工

如果說注意力機制負責「詞與詞之間的關係建模」,那麼 FFN 就負責「對每個位置的向量獨立進行非線性變換」。

在 Transformer 的每一層中,注意力子層之後都會接一個 FFN。
它的結構很簡單,包含兩個全連接層:

  1. 升維:將向量投射到一個高維空間,通常為原始維度的 4 倍。
  2. 非線性激活:例如 ReLU 或 GELU。
  3. 還原:透過第二個全連接層,將向量還原回原始維度。

公式可以寫成:

[ \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 ]

這裡的關鍵是:

  • 它不改變向量維度,輸出尺寸與輸入一致。
  • 它對每個位置獨立計算,不像注意力會混合不同位置的資訊。
  • 它引入非線性,讓模型能學習更複雜的特徵組合。

你可以把 FFN 理解成一種「特徵萃取器」:
注意力層先篩選出哪些資訊重要,FFN 再對這些資訊進行深度加工,提煉出更高層次的特徵。

五、多層堆疊:從語法到抽象語義

Transformer 的深度,來自於將「多頭注意力 + FFN」這個組合反覆堆疊成多層網路。
每一層都包含:

  • 一個多頭注意力子層
  • 一個 FFN 子層
  • 殘差連接與層正規化

這種逐層堆疊的架構,具有層級化的特徵提取能力:

  • 底層:學習基礎詞義、詞性、基本語法結構。
  • 中層:開始捕捉短語與片語的組合語意。
  • 高層:提煉抽象語義,例如篇章主題、情感傾向、意圖推斷。

這就像人類閱讀時,先認字,再理解詞組,最後掌握整篇文章的含義。
每一層都在前一層的基礎上,建構更抽象、更全局的理解。

Bottom → Mid → Top (Abstract Semantics)

這種設計也帶來了強大的遷移能力。
我們可以先用大量文本預訓練一個多層 Transformer,再透過微調(Fine-Tuning),將它適配到各種下游任務,例如文本分類、問答系統、機器翻譯等。

六、殘差連接與層正規化:讓深層網路可以訓練

在每一層中,注意力子層和 FFN 子層外面都包著殘差連接(Residual Connection)層正規化(Layer Normalization)

可以簡化表示為:

[ \text{Output} = \text{LayerNorm}(x + \text{Sublayer}(x)) ]

  • 殘差連接:建立一條捷徑,讓梯度能有效回流到淺層,防止梯度消失,使訓練極深層網路成為可能。
  • 層正規化:穩定每一層的數值分布,讓訓練更平順。

這些技術我們之後會再專文深入,但現在你先知道:
沒有它們,深層 Transformer 很難穩定訓練。

七、總結:三大組件各司其職

Transformer 的核心可以濃縮成這樣:

  • 多頭注意力:負責建模全局依賴關係,讓模型從多個角度關注上下文。
  • 前饋神經網路:負責深化特徵表達,對每個位置獨立進行非線性變換。
  • 多層堆疊:負責構建層級化的理解能力,從語法到抽象語義。

三者相輔相成,構成了當代大型語言模型的技術基石。
理解了多頭注意力與 FFN,你就掌握了 Transformer 內部最核心的運算單元。

接下來,我們要從「模型內部」走向「模型行為」:
當模型訓練完成後,它是如何一個字一個字地生成回應?Temperature、Top-K、Top-P 又是如何影響輸出風格?


下一篇預告

《大模型如何運作:從自回歸生成到推理採樣》

我們會解釋自回歸機制、Next Token Prediction,以及 Temperature、Top-K、Top-P 等推理階段的核心策略。