【いちえんこーでぃんぐ】

位置エンコーディング とは?

最終更新:
💡 トークンの「どこにあるか」を計算に伝える

Transformerなどで、トークンの位置や相対的な並びを計算に反映する技法。位置ベクトルを埋め込みに足す方式や、注意計算のベクトルを回転させる方式などがある。

📌 このページのポイント
位置情報を足す方式の例 猫 トークン埋め込み [0.2, 0.8] + 位置0 [0.0, 1.0] = [0.2, 1.8] 猫 トークン埋め込み [0.2, 0.8] + 位置1 [0.6, 0.3] = [0.8, 1.1] 同じトークンでも、位置で入力が変わる
2次元の架空の数値で、加算を示しています。元論文のsin/cosの計算値ではありません。RoPEなど加算以外の方式もあります。
ひよこ ひよこ
なぜ位置の情報が必要なの?
ペンギン先生 ペンギン先生
位置の情報や順序を示す制約がない自己注意は、各トークンの内容同士を比べるだけなんだ。語順を扱うには、何番目にあるか、別のトークンからどれくらい離れているか、といった手がかりを計算に入れる必要があるよ。
ひよこ ひよこ
どうやって教えるの?
ペンギン先生 ペンギン先生
元のTransformerでは、位置ごとにsin/cosからベクトルを作り、トークンの埋め込みと足すよ。同じトークンでも位置によって足される値が違う。図は、その加算を簡単な数値で表した例なんだ。
ひよこ ひよこ
位置は必ず足し算で入れるの?
ペンギン先生 ペンギン先生
いいえ。BERTには学習する位置埋め込みがあるし、RoPEは注意のqueryとkeyを位置に応じて回転させる。回転後の内積に相対位置が反映される仕組みで、入力への単純な足し算とは異なるよ。
ひよこ ひよこ
RoPEなら、どれだけ長い文章でも読める?
ペンギン先生 ペンギン先生
位置を数式で表せることと、長い文章を正確に扱えることは別だよ。モデルが学習した長さや追加の調整、計算量などにも左右される。位置表現だけで文脈の長さや精度が保証されるわけではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「位置エンコーディング」って出てきたら「AIの計算にトークンの位置を伝える仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Positional Encoding」 = 位置の符号化
💬 positionは位置、encodingは情報を符号に変換すること。単語の位置を数値に変換してAIに教えるからこの名前だよ

参考資料

← 用語集にもどる