位置編碼

Positional Encoding

為Transformer注入序列位置資訊

詳細解釋

位置編碼(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處理序列順序的關鍵。

探索更多AI詞彙

查看所有分類,繼續學習AI知識