💡一句話定義
注意力機制(Attention)= 讓模型在處理每一個位置時,能動態查看輸入的所有位置、依相關度加權取用資訊,而不必把整段話塞進單一固定向量。相關的字給高權重、無關的給低權重。
🤔為什麼需要 Attention?
RNN 把整段輸入壓成一個固定向量,長句子讀到後面就忘了前面;CNN 又只能看局部。Attention 讓模型在處理某個字時能「全局搜尋」整句,直接找出跟當前字最相關的資訊——長距離依賴一次搞定,也能平行運算。
🎮互動:每個字在關注誰
把滑鼠移到句子裡的字(試試 it):上方弧線連到它最關注的字、線越粗代表權重越高,下方顯示前 5 名注意力分數。你會看到 "it" 強烈關注 "animal"(因為後面說 tired 累了)。
Attention Mechanism (注意力機制) 互動演示
請將滑鼠移到上方的單字 (例如 "it"),觀察它關注哪些詞。
🔑Q、K、V:圖書館的比喻
自注意力給每個字算出三個向量,就像在圖書館找資料:
🔍Query(查詢)
我手上的字在問:「誰跟我有關?」
🏷️Key(標籤)
每個字的索引標籤,拿來被 Query 匹配(點積)。
📄Value(內容)
每個字的實際內容;Q、K 匹配度高就多取一點 V。
🧮核心公式(Scaled Dot-Product)
Attention(Q, K, V) = softmax( QKᵀ / √d_k ) · V
三步:① QKᵀ 算 Query 和每個 Key 的相似度分數;② softmax 把分數變成加起來為 1 的權重;③ 用權重對所有 Value 加權求和,得到這個位置的輸出。
📐為什麼要除以 √d_k(縮放)?
維度 d_k 大時,Q·K 的內積數值會變得很大,讓 softmax 進入梯度極小的飽和區(幾乎一面倒),訓練不穩。除以 √d_k 把數值縮回合理範圍、穩定梯度——這就是它叫 Scaled Dot-Product Attention 的原因。
🔀自注意力 vs 跨注意力 vs 多頭
| 種類 | Q、K、V 來源 | 用途 |
| 自注意力 Self | 都來自同一序列 | 讓序列內部彼此關聯、理解上下文 |
| 跨注意力 Cross | Q 來自一邊、K/V 來自另一邊 | 翻譯時輸出關注輸入(如「愛」關注 love) |
| 多頭 Multi-Head | 拆成多組 Q/K/V | 各頭在不同子空間學不同關係,再合併 |
多頭好處:一個頭可能學語法、另一個學語意、另一個學指代……多頭並行再拼起來,比單一注意力抓到更豐富的關聯。
⚠️兩個易混點
① 注意力本身不含順序——它只算「誰跟誰相關」,不知道字的先後,所以 Transformer 要另外加位置編碼。
② 高注意力 ≠ 因果重要性:注意力權重不能完全當成「模型為什麼這樣決定」的可靠解釋,別過度解讀。
✅自我檢測
Q1. 注意力機制解決了 RNN 的什麼問題?
RNN 把整段壓成固定向量、長句會忘記前面。注意力讓模型每步都能動態查看所有位置、依相關度加權取用,直接處理長距離依賴,且可平行。
Q2. Q、K、V 各是什麼角色?
Query=我要找什麼;Key=每個位置的特徵標籤;Value=每個位置的內容。用 Q 和各 K 算相似度、softmax 成權重,再對 V 加權求和。
Q3. 為什麼要除以 √d_k?
維度大時 Q·K 內積會變大,使 softmax 飽和、梯度極小、訓練不穩。除以 √d_k 縮放可穩定數值與梯度(Scaled Dot-Product Attention)。
Q4. 自注意力和跨注意力差在哪?
自注意力的 Q、K、V 都來自同一序列(理解自身上下文);跨注意力的 Q 來自一邊、K/V 來自另一邊(如翻譯時輸出關注輸入)。
🎯重點整理
- 是什麼:動態查看所有位置、依相關度加權取用。
- Q/K/V:查詢、標籤、內容;Q·K 算分、softmax、加權 V。
- 公式:softmax(QKᵀ/√d_k)·V,√d_k 縮放穩定梯度。
- 種類:自注意力、跨注意力、多頭。
- 易混:本身無順序(需位置編碼);權重≠因果解釋。