旋轉位置編碼 是什麼?

Rotary Position Embedding:旋轉位置編碼 的完整解釋

一種位置編碼方法,通過複數旋轉操作將位置信息編碼到注意力機制中,相比絕對位置編碼具有更好的外推性能。

核心概念

旋轉位置編碼(RoPE)是一種將位置信息編碼到查詢和鍵向量中的方法。與傳統位置編碼的加法方法不同,RoPE 通過乘法操作(旋轉)將位置信息融入向量。

RoPE 的核心思想來自複數和旋轉矩陣的性質。在二維平面上,旋轉一個點可以用複數乘法表示。推廣到高維空間,可以將位置編碼表示為一系列旋轉操作。

具體而言,如果查詢向量 q 和鍵向量 k 分別在位置 m 和 n,RoPE 將 q 乘以旋轉因子 e^(imθ),將 k 乘以旋轉因子 e^(inθ)。注意力計算時,q 和 k 的點積會包含因子 e^(i(m-n)θ),這正好編碼了相對位置 (m - n)。

這種設計的妙處在於:注意力分數 (q · k) 自然地反映了相對位置,而與絕對位置無關。

運作原理

數學基礎

RoPE 基於複數和旋轉矩陣。設二維複數可表示為 (x, y),旋轉角度 θ 的旋轉矩陣為:

R(θ) = [ cos(θ) -sin(θ) ]
        [ sin(θ)  cos(θ) ]

推廣到 d 維向量,可以將其分為 d/2 對,每對獨立旋轉。第 i 對的旋轉角度為 θ_i = base^(-2i/d),其中 base(如 10000)是選定的底數。

編碼過程

給定位置 m 的查詢向量 q = [q_0, q_1, ..., q_{d-1}],RoPE 編碼為:

q' = [q_0 * cos(m*θ_0) - q_1 * sin(m*θ_0),
      q_0 * sin(m*θ_0) + q_1 * cos(m*θ_0),
      q_2 * cos(m*θ_1) - q_3 * sin(m*θ_1),
      q_2 * sin(m*θ_1) + q_3 * cos(m*θ_1),
      ...]

類似地處理鍵向量 k。

相對位置性質

RoPE 的關鍵性質是相對位置的提取。當計算 q'_m · k'_n 時,由於旋轉的性質,結果包含因子 e^(i(m-n)θ),自動編碼了相對位置 (m - n)。

數學上:

q'_m · k'_n ∝ Re[q · k^* · e^(i(m-n)θ)]

這表明點積直接依賴於相對位置,與絕對位置無關(m 和 n 的絕對值不影響相對位置 m-n)。

外推性質

RoPE 的一個重要性質是外推性。訓練時使用序列長度 L(位置 0 到 L-1),推理時遇到位置 L(即超出訓練範圍)也能正常處理。

Extrapolation 之所以可能,是因為 RoPE 編碼的是相對位置,而不是絕對位置。即使遇到新的絕對位置,只要相對位置關係保持,模型就能正確處理。

但是,純 RoPE 的外推性有限度。超過訓練序列長度太遠時(如訓練在 2K,推理在 10K),性能會下降。改進方法包括 YaRN 等,通過調整旋轉頻率提升外推性。

實際應用

RoPE 已成為現代大型語言模型的事實標準位置編碼。

Meta 系列

LLaMA 和 LLaMA 2 都採用 RoPE。在 LLaMA 論文中,作者明確指出 RoPE 優於絕對位置編碼,特別是在長序列上。

OpenAI 系列

GPT-3.5 和 GPT-4 後來也採用了類似 RoPE 的相對位置編碼機制。

其他模型

Mistral、Falcon、Code Llama、DeepSeek 等新興開源模型都採用 RoPE。在學術界,許多新提出的位置編碼改進(如 ALiBi、YaRN)都是在 RoPE 基礎上的優化。

為什麼 RoPE 流行

RoPE 相比絕對位置編碼有多個優勢:

  • 相對位置性:自然編碼相對位置,理論上更符合注意力的相對性質。

  • 外推性:對超出訓練序列長度的序列有一定的泛化能力。

  • 簡潔性:實現相對簡單,計算成本與絕對位置編碼相近。

  • 靈活性:可以結合其他技術(如 ALiBi)進一步增強外推性。

常見誤區

誤區一:RoPE 完全解決了位置編碼的長序列問題。實際上,RoPE 的外推性有限。訓練在 2K 序列上的模型,在 8K 序列上性能下降明顯。增強外推性需要結合 YaRN 或其他方法。

誤區二:RoPE 在所有任務上都優於絕對位置編碼。實際上,在短序列任務上,RoPE 和絕對位置編碼性能接近。RoPE 的優勢在長序列和外推場景上體現。

誤區三:使用 RoPE 的模型自動支持長上下文。實際上,位置編碼只是一個方面。實現長上下文還需要其他技術,如注意力優化(滑動窗口、稀疏注意力)、KV 快取優化等。

誤區四:RoPE 的旋轉頻率參數不重要。實際上,旋轉頻率的選擇影響外推性。base 值(通常 10000)的選擇對不同序列長度的性能有顯著影響。YaRN 等改進通過動態調整頻率來增強外推性。

與相關技術的比較

  • 與絕對位置編碼的比較:絕對位置編碼(如 Sinusoidal)直接將位置映射到向量,簡單但缺乏相對位置的語義。RoPE 通過旋轉編碼相對位置,在長序列和外推上表現更好。

  • 與相對位置偏置(ALiBi)的比較:ALiBi 在注意力分數中添加位置相關的偏置項。RoPE 和 ALiBi 各有優缺點。RoPE 在模型參數中直接融入位置,ALiBi 無須改動嵌入層。

  • 與位置插值方法的比較:位置插值(如 Linear Interpolation)通過縮放位置索引來適應更長的序列。RoPE 加上位置插值(或 YaRN)可進一步增強外推性。

  • 與 ALiBi 的結合:雖然 RoPE 和 ALiBi 都是位置編碼方法,但它們可以結合使用,互補優化。

常見問題