生活分享

注意力機制(Attention)是什麼:模型怎麼決定要參考哪些 token

注意力機制讓序列中的每個位置,依 query 與 key 的比對算出權重,再把各位置的 value 加權平均成新的表示。內容從 2014 年的翻譯對齊講到 2017 年的 Transformer,用示例說明 Q、K、V、自注意力、交叉注意力與多頭注意力,也討論標準做法的計算量隨長度平方成長,以及注意力權重不能直接當成模型的理由。

閱讀時間約 8 分鐘

一排方塊代表詞,最右邊的方塊向左畫出粗細不同的弧線連到其他方塊,最粗的一條連到較遠的一個
圖片:Mokaair (© Mokaair)

注意力機制(Attention)是一種計算:處理序列中的某個位置時,替它可參考的每個位置(自注意力時也包括它自己)打相關分數,轉成總和為 1 的權重,再把各位置的內容加權平均成新的表示。「注意力」是譯名,指數學上的加權,不是人類有意識的專注。它讓相隔很遠的兩個詞在同一層就能直接比對,代價是標準做法的計算量大約隨序列長度的平方成長。

本文從翻譯對齊問題講到 Q、K、V、自注意力與多頭注意力,並說明權重為何不能直接讀成「模型的理由」,以及長度與成本的關係。資料截至 2026 年 10 月;標「示例」的內容是教學編的,未實測。

從翻譯對齊走到只靠注意力

2014 年 Bahdanau 等人處理機器翻譯。當時常見的編碼器—解碼器架構先把整句原文壓成一個固定長度的向量,再產生譯文;他們推測這是瓶頸,改讓解碼器每產生一個目標詞,就對原文各位置的表示打分、轉成權重,加權平均出這一步專用的上下文向量。打分用的是與翻譯模型一起訓練的小型前饋 。在該論文的英法翻譯實驗中,基本架構的表現隨句長明顯下滑,以最長 50 個詞的句子訓練的對齊版本,在 50 個詞以上的句子也沒有下滑,這是該論文設定下的結果。

2017 年 Vaswani 等人指出,當時的注意力多半與遞迴網路並用,於是提出完全依賴注意力、不用遞迴與卷積的 。論文的定義是:把一個 query 和一組「key-value 配對」映射成一個輸出;輸出是各 value 的加權總和,權重由 query 與各 key 的相容性函數(衡量兩者多相符)算出。

Q、K、V:比對、加權、混合

每個位置(語言模型裡通常是一個 )用三組學來的矩陣,各轉出一個 query、key 和 value 向量。粗略的理解:query 是「我要找什麼」,key 是「我能被怎樣比對」,value 是「被選中時交出的內容」。三者都是學出來的數值,沒有人事先替詞標好主詞或代名詞。

  1. query 與每個位置的 key 做內積,得到分數。
  2. 分數除以 key 維度的平方根;原論文推測,這能避免維度大時內積過大、softmax 的梯度過小。
  3. 用 softmax 轉成非負、總和為 1 的權重。
  4. 以權重對各位置的 value 加權平均,得到新表示。

示例(教學用,分詞僅為示意,未對真實模型量測):「小雅把行李箱放進後車廂,因為它太重了。」處理「它」時,假設權重為行李箱 0.55、後車廂 0.25、小雅 0.10,其餘詞合計 0.10,總和為 1。「它」的新表示是各 value 的混合,行李箱占最多。

若行李箱與後車廂的權重對調,新表示就偏向後車廂,後面的層可能把「太重」連錯對象。真實模型的權重要取出才知道,且它只是混合比例,不是最後答案。

以「它」為 query,與小雅、行李箱、後車廂和其餘詞的 key 比對,經 softmax 得到示例權重,再加權混合 value
由左到右看:先比對,再轉成權重,最後混合;權重為教學示例,不是實測。 · 圖片:Mokaair (© Mokaair)

自注意力與交叉注意力

兩者差在 query、key、value 的來源,計算方式相同。自注意力(self-attention)的三者來自同一個序列。交叉注意力(cross-attention,原論文稱 encoder-decoder attention)的 query 來自解碼器,key 與 value 來自編碼器輸出;Bahdanau 等人的機制也是解碼器去查原文,只是用小型網路而非內積打分。解碼器的自注意力另加遮罩,只讓位置看到自己與之前的位置。

多頭注意力在做什麼

多頭注意力(multi-head attention)以各自學到的投影,把 query、key、value 轉成 h 組較小的向量,每組平行做注意力,再串接並投影回原維度。原論文基本設定是 8 個頭、每頭 64 維、模型維度 512,總計算量與單頭全維度相近;作者的理由是多頭讓模型能同時從不同表示子空間、不同位置取用資訊,只用單頭時,加權平均會妨礙這一點。

但這不表示每個頭固定負責一種語意。該論文的英德翻譯消融實驗(總計算量固定)顯示,單頭比最佳設定差,頭數過多品質也會下降。附錄圖畫出編碼器第 5 層(共 6 層)兩個頭處理英文代名詞 its 的權重,作者說它們「似乎」與代名詞指涉有關,但這是對特定模型、層與句子的觀察,不保證換個模型會重現。

注意力權重不等於模型的理由

權重常被畫成熱力圖,像在說「模型因為這幾個詞才這樣答」。Jain 與 Wallace(NAACL 2019)檢驗過這個直覺:他們用帶注意力的雙向 LSTM,做英文的文本分類、問答與自然語言推論。結果是遞迴編碼器的注意力權重,和另外兩種衡量「哪個詞重要」的指標(梯度、移除單詞後的輸出變化)相關性偏弱且不一致;固定其他參數,常能另外構造出重心不同、預測卻幾乎不變的權重。他們主張標準注意力不該被當成有意義的解釋。

Wiegreffe 與 Pinter(EMNLP 2019)以雙重否定的標題回應。他們認為相關性那部分的實驗有說服力,爭議在後半:結論取決於「解釋」的定義,要求忠實反映模型的運算,和只要求讓人看得懂、說得通,是兩種標準;構造反例時也不能只動權重而不顧模型其餘部分。他們改成連同整個模型一起訓練,找出重心不同的「對抗」權重,再把它當成固定權重,交給看不到上下文的簡單診斷模型使用:四個英文二元分類資料集中,有三個的成績明顯不如用原本學到的權重;剩下一個兩者相當,作者認為與該資料集的資料特性有關。他們據此主張,先前工作並未證明注意力無用於解釋;不過他們也確認,某些分類任務上的確找得到這種對抗權重,只是不像先前做法找到的那麼極端。

兩篇主要研究帶注意力的遞迴模型與英文任務,沒有直接檢驗今日的大型 Transformer 語言模型,結論都不能直接外推。穩妥的說法是:權重描述某層某個頭混合內容的比例,後面還有許多層,單張權重圖不足以當成答案的因果來源。

序列變長時的成本與上下文視窗

標準自注意力讓每個位置和每個位置配對,n 個 token 有 n 乘 n 個分數,長度加倍,配對數約變四倍。原論文的 Table 1(見下表,n 為序列長度,d 為表示維度)比較了幾種層:自注意力的運算量隨 n 平方成長,但任兩個位置的最長路徑是常數級,再遠的兩個詞,一層就能直接比對;遞迴層的路徑則隨 n 成長。

節錄自 Vaswani 等人 2017 的 Table 1(略去卷積層一列與循序運算數一欄);O() 表示成長量級,查證於 2026 年 10 月。
層類型每層運算量任兩位置的最長路徑
自注意力O(n²·d)O(1)
遞迴層O(n·d²)O(n)
只看鄰近 r 個位置的自注意力O(r·n·d)O(n/r)

這是輸入變長時,運算與記憶體需求跟著升高的原因之一,但實作各有不同:FlashAttention 論文同樣指出自注意力的時間與記憶體複雜度對長度是平方,並提出一種「精確」(exact)演算法:數學上算的仍是同一個注意力,只是靠減少 GPU 記憶體的讀寫來加快,所以實際速度不能只用平方公式推算。視窗放得下,也不等於用得好:Liu 等人(TACL 2024)在多文件問答與鍵值查找的實驗中觀察到,相關資訊位在長輸入的中段時,表現往往明顯不如放在開頭或結尾。另見 。

逐個 token 產生時,Hugging Face 官方文件說明可用 KV 快取:存下先前 token 的 key 與 value,每步只算新 token 的,代價是記憶體隨序列長度線性增加。

想繼續讀相關名詞,可從 開始。

  • 生活分享

    世界模型(World Model)是什麼:讓 AI 預測「接下來會怎樣」

    世界模型指 AI 內部用來預測「這樣做之後會怎樣」的模型,但這個詞至少有三種用法:強化學習代理在想像中練習用的環境模型、LeCun 主張預測抽象表示的架構路線,以及能隨操作即時生成畫面的互動環境。內容用示例說明怎麼在想像中規劃,並列出大型語言模型有沒有世界模型的正反研究,附讀新聞時的檢查問題。

  • 生活分享

    視覺語言模型(VLM)是什麼:讓 AI 讀圖片、再用文字回答

    視覺語言模型(VLM)能同時接收圖片與文字,再用文字回答。內容拆解視覺編碼器、連接層與語言模型三段結構,說明 CLIP、Flamingo、LLaVA 三篇論文各補上哪一塊,並和多模態 AI、文字生圖分清楚;也整理它常犯的錯:數錯數量、搞混位置、說出圖裡沒有的東西,附上讀收據時逐行核對的步驟。

  • 生活分享

    溫度(Temperature)是什麼:AI 回答變化程度的取樣參數

    溫度(temperature)是文字生成時調整取樣的參數,讓模型從下一個 token 的機率分布裡抽得更集中或更分散。用假想的台南早餐示例算出低溫與高溫的差別,說明 top-p 的來源和它與 top-k 的差別,並依官方文件與論文指出:調低溫度不代表更準,設成 0 也不保證每次相同,部分模型還不開放調整。

  • 生活分享

    合成資料(Synthetic Data)是什麼:兩種用途、品質控管與模型崩潰

    合成資料是由演算法或模型產生、模仿真實資料特徵的資料,常見用途有兩種:訓練模型,以及在隱私需求下替代真資料。內容依 Self-Instruct、模型崩潰研究(替換與累積資料的差別)與 NIST、ICO 的隱私文件,說明做法、抽查流程,以及它不能保證的事。

最新旅遊情報攻略

資料來源

生活分享