詳細解釋
位置編碼(Positional Encoding)是為Transformer架構 (變換器 / 注意力模型) (Switch Transformer)提供序列位置信息的機制,因為自注意力本身無序,需要顯式注入位置信息。
為何需要:
- 自注意力:對輸入排列不變
- 序列順序:「我愛你」≠「你愛我」
- 需要:區分token的位置信息
原始Transformer(正弦編碼):
- PE(pos, 2i) = sin(pos/10000^(2i/d_model))
- PE(pos, 2i+1) = cos(pos/10000^(2i/d_model))
- 特點:
- 唯一:每個位置唯一編碼
- 相對:可學習相對位置關係
- 範圍外推:可處理訓練時未見的長度
可學習位置嵌入:
- 每個位置一個向量
- 與詞嵌入相加
- BERT、GPT使用
- 局限:無法處理更長序列
相對位置編碼:
- 不編碼絕對位置
- 編碼相對距離(i與j的距離)
- T5、Transformer-XL使用
- 更好:長序列外推
旋轉位置編碼(RoPE):
- 旋轉位置嵌入:將位置編碼為旋轉矩陣
- 乘積形式:QK^T自然包含位置
- 優勢:長序列外推好
- 應用:LLaMA、PaLM等
ALiBi:
- 線性偏置:基於距離的線性懲罰
- 簡單:無額外參數
- 效果:長序列外推優秀
- 應用:BLOOM等
選擇考量:
- 最大長度:外推能力
- 訓練穩定:不同編碼的優化難度
- 計算效率:編碼計算開銷
- 長序列:相對編碼通常更好
位置編碼是Transformer處理序列順序的關鍵。