注意力機制入門:QKV、Mask 與縮放點積

拆解 Transformer 的核心——注意力機制,從 QKV 三部曲到縮放點積與因果 Mask。

注意力機制入門:QKV、Mask 與縮放點積

前兩篇我們把文字變成了向量,也補上了位置資訊。
現在,這些向量終於要進入 Transformer 的核心:注意力機制(Attention Mechanism)
它讓模型在處理某個詞時,能動態「關注」句子中其他相關的詞,並賦予不同的重要性。

這一篇,我們會拆解 QKV 三部曲、Mask 機制與縮放點積,帶你理解這個推動當代 AI 革命的核心技術。

Attention Mechanism → Weighted Sum

一、注意力機制到底在做什麼?

先放下數學,用一個直覺的場景來理解。

假設你在讀這句話:

小明把書放在桌上,因為它太重了,所以他決定休息一下。

當你讀到「它」這個字時,你的大腦會自動去尋找:這個「它」指的是什麼?
是「小明」?「書」?還是「桌子」?

你會根據上下文判斷,「它」最可能指的是「書」。
這個「根據上下文決定關注誰」的過程,就是注意力機制的本質。

在數學上,注意力機制做的就是一件事:加權求和(Weighted Sum)

它讓模型在處理某個詞時,能夠:

  • 對句子中的每個詞計算一個「相關性分數」
  • 將這些分數轉換成權重
  • 根據權重,對所有詞的資訊進行加權求和

最終得到的結果,就是這個詞在當前語境下的新表示。

二、QKV 三部曲:從輸入到注意力分數

為了實現這種動態關注,每個輸入向量會透過三個不同的權重矩陣,演化為三種關鍵角色:

Q(Query,查詢)

代表當前位置所「提出」的問題。
也就是模型正在處理的這個詞,想要去「查詢」其他詞與它的關聯。

K(Key,鍵)

代表序列中每個詞所「擁有」的標籤或索引。
它用來與 Query 進行匹配,決定誰跟當前詞比較相關。

V(Value,值)

代表每個詞所「攜帶」的實際資訊內容。
當我們決定要關注哪些詞之後,真正被加總的就是這些 Value。

用一個比喻來說:

  • Q 像是你在搜尋引擎輸入的關鍵字
  • K 像是每篇網頁的標題與標籤
  • V 像是每篇網頁的實際內容

你先用 Q 去跟所有 K 比對,找出最相關的網頁,然後把這些網頁的內容(V)加權整合起來。

Q × K → Score → Softmax → Σ(Score × V)

三、計算流程:從點積到加權求和

整個注意力機制的計算,可以拆成以下步驟:

步驟 1:計算 Q、K、V

給定輸入矩陣 (X),我們透過三個可訓練的權重矩陣 (W^Q)、(W^K)、(W^V),分別得到:

[ Q = XW^Q ]

[ K = XW^K ]

[ V = XW^V ]

這三個矩陣在訓練過程中不斷調整,讓模型學會如何提取有意義的查詢、鍵與值。

步驟 2:計算注意力分數

將 Q 與所有 K 進行點積(Dot Product):

[ \text{Score} = QK^T ]

點積的結果代表相似度。
分數越高,代表當前的 Query 與該位置的 Key 越相關,應該給予更多關注。

步驟 3:縮放

將分數除以 (\sqrt{d_k}):

[ \text{Scaled Score} = \frac{QK^T}{\sqrt{d_k}} ]

其中 (d_k) 是 Key 的維度。
這一步非常重要,我們後面會詳細解釋。

步驟 4:Softmax

對縮放後的分數進行 Softmax,將它們轉換成機率分布:

[ \text{Attention Weights} = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) ]

這樣所有位置的權重總和為 1,且每個權重都介於 0 到 1 之間。

步驟 5:加權求和

最後,將這些權重乘以對應的 V,並加總:

[ \text{Output} = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V ]

這就是完整的**縮放點積注意力(Scaled Dot-Product Attention)**公式。

四、為什麼需要縮放?

這是初學者最常問的問題之一:
為什麼要除以 (\sqrt{d_k})?不除會怎樣?

當 Q 和 K 的維度 (d_k) 較大時,點積的數值容易變得非常大。
這是因為每次點積都是 (d_k) 個乘積的加總,維度越大,結果的變異數就越大。

點積數值太大會導致什麼問題?

Softmax 函數有一個特性:當輸入值很大時,它的輸出會變得非常極端,接近 One-Hot 分布。
例如,原本應該是 ([0.6, 0.3, 0.1]) 的權重,可能變成 ([0.99, 0.01, 0.00])。

這會導致兩個問題:

  1. 梯度消失:Softmax 在極端區域的梯度非常小,反向傳播時幾乎無法更新參數。
  2. 訓練不穩定:模型過度聚焦在少數位置,無法學到平滑的注意力分布。

除以 (\sqrt{d_k}) 的作用,就是把點積的數值拉回一個穩定的範圍,避免 Softmax 進入極度平坦的區域,確保梯度能健康流動。

這是一個簡單卻極其關鍵的數學技巧。

五、Mask 機制:防止模型作弊

在訓練語言模型時,我們的目標是讓模型預測下一個詞。
但這裡有個問題:如果模型在預測第 (t) 個詞時,能看到第 (t+1) 個詞甚至之後的內容,那它根本不需要學習,只要抄答案就好了。

這就像考試時讓學生提前看到答案,考出來的分數沒有意義。

為了防止這種「作弊」行為,我們引入了掩碼機制(Masking)

具體做法是:

  • 在計算注意力分數之後,將未來位置的分數設定為負無窮大((-\infty))
  • 經過 Softmax 後,這些位置的權重就會變成 0

[ \text{Masked Score}{ij} = \begin{cases} \text{Score}{ij} & \text{if } j \le i \ -\infty & \text{if } j > i \end{cases} ]

這樣一來,模型在預測第 (t) 個詞時,只能關注當前及之前的詞,無法看到未來的內容。

這種掩碼通常被稱為因果掩碼(Causal Mask)上三角掩碼(Upper Triangular Mask),是自回歸語言模型(如 GPT 系列)的標準配置。

Causal Mask → Future Positions Blocked

六、完整公式與直觀理解

把上述所有步驟整合起來,縮放點積注意力的完整公式是:

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

其中 (M) 是掩碼矩陣(需要遮蓋的位置為 (-\infty),其餘為 0)。

用一句話總結:

注意力機制就是讓每個詞根據自己的 Query,去跟所有詞的 Key 比對相關性,經過縮放與 Softmax 得到權重,再對所有詞的 Value 進行加權求和。

七、一個具體的例子

假設我們有一句話:

貓咪 坐在 墊子 上

當模型處理「坐在」這個詞時:

  1. 它的 Query 會去跟「貓咪」、「坐在」、「墊子」、「上」的 Key 分別計算點積
  2. 可能發現與「貓咪」和「墊子」的相關性最高
  3. 經過 Softmax 後,「貓咪」和「墊子」獲得較高權重
  4. 最終「坐在」的新表示,會融合較多「貓咪」和「墊子」的資訊

這讓模型理解到:「坐在」這個動作,是「貓咪」對「墊子」做的。

這就是注意力機制捕捉語境的能力。

八、總結:注意力的三大關鍵

到這裡,我們已經完整拆解了注意力機制的核心:

  • QKV:Query 提出問題,Key 提供索引,Value 攜帶資訊
  • 縮放點積:除以 (\sqrt{d_k}) 維持數值穩定,確保梯度健康
  • Mask 機制:遮蓋未來位置,防止模型在訓練時作弊

這三者的協作,構成了 Transformer 架構最核心的基礎。
注意力機制讓模型不再只是孤立地處理每個詞,而是能動態地根據上下文,決定該關注誰、該融合多少資訊。

不過,單一頭的注意力只能捕捉一種角度的關係。
如果我們想要同時捕捉語法關係、語意關係、指代關係等多種面向呢?

這就需要**多頭注意力機制(Multi-Head Attention)**登場了。


下一篇預告

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

我們會解釋為什麼需要多個注意力頭、它們如何協同工作,以及前饋神經網路(FFN)在 Transformer 中扮演什麼角色。