SciTech-BigDataAIML-LLM-Transformer Series-Self-Attention:由Dot-Product(向量點乘)說起

abaelhe發表於2024-08-17

Self Attention:由Dot-Product(向量點乘)說起

https://lulaoshi.info/deep-learning/attention/transformer-attention.html#self-attention-從向量點乘說起

Transformer[1]論文提出了一種Self-Attention(自注意力機制), Self-Attention的最核心的公式為:
\(\large \begin{align*} \\ & Attention(Q,K,V)=Softmax( \frac{QK^⊤}{\sqrt{d_k}} )V \\ & where, Q : Query,\ K : key,\ V : Value \\ \\ \end{align*} \\ \)

單看這個公式,其實並不能很好地理解Attention到底在做什麼,
本文從Transformer所使用的Self-Attention,介紹Attention背後的原理。

Self-Attention:從向量點乘說起

我們先從:\(\large Softmax(XX ^⊤)X\)這樣一個公式開始。

首先需要複習\(\large Dot\ Product\)(向量點乘)的概念。對於兩個\(\large 行向量x和y\)
\(\large \begin{align*} \\ & x &=[x_0, x_1, \cdots, x_n] \\ & y &=[y_0, y_1, \cdots, y_n] \\ & x \cdot y &= x_0 \cdot y_0, x_1 \cdot y_1, \cdots, x_n \cdot y_n] \end{align*} \\ \)

Self-Attention:

在這個基礎上,再進一步:
𝑆
𝑜
𝑓
𝑡
𝑚
𝑎
𝑥
(
𝑋
𝑋

)
𝑋
Softmax(XX

)X,將得到的歸一化的權重矩陣與詞向量矩陣相乘。權重矩陣中某一行分別與詞向量的一列相乘,詞向量矩陣的一列其實代表著不同詞的某一維度。經過這樣一個矩陣相乘,相當於一個加權求和的過程,得到結果詞向量是經過加權求和之後的新表示,而權重矩陣是經過相似度和歸一化計算得到的。

透過與權重矩陣相乘,完成加權求和過程
上述過程用 PyTorch 實現:

相關文章