AI・機械学習
上級

RoPE(Rotary Position Embedding)(ロータリーポジションエンベディング)

トークンの位置情報を回転行列(Rotation Matrix)として表現する相対位置エンコーディング手法。Query・Keyベクトルに回転変換を適用することで、内積計算時に自然と相対位置情報が反映される。LLaMA・Qwen・Gemmaなど現代の主要LLMで標準採用されている。

0 回閲覧
0 いいね

RoPE(Rotary Position Embedding)とは

RoPE(Rotary Position Embedding)は、Su et al.(2021)が提案した位置エンコーディング手法で、トークンの位置情報を複素平面上の回転として表現する革新的なアプローチである。従来の加算型の位置エンコーディングとは異なり、Query(Q)とKey(K)のベクトルに回転行列を乗算することで、Attention の内積計算時に相対位置情報が自動的に現れる数学的性質を持つ。

RoPEの数学的原理

RoPEの核心は、d次元ベクトルを d/2 個の2次元部分空間に分割し、それぞれに異なる周波数の回転を適用する点にある。

位置 m のトークンに対する回転行列は以下のように定義される:

部分空間 i回転角 θ_i周波数
i = 0m × θ_0高周波(局所的位置)
i = 1m × θ_1中周波
.........
i = d/2-1m × θ_{d/2-1}低周波(大域的位置)

ここで θ_i = 10000^(-2i/d) であり、これは元祖Transformerの正弦波エンコーディングと同じ周波数スケジュールを用いている。

RoPEが内積に相対位置をエンコードする仕組み

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倍多数のオープンモデル
YaRNNTK + Attention scaling + 温度補正16-128倍Mistral, LLaMA 3
Dynamic NTK推論時に動的にスケール調整可変LLaMA系派生

YaRN(Yet another RoPE extensioN)の仕組み

YaRNは現時点で最も実用的なRoPE拡張手法であり、以下の3要素を組み合わせる:

  1. NTK-aware interpolation: 高周波成分は外挿、低周波成分は補間のハイブリッド
  2. Attention scaling: √(scale_factor) でAttentionの分布を補正
  3. 温度補正: 周波数帯ごとに異なるスケーリングを適用

採用モデルと実装状況

モデルファミリーRoPE採用コンテキスト長拡張手法
LLaMA 3.1○128KPosition Interpolation
Qwen 2.5○128KYaRN
Gemma 2○8K標準RoPE
Mistral / Mixtral○32KSliding Window + RoPE
GPT-4非公開128K非公開
Claude非公開200K非公開

FAQ

Q1: RoPEと従来のSinusoidal Encodingの違いは?

Sinusoidal Encodingはトークン埋め込みに位置ベクトルを加算するが、RoPEは回転行列を乗算する。加算方式では位置情報とトークン情報が混在するが、RoPEでは内積演算を通じて相対位置が自然に分離される。

Q2: なぜRoPEが現在のLLMの標準になったのか?

相対位置の自動エンコード、追加パラメータ不要、コンテキスト長拡張との相性の良さの3点が主因。特にYaRNやNTK-aware Scalingとの組み合わせにより、訓練時の数倍〜数十倍のコンテキスト長に対応できる点が決定的だった。

Q3: RoPEの計算コストは大きい?

回転行列の適用はベクトルの要素ペアごとの乗算と加算で実装できるため、計算コストは無視できるほど小さい。FlashAttentionなどの効率的なAttention実装とも完全に互換性がある。