詳細解釋
自注意力(Self-Attention)是注意力機制的特殊形式,計算序列內部元素間的相互關係,讓每個位置都能關注序列中所有其他位置,是Transformer架構 (變換器 / 注意力模型) (Switch Transformer)的核心組件。
與交叉注意力的區別:
- 自注意力:Query、Key、Value來自同一輸入
- 交叉注意力:Q來自一個輸入,K/V來自另一個
- 例子:
- 編碼器:自注意力
- 解碼器交叉注意力:關注編碼器輸出
計算:
- 輸入:X ∈ R^(n×d)(n個token,d維)
- Q = XW_q,K = XW_k,V = XW_v
- Attention = softmax(QK^T/√d_k)V
- 輸出:每個位置的上下文表示
特性:
- 全局依賴:任何位置可以關注任何位置
- 並行計算:不像RNN需要順序
- 對稱性:理論上對稱(實際因投影不同)
- 計算複雜度:O(n²d),序列長度的平方
優勢:
- 長距離依賴:直接連接,無梯度消失
- 可解釋:注意力權重顯示關係
- 靈活:學習不同的依賴模式
局限:
- 計算複雜度:n²限制序列長度
- 無序:需額外加入位置信息
- 記憶體:n²的注意力矩陣
位置編碼:
- 自注意力本身無序,需位置信息
- 正弦位置編碼:Transformer原始
- 可學習位置嵌入:BERT等使用
- 相對位置:考慮相對距離
變體:
- 稀疏注意力:只關注部分位置
- 線性注意力:降低複雜度到O(n)
- 局部注意力:只關注鄰域
自注意力是Transformer和現代NLP的基礎。