【雜學】先進的 NLP 技術 —— 旋轉位置編碼(Rotary Position Embedding,RoPE)

KeanShi發表於2024-11-11

Transformer 已經漸漸成為目前 LLM 最通用底層架構之一,其中的位置編碼也顯得極其重要,由於注意力分數本質上是每個 token 的 val 加權和,並沒有考慮其中的空間資訊,因此需要在自注意力模組之前就將位置資訊融合進序列中。

絕對位置編碼

絕對位置編碼是一種將序列中的每個位置進行編碼的方法,它為每個位置分配一個唯一的編碼向量。其優勢在於它不依賴於序列中的其他元素,可以獨立地表示每個位置的資訊,比較簡單容易計算。

Transformer 所用的就是絕對位置編碼策略,計算公式如下:

\[\text{PE}(pos,2i)=\sin(pos/10000^{2i/d}) \]

\[\text{PE}(pos,2i+1)=\cos(pos/10000^{2i/d}) \]

其缺點也比較明顯:

  1. 絕對位置編碼無法反應不同詞之間的相對關係,例如位置 1 和 2 跟 5 和 500 的差異是一樣的
  2. 表示不了比預訓練文字長度更長的位置向量表示,如果預訓練最大長度為 512 的話,那麼最多就只能處理長度為 512 的句子,再長就處理不了了。

相對位置編碼

旋轉位置編碼

相關文章