7.1 Attention 概念入門
Attention 的核心問題是:當模型正在處理某個 token、時間點或影像 patch 時,應該參考其他哪些位置?本篇用小型向量範例說明 Query、Key、Value、attention score 與 attention weight 的直覺。
1. 學習目標
本篇聚焦 Transformer 最重要但也最容易抽象化的概念:模型如何根據目前需求,動態選擇要看哪些資訊。Attention 不是固定取平均,而是根據 Query 和 Key 的相似度,對 Value 做加權整合。
2. Query、Key、Value 的直覺
可以把三者想成:
| 名稱 | 直覺 |
|---|---|
| Query | 目前這個位置想找什麼 |
| Key | 每個位置提供什麼索引或特徵 |
| Value | 每個位置真正要被取用的內容 |
Query 和 Key 用來計算相似度,softmax 後得到 attention weights,再用 weights 對 Value 加權。
3. Scaled Dot-Product Attention
Transformer 最常見的 attention 公式是:
sqrt(d_k) 是縮放因子,避免向量維度變大時 dot product 數值過大,讓 softmax 太早飽和。
4. 實作流程
Notebook 會建立幾個簡單 token 向量,手動計算 attention score、attention weights 與 weighted sum,並用 heatmap 看每個 Query 關注哪些 Key。
5. 如何套用到後續模型?
在文字任務中,位置通常是 token;在時間序列任務中,位置是時間點;在 Vision Transformer 中,位置是 image patch。只要資料可以整理成一串向量,attention 就可以用來學習位置之間的關係。
6. 小結
Attention 的重點不是背公式,而是理解「根據 Query 找 Key,再加權 Value」。理解這個流程後,Self-Attention、Transformer Encoder 與 Vision Transformer 都會比較容易接上。