Transformer 引擎
自注意力(self-attention)
自注意力是把注意力向內轉:一個序列注意它自己。不是一個句子去看另一份翻譯,而是同一段文字裡的每個詞元去看那段文字裡其他每個詞元,包括它自己。當模型處理「她坐在河岸(river bank)旁」中的 bank 時,自注意力讓這個詞從鄰近的 river 收集訊號,悄悄落在地理意義上,而不是金融意義。
就機制而言,每個詞元產生三個向量——查詢、鍵與值。模型把某個詞元的查詢和每個詞元的鍵相比,得到相關性分數,把它們正規化成權重,再對值做加權混合。每個詞元同時這麼做,因此長度為 n 的序列會在單次運算中產生一個 n 乘 n 的互動格子。輸出是一段新序列,每個位置都吸收了來自整體的脈絡。
「自」這個字只是為了和交叉注意力區別——後者的查詢來自一個序列,鍵與值來自另一個序列。在純解碼器的大型語言模型裡,自注意力是主力,每一層都會重複。這也是為什麼記憶體與運算量會隨序列長度的平方成長——這正是長脈絡的核心成本。
另見