跳轉到

7.1 Attention 概念入門

範例程式:Open In Colab

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 公式是:

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V

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 都會比較容易接上。