Zubnet AI學習Wiki › 自注意力
基礎

自注意力

別名:縮放點積注意力

一種注意力機制,其中序列會關注自身 — 每個 token 計算與同一序列中其他所有 token 的相關性。查詢、鍵和值都來自相同的輸入。這讓每個 token 能從所有其他 token 中收集資訊,並按相關性加權。自注意力是每個 Transformer 層的核心操作。

為什麼重要

自注意力是 Transformer 運作的關鍵。它用平行的、所有位置之間的直接連接取代了 RNN 的序列處理。「river bank」中的「bank」一詞會關注「river」來解析其含義,無論它們相距多遠。這種能夠直接連接任意兩個位置的能力,正是 Transformer 如此擅長處理長距離依賴的原因。

深度解析

計算過程:對於輸入 X,計算 Q = X·W_Q,K = X·W_K,V = X·W_V。然後:Attention(Q,K,V) = softmax(Q·K^T / √d_k) · V。softmax(Q·K^T) 產生一個 N×N 的注意力矩陣,其中第 (i,j) 項表示 token i 對 token j 的關注程度。√d_k 的縮放防止點積在高維空間中變得過大,否則會將 softmax 推入飽和區域,導致梯度接近零。

因果 vs. 雙向

在僅解碼器的 LLM(GPT、Claude、Llama)中,自注意力是因果的:每個 token 只能關注先前的 token(包括自身)。這透過因果遮罩實現,在 softmax 之前將未來位置設為 −∞。在編碼器模型(BERT)中,自注意力是雙向的:每個 token 關注所有其他 token。因果約束使得自回歸生成成為可能 — 模型無法「偷看」未來的 token。

二次方成本

自注意力計算一個 N×N 的注意力矩陣,使其在時間和記憶體上都是 O(N²)。對於 128K token 的上下文,每一層每一頭就有約 160 億個項目。這種二次方擴展是推動稀疏注意力、線性注意力、Flash Attention(減少記憶體但不減少計算量)和 SSM(完全避免 N×N 矩陣)研究的根本限制。每種處理長上下文的方法最終都是在管理這個二次方成本。

相關概念

← 所有術語
← 自動化 自然語言處理 →