トークンの位置情報を回転行列(Rotation Matrix)として表現する相対位置エンコーディング手法。Query・Keyベクトルに回転変換を適用することで、内積計算時に自然と相対位置情報が反映される。LLaMA・Qwen・Gemmaなど現代の主要LLMで標準採用されている。
RoPE(Rotary Position Embedding)は、Su et al.(2021)が提案した位置エンコーディング手法で、トークンの位置情報を複素平面上の回転として表現する革新的なアプローチである。従来の加算型の位置エンコーディングとは異なり、Query(Q)とKey(K)のベクトルに回転行列を乗算することで、Attention の内積計算時に相対位置情報が自動的に現れる数学的性質を持つ。
RoPEの核心は、d次元ベクトルを d/2 個の2次元部分空間に分割し、それぞれに異なる周波数の回転を適用する点にある。
位置 m のトークンに対する回転行列は以下のように定義される:
| 部分空間 i | 回転角 θ_i | 周波数 |
|---|---|---|
| i = 0 | m × θ_0 | 高周波(局所的位置) |
| i = 1 | m × θ_1 | 中周波 |
| ... | ... | ... |
| i = d/2-1 | m × θ_{d/2-1} | 低周波(大域的位置) |
ここで θ_i = 10000^(-2i/d) であり、これは元祖Transformerの正弦波エンコーディングと同じ周波数スケジュールを用いている。
RoPEの最大の特長は、回転を適用した Q と K の内積が相対位置 (m - n) のみに依存する点である。
位置 m の Query q_m と位置 n の Key k_n に回転行列 R を適用すると、内積は以下のようになる:
(R(mθ) · q)^T · (R(nθ) · k) = q^T · R((m-n)θ) · k
この性質により、絶対位置ではなく相対位置が Attention スコアに反映される。
RoPEは訓練時のコンテキスト長を超えた推論(外挿)において課題があったが、複数の拡張手法が開発されている。
| 手法 | 原理 | 拡張倍率 | 代表的な適用例 |
|---|---|---|---|
| Position Interpolation | 位置インデックスを線形縮小 | 2-8倍 | Code LLaMA |
| NTK-aware Scaling | θ の基底周波数を変更 | 4-16倍 | 多数のオープンモデル |
| YaRN | NTK + Attention scaling + 温度補正 | 16-128倍 | Mistral, LLaMA 3 |
| Dynamic NTK | 推論時に動的にスケール調整 | 可変 | LLaMA系派生 |
YaRNは現時点で最も実用的なRoPE拡張手法であり、以下の3要素を組み合わせる:
| モデルファミリー | RoPE採用 | コンテキスト長 | 拡張手法 |
|---|---|---|---|
| LLaMA 3.1 | ○ | 128K | Position Interpolation |
| Qwen 2.5 | ○ | 128K | YaRN |
| Gemma 2 | ○ | 8K | 標準RoPE |
| Mistral / Mixtral | ○ | 32K | Sliding Window + RoPE |
| GPT-4 | 非公開 | 128K | 非公開 |
| Claude | 非公開 | 200K |
Sinusoidal Encodingはトークン埋め込みに位置ベクトルを加算するが、RoPEは回転行列を乗算する。加算方式では位置情報とトークン情報が混在するが、RoPEでは内積演算を通じて相対位置が自然に分離される。
相対位置の自動エンコード、追加パラメータ不要、コンテキスト長拡張との相性の良さの3点が主因。特にYaRNやNTK-aware Scalingとの組み合わせにより、訓練時の数倍〜数十倍のコンテキスト長に対応できる点が決定的だった。
回転行列の適用はベクトルの要素ペアごとの乗算と加算で実装できるため、計算コストは無視できるほど小さい。FlashAttentionなどの効率的なAttention実装とも完全に互換性がある。
| 非公開 |