【ロープ】

RoPE(回転位置埋め込み) とは?

最終更新:
💡 ベクトルを回して、トークンの位置を計算に組み込む

Transformerでトークンの位置を表す方法の一つ。QueryとKeyのベクトルを位置に応じて回転させ、アテンションの内積に相対位置の情報を組み込む。

📌 このページのポイント
位置をベクトルの回転で表す 説明用の角度:1位置分 θ=30° 0:0° 1:30° 2:60° 位置番号 m 回転角 mθ ペアごとに θが異なる QueryとKeyの内積に効く位置情報 位置差 n−m に応じた回転 内容のベクトルも計算に残る
一つの2次元ペアで、同じベクトルを位置0・1・2へ置いた説明用の例。矢印はベクトルの向き。実際には内容もペアごとの回転の速さも異なる。
ひよこ ひよこ
RoPEは何に位置を与えるの?
ペンギン先生 ペンギン先生
Transformerが扱うトークンの位置だよ。単語が複数のトークンに分かれる場合もある。RoPEはアテンションで使うQueryとKeyに回転を適用して、位置の情報を計算に組み込むんだ
ひよこ ひよこ
回転するってどういうこと?
ペンギン先生 ペンギン先生
ベクトルの成分を2つずつ組にして、その平面で回すよ。あるペアの位置番号をm、1位置分の角度をθとすれば、mθだけ回す。0から数えるなら、3番目のトークンの番号は2だね。ペアごとにθは異なるんだ
ひよこ ひよこ
回転させると何が分かるの?
ペンギン先生 ペンギン先生
位置mのQueryと位置nのKeyの内積では、位置に関する回転は差n−mで表せるよ。内容を表すベクトルも計算に残るので、内積が距離だけで決まるわけではないんだ
ひよこ ひよこ
位置ベクトルを足す方式と何が違うの?
ペンギン先生 ペンギン先生
入力の埋め込みに位置ベクトルを足す方式に対し、RoPEはQueryとKeyを回すよ。位置情報を組み込む方法にはほかにも種類があり、従来方式を全部まとめて「足す方式」とは言えないんだ
ひよこ ひよこ
長い文章なら、どこまでも扱える?
ペンギン先生 ペンギン先生
そうとは限らないよ。LLaMAなどRoPEを使うモデルで、位置番号を縮めて学習時の範囲に対応させるPosition Interpolationが研究されている。長文脈への拡張では調整や追加学習、出力品質の評価も考えるんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「RoPE」って出てきたら「QueryとKeyを回して、位置の情報を与える方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Rotary Position Embedding」 = 回転位置埋め込み
💬 Rotary(回転する)・Position(位置)・Embedding(埋め込み)から来た名前だよ。位置を回転として組み込む方法で、RoFormer論文で提案されたんだ

参考資料

← 用語集にもどる