點積注意力(Dot Product Attention)是什麼?

Transformer 中最基礎的注意力機制,透過查詢向量與鍵向量的點積計算相似度,再用 softmax 轉為權重後對值向量加權求和。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Dot Product Attention
主題標籤
Transformer、注意力機制、自注意力
考點定位
非 iPAS 核心術語
最後更新
2026/06/22
點積注意力(Dot Product Attention)是什麼? Transformer注意力機制
術語快查

搜尋意圖: 如果你在找「點積注意力 是什麼」或「點積注意力 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

TL;DR: Transformer 中最基礎的注意力機制,透過查詢向量與鍵向量的點積計算相似度,再用 softmax 轉為權重後對值向量加權求和。

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

Transformer 中最基礎的注意力機制,透過查詢向量與鍵向量的點積計算相似度,再用 softmax 轉為權重後對值向量加權求和。

點積注意力的起源

注意力機制最初在 seq2seq 機器翻譯中引入(Bahdanau Attention,2015),讓解碼器在生成每個詞時能「關注」編碼器的不同部分。最早版本使用加法注意力(Additive Attention),計算代價較高。點積注意力由 Luong 等人於 2015 年提出,並在 2017 年「Attention is All You Need」論文中被採用為 Transformer 的核心操作,成為現代大型語言模型的基礎構件。

計算流程詳解

Query、Key、Value 三元組

給定輸入序列,Transformer 先透過三組可學習的線性投影矩陣(Wq、Wk、Wv)將輸入分別投影為 Query、Key、Value 矩陣:

  • Q = XWq(查詢矩陣)
  • K = XWk(鍵矩陣)
  • V = XWv(值矩陣)

注意力分數計算

每個查詢向量 q 與所有鍵向量 k 計算點積,得到該查詢對每個位置的「相似度分數」: Score(q, k) = q · kᵀ

縮放(Scaling)

將點積除以鍵向量維度 dk 的平方根: Scored(q, k) = q · kᵀ / √dk 縮放的原因:當 dk 較大時,點積的數值可能很大,導致 softmax 輸出的梯度極小(梯度飽和),訓練變困難。除以 √dk 使分數維持在合理範圍。

Softmax 歸一化

對每個查詢的所有鍵分數做 softmax,得到加總為 1 的注意力權重: Weights = softmax(Scored)

加權求和

以注意力權重對值向量加權求和,得到最終輸出: Output = Weights × V = softmax(QKᵀ / √dk) × V

整個過程以矩陣形式表達:Attention(Q, K, V) = softmax(QKᵀ / √dk)V

多頭注意力(Multi-Head Attention)

實際使用中,Transformer 不只計算一組注意力,而是並行計算 h 組(如 GPT-3 使用 h=96),每組使用不同的投影矩陣,最後將 h 組輸出拼接並再次投影。這稱為多頭注意力(Multi-Head Attention),讓模型從多個「子空間」同時捕捉不同類型的依存關係(如語法依存、語意相似性等)。

自注意力(Self-Attention)

當 Q、K、V 均來自同一個序列(X = Q-source = K-source = V-source),稱為自注意力(Self-Attention)。自注意力讓序列中的每個位置都能直接關注序列的所有其他位置,相比 LSTM 的逐步傳遞,自注意力能在單次操作中建立任意長距離的位置關聯。

與加法注意力(Additive Attention)的比較

加法注意力:Score(q, k) = vᵀ · tanh(Wq · q + Wk · k),有額外的神經網路層計算,理論上對 dk 不敏感,但計算量較大。點積注意力:純矩陣乘法,可充分利用硬體最佳化的矩陣乘法加速,在 dk 不太大時速度更快。Transformer 採用縮放點積注意力解決了 dk 大時的梯度問題,同時保留計算效率優勢。

計算複雜度與長序列挑戰

點積注意力的計算複雜度為 O(n²d),其中 n 為序列長度,d 為維度。這意味著序列長度加倍時,計算量變為四倍。這是 Transformer 處理超長序列(如整本書、長視訊)的主要瓶頸。為此,研究者提出多種改進版本:FlashAttention(IO 感知的高效實作)、Sparse Attention(稀疏注意力模式)、Linear Attention(將複雜度降至 O(n))等,均以點積注意力為基礎進行改造。

在大型語言模型中的應用

GPT、BERT、LLaMA 等現代大型語言模型都以縮放點積注意力和多頭注意力為核心構件,只是在細節上有所不同:如 GQA(Grouped Query Attention)減少 KV Cache 使用量;Sliding Window Attention 限制注意力範圍以處理長序列;Causal Mask 在自迴歸生成時遮蔽未來 token。

常見問題

為什麼點積要除以 √dk 進行縮放?

當鍵向量的維度 dk 較大時,查詢與鍵的點積值(q · k)的方差也會隨之增大(假設各分量獨立標準正態,點積方差 = dk)。方差大導致點積的絕對值可能很大,softmax 在數值很大的地方梯度接近零(飽和),使模型訓練時梯度更新困難。除以 √dk 可以將點積的方差標準化回 1,使 softmax 輸入保持在梯度信號充足的範圍,穩定訓練過程。

自注意力和交叉注意力(Cross-Attention)有什麼不同?

自注意力(Self-Attention)中,Q、K、V 全部來自同一個序列,讓序列的每個位置能關注自身序列的其他位置;交叉注意力(Cross-Attention)中,Q 來自一個序列(如解碼器的當前輸出),K 和 V 來自另一個序列(如編碼器的輸出),讓解碼器在生成時能關注編碼器的資訊。在機器翻譯的 Transformer 架構中,解碼器層同時包含自注意力(關注已生成的詞)和交叉注意力(關注源語言句子)。

點積注意力計算 O(n²) 的問題如何解決?

點積注意力需要計算序列中所有位置兩兩之間的相似度,計算量和記憶體使用均為 O(n²)。針對長序列場景,研究者提出多種改進方案:FlashAttention 透過核心融合(Kernel Fusion)和分塊計算減少記憶體讀寫次數,在不改變計算複雜度的前提下顯著加快實際速度;Sparse Attention 只計算部分有意義的位置對,降低計算量;Linear Attention 系列方法(如 Performer)將複雜度降至 O(n);滑動視窗注意力(Sliding Window)限制每個位置只能關注相鄰的固定窗口範圍,適合局部依存為主的任務。