每個 token 都會先被轉成一個向量。這個向量可能有 768 維、4096 維,甚至更大。也就是說,一個 token 本質上就是一串很多很多數字。
進入 self-attention 的時候,這個 token vector 會再被轉成三種向量:Q、K、V。
Q 是 Query,可以理解成「我想找什麼資訊」。
K 是 Key,可以理解成「我有什麼特徵可以被別人找到」。
V 是 Value,可以理解成「我真正要提供出去的內容」。
這三個東西不是人工寫死的規則,而是靠三組可訓練的矩陣產生出來的。也就是:
Q = token vector × Wq
K = token vector × Wk
V = token vector × Wv
一開始我看到 [768, 768] 以為是不是乘完會變成兩個數字,後來才懂,這其實是矩陣的形狀:768 行、768 列。意思是它可以把一個 768 維向量,轉成另一個 768 維向量。
所以 GPT-2 small 裡面,一個 token vector 原本是 768 個數字,乘上 Wq 之後,會得到 768 個數字的 Q vector;乘上 Wk 得到 K vector;乘上 Wv 得到 V vector。