Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Rotary Position Embedding (RoPE)

回転位置埋め込み(RoPE)は、トークンの位置に応じてクエリベクトルとキーベクトルを回転させ、アテンションスコアに相対距離を反映します。多くのオープンLLMで使われています。

Rotary Position Embedding(RoPE)は、各クエリベクトルとキー・ベクトルをトークン位置に比例した角度だけ回転させることで、Transformerにトークンの順序を伝えます。自己アテンションだけでは単語の順序を区別できないため、モデルには位置情報を何らかの形で与える必要があります。RoPEでは、位置mのクエリと位置nのキーの間のアテンションスコアは、そのオフセットm − nだけに依存します。RoPEは2021年にRoFormerモデルとともに発表され、EleutherAIのGPT-JとGPT-NeoXによって普及しました。現在では、Llama、Mistral、Qwen、Gemma、DeepSeekなどのオープンな大規模言語モデル(LLM)で標準的な位置エンコーディングになっています。

RoPEの仕組み#

RoPEでは、次元数dの各クエリベクトルとキー・ベクトルを、d/2個の特徴ペアに分け、それぞれを平面上の点として扱います。位置mでは、ペアiを角度m·θᵢだけ回転させます。θᵢ = base^(−2i/d)であり、元の論文ではbaseに10,000を使います。最初のペアは速く回転して近傍の細かな順序を区別し、最後のペアはゆっくり回転して数千位置離れたトークンも区別します。クエリをmθ、キーをnθだけ回転させても、内積は差分(m − n)θだけに依存し、回転によってベクトルの長さが変わることはありません。回転は、クエリとキーの射影後に各アテンション層内で適用します。値ベクトルは回転せず、入力時のトークン埋め込みにも何も加えません。

以下のスニペットは、MetaのLlamaリファレンスコードと同様に複素数を使って回転を実装し、相対位置の性質を検証します。

import torch

torch.manual_seed(0)
dim = 64
freqs = 10000 ** (-torch.arange(0, dim, 2) / dim)  # one rotation frequency per pair of features


def rope(x, pos):
    """Rotate each consecutive feature pair of x by the angle pos * frequency."""
    pairs = torch.view_as_complex(x.reshape(-1, 2))
    return torch.view_as_real(pairs * torch.polar(torch.ones_like(freqs), pos * freqs)).flatten()


q, k = torch.randn(2, dim)
# The same query and key, three tokens apart, at two different places in the sequence
print(f"positions 5 and 2:     {rope(q, 5) @ rope(k, 2):.4f}")
print(f"positions 105 and 102: {rope(q, 105) @ rope(k, 102):.4f}")
print(f"positions 5 and 4:     {rope(q, 5) @ rope(k, 4):.4f}")  # one token apart
print(f"Vector length kept: {rope(q, 5).norm():.4f} vs {q.norm():.4f}")

位置5と2、または105と102にある場合でも、どちらのペアも3トークン離れていれば、出力は-8.2811になります。同じベクトルが1トークン離れている場合は、-11.4563になります。回転後のクエリの長さは8.3705のままです。

RoPEとその他の位置エンコーディングの比較#

  • 正弦波絶対位置エンコーディング:元のTransformerでは、最初の層の前に固定の正弦・余弦ベクトルを入力埋め込みに1回加えます。相対距離は、混ぜ込まれた信号から推論する必要があります。
  • 学習可能な絶対位置埋め込み:BERTとGPT-2は位置ごとに1つのベクトルを学習しますが、最大512位置と1,024位置までで、それを超える位置の埋め込みはありません。
  • 相対位置バイアス:T5とALiBiは、学習可能または固定の距離ベースのバイアスをアテンションスコアに加えます。RoPEは回転自体で相対距離をエンコードし、パラメーターを追加しません。

コンテキストウィンドウの拡張#

RoPEをシーケンス長Lで学習したモデルは、Lを超える位置の回転角度を見たことがなく、それらの位置に遭遇するとアテンションの性能が低下します。コンテキスト拡張手法では、最初から再学習する代わりに角度を再スケーリングします。Position Interpolationは、新しい位置を学習済みの範囲に収め、1,000回のファインチューニングステップ以内にLlamaモデルのコンテキストウィンドウを32,768トークンに拡張しました。NTK-aware scalingとYaRNは、速く回転するペアよりも遅く回転する低周波数のペアを大きく伸ばします。YaRNは、以前の手法より学習トークン数を10分の1に抑えながら、Llama 2を128Kトークンまで拡張しました。Llama 3は事前学習中にbaseを10,000から500,000に引き上げたため、最も遅いペアのトークンごとの回転量が小さくなり、遠く離れた位置も区別できます。

ビジョンモデルにおけるRoPE#

画像には2つの座標が必要なため、ビジョントランスフォーマーは2D、つまり軸方向のRoPEを使います。各ヘッドの特徴ペアの半分はパッチの列に応じて回転し、残りの半分は行に応じて回転します。Qwen2-VLはマルチモーダルなM-RoPEに時間軸を3つ目の軸として追加し、動画に対応します。Ultralyticsパッケージで動作するMetaのSAM 2は、メモリアテンションの4つの層で軸方向RoPEを適用します。この層では、現在の動画フレームの特徴が、過去のフレームから保存された特徴にアテンションを向けます。保存されたすべてのフレームのキーには、現在のフレームのクエリと同じグリッドの角度が割り当てられるため、両者間のアテンションはパッチ間の空間オフセットに依存します。

Explore solutions

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを活用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、環境モニタリング、自然保護、地理空間分析に役立てましょう。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOモデルで航空モニタリングにビジョンAIを導入しましょう。コンピュータービジョンソリューションで、ドローン、航空宇宙のワークフロー、環境保全、地理空間業界を支援します。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう