RoPE(回転位置埋め込み)の数理と長文脈外挿
なぜ現行 LLM が位置を「回転」で表すのかを数理から理解できる。内積が相対距離だけに依存する仕組みと、NTK-aware/YaRN による文脈長拡張の効かせ方まで一気に整理。
- 1.RoPE は Q・K のベクトルを2次元ずつペアにして位置 m に比例する角度だけ回転させる方式。回転後の内積 Q_m·K_n が相対位置 (m-n) だけの関数になり、相対位置を内積に自然に埋め込める。
- 2.絶対位置を加算する正弦波・学習可能テーブルと違い、RoPE は乗算的に作用し外挿に強い。ALiBi はアテンションスコアに距離ペナルティを足す別系統で、位置埋め込みを使わない。
- 3.文脈長を訓練時より延ばすには、低周波数ほど補間を弱める NTK-aware や、周波数帯ごとに補間・外挿を切り替える YaRN を使う。回転角の波長と訓練長の関係が外挿可否を決める。
なぜ位置を「足す」のではなく「回す」のか
Self-Attention の計算 で見たとおり、アテンションの核心は Query と Key の内積 Q_m·K_n です。ここに位置情報をどう入れるかが位置エンコーディングの主題でした。正弦波や学習可能テーブルは、トークン埋め込みに位置ベクトルを 加算 します。これは「絶対的に何番目か」を表しますが、アテンションが本当に欲しいのは多くの場合 2語がどれだけ離れているか(相対位置) です。
RoPE(Rotary Position Embedding)の発想は、位置を足すのをやめ、Q と K のベクトルを位置に応じた角度だけ回転させる ことです。位置 m のトークンの Query を角度 mθ 回し、位置 n の Key を nθ 回す。すると両者の内積は回転の差 (m-n)θ だけに依存し、絶対位置を入力に与えながら、内積には相対距離として効く という両取りが成立します。
RoPE=「位置ベクトルを足す代わりに、Q・K を位置ぶん回転させる」方式。回転は内積の角度差として残るので、Q_m·K_n が自動的に相対位置 (m-n) の関数になる。これが長文脈への強さの源です。
2次元回転で相対位置が現れる仕組み
まず最小単位の2次元で考えます。ベクトル x = (x1, x2) を角度 α 回転させる作用素を R(α) と書くと、回転行列の標準形は次のとおりです。
R(α) = [ cos α -sin α ]
[ sin α cos α ]
位置 m の Query を q_m = R(mθ)·q、位置 n の Key を k_n = R(nθ)·k とします。ここで回転行列の重要な性質 R(a)ᵀ·R(b) = R(b-a) を使うと、内積は次のように畳まれます。
q_mᵀ·k_n = (R(mθ)q)ᵀ (R(nθ)k)
= qᵀ R(mθ)ᵀ R(nθ) k
= qᵀ R((n-m)θ) k
右辺に残った位置情報は (n-m)θ だけ、つまり 絶対位置 m, n は消え、差だけが残る。これが「内積が相対位置に依存する」の数学的な正体です。回転は長さを変えない直交変換なので、ベクトルのノルムや既存の意味情報を壊さずに位置だけを注入できる点も効いています。
実際の次元 d_head は2より大きいので、RoPE は次元を 2個ずつのペアに分け、ペア j ごとに別の角周波数 θ_j = base^(-2j/d)(base は通常 10000)で回転させます。低次元ペアは速く回り(短波長)、高次元ペアはゆっくり回る(長波長)。正弦波エンコーディングと同じ「次元ごとに周期を変える」発想を、加算ではなく回転で実装したものと見なせます。
実装:sin/cos の要素積で書ける
回転行列をブロック対角に並べる代わりに、実装では各ペアの sin/cos を並べたベクトルとの 要素積 で同じ計算をします。ペアごとの2成分を入れ替えた rotate_half を併用するのが定石です。
# q: [seq, d_head]、位置インデックス pos、周波数 inv_freq
freqs = pos[:, None] * inv_freq[None, :] # [seq, d_head/2]
cos = concat(cos(freqs), cos(freqs)) # [seq, d_head]
sin = concat(sin(freqs), sin(freqs))
def rotate_half(x):
x1, x2 = x[..., :d/2], x[..., d/2:]
return concat(-x2, x1)
q_rot = q * cos + rotate_half(q) * sin # R(mθ) を要素演算で適用
k_rot = k * cos + rotate_half(k) * sin
この形なら行列積を増やさず、アテンション前に Q・K を1回変換するだけで済みます。Value には回転をかけない点に注意してください。位置で重み付けしたいのは「どこを見るか」を決める QKᵀ のスコアであって、運ぶ中身である Value ではないからです。KV キャッシュ には回転済みの K を保存します。
ALiBi・絶対位置エンコーディングとの対比
RoPE の立ち位置を、加算系・スコア加算系と並べて整理します。
| 観点 | 正弦波/学習可能(絶対) | RoPE(回転) | ALiBi(スコア加算) |
|---|---|---|---|
| 作用の仕方 | 埋め込みに加算 | Q・K を回転(乗算的) | QKᵀ に距離ペナルティを加算 |
| 表す位置 | 絶対位置 | 相対位置を内積に内包 | 相対距離(線形バイアス) |
| 学習パラメータ | 学習可能は必要 | 不要 | 不要(傾きは固定) |
| 長文への外挿 | 弱い/不可 | 補間で延長しやすい | そのまま外挿に強い |
| 代表的採用 | 原論文・BERT・GPT-2 | LLaMA・Qwen など | BLOOM・MPT など |
ALiBi は位置「埋め込み」を一切持たず、ヘッドごとに固定の傾き s を使って QKᵀ - s·(m-n) のように 遠い語ほどスコアを引き下げる だけのシンプルな方式です。実装が軽く外挿も素直ですが、距離が単調なペナルティに固定されるため表現の自由度は RoPE より低いとされます。RoPE は回転という連続変換で相対位置を埋め込むため、後述の補間で柔軟に文脈長を伸ばせるのが普及の決め手になりました。
文脈長の外挿:補間・NTK-aware・YaRN
訓練長 L_train を超える位置で RoPE が崩れる理由は、未学習の回転角 に踏み込むからです。最も波長の長い(ゆっくり回る)高次元ペアは、訓練中に1周もしておらず、外側の角度を経験していません。ここで素朴に位置をそのまま入れると分布外になり性能が急落します。対策は回転角の与え方を調整することです。
- 位置補間(PI, Position Interpolation) — 位置
mをm·(L_train/L_target)に縮め、全周波数を一律に圧縮する。確実だが、よく学習済みの高周波(短波長・近距離)まで詰めるため近接トークンの分解能が落ちる。 - NTK-aware スケーリング — 一律ではなく
baseを拡大して 低周波(長波長)ほど強く補間、高周波はほぼそのまま に配分する。近距離の解像度を保ちつつ遠距離だけ延ばせるのが利点で、追加学習なしでもある程度効く。 - YaRN — 周波数帯を3つに区切り、訓練中に十分回った高周波は そのまま外挿、回り切らない低周波は 補間、中間帯はその線形混合で滑らかにつなぐ。あわせてアテンションのスケール(温度)も補正する。少量の追加学習で長文性能を大きく改善できる。
鍵は「そのペアが訓練長の中で何周したか」です。波長が訓練長より十分短いペアは外側の角度も経験済みなので 外挿してよい。波長が訓練長より長いペアは未経験の角度に入るので 補間して既知の範囲に押し込む 必要がある。NTK-aware と YaRN はこの判定を周波数帯ごとに自動化したもので、PI の「全部詰める」弊害を避けています。
- RoPE の本質は
R(mθ)ᵀ·R(nθ) = R((n-m)θ)で、内積が相対位置 (m-n) だけの関数になる こと。これを口頭で導けると強い。 - Value には回転をかけない。回転するのは スコアを決める Q・K だけ。
- 加算系(絶対)vs RoPE(回転・相対)vs ALiBi(スコアに距離ペナルティ)の3系統の違いは頻出。
- 外挿は PI=一律圧縮、NTK-aware=低周波ほど圧縮、YaRN=周波数帯で補間/外挿を切替+温度補正、と整理する。
まとめ
RoPE は「位置ベクトルを足す」発想を捨て、Q と K を位置ぶん回転させる ことで Q_m·K_n を相対位置 (m-n) の関数に変えました。回転は直交変換なのでノルムや意味情報を壊さず、絶対位置を入力しながら内積には相対距離として効く——この両取りが長文脈時代に刺さった理由です。文脈長を訓練の数倍へ伸ばすときは、回転角の波長と訓練長の関係を踏まえ、PI・NTK-aware・YaRN と段階を上げていきます。位置の扱いを俯瞰したい場合は Multi-Head Attention と位置エンコーディングの内部 に戻ると、3系統の全体像のなかで RoPE の位置づけが線でつながります。
AI/機械学習 Article
RoPE(回転位置埋め込み)の数理と長文脈外挿を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
RoPE
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
絶対位置を加算する正弦波・学習可能テーブルと違い、RoPE は乗算的に作用し外挿に強い。ALiBi はアテンションスコアに距離ペナルティを足す別系統で、位置埋め込みを使わない。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「RoPE / 位置エンコーディング」に近いか確認する。
- 強みである「RoPE は Q・K のベクトルを2次元ずつペアにして位置 m に比例する角度だけ回転させる方式。回転後の内積 Q_m·K_n が相対位置 (m-n) だけの関数になり、相対位置を内積に自然に埋め込める。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。