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

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

💡 言葉の並び順をAIに教える、見えない座席番号
📌 このページのポイント
位置エンコーディングの仕組み トークン 私は 猫が 好き です 単語埋め込み [0.2, 0.8...] [0.5, 0.1...] [0.9, 0.3...] [0.1, 0.7...] + + + + 位置情報 pos=0 sin/cos pos=1 sin/cos pos=2 sin/cos pos=3 sin/cos = = = = 最終入力 意味+位置 意味+位置 意味+位置 意味+位置 順番がわかる! 1番目の「猫が」 3番目の「猫が」 を区別できる
単語埋め込みに位置情報を加算する仕組み
ひよこ ひよこ

位置エンコーディングって何?なんで必要なの?

ペンギン先生 ペンギン先生

Transformerの自己注意機構(Self-Attention)は、すべての単語を同時に見るから、実は単語の順番を区別できないんだ。「犬が猫を追いかける」と「猫が犬を追いかける」の違いがわからなくなっちゃう。それを防ぐために位置情報を付け加えるのが位置エンコーディングだよ

ひよこ ひよこ

どうやって位置を教えるの?

ペンギン先生 ペンギン先生

元々のTransformer論文では、sin関数とcos関数を使って各位置に固有のパターンを生成して、単語の埋め込みベクトルに足し算するんだ。映画館の座席番号みたいに、各位置に固有のIDを割り振るイメージだよ

ひよこ ひよこ

おもしろい!sin/cos以外のやり方もあるの?

ペンギン先生 ペンギン先生

BERTでは位置ごとに学習可能なベクトルを使う方法が採用されたよ。最近のLLMではRoPE(Rotary Position Embedding)という回転行列を使う方法が人気で、学習時より長い文脈にも対応しやすいのが特徴だね

ひよこ ひよこ

位置エンコーディングがないとどうなるの?

ペンギン先生 ペンギン先生

文章が「単語の袋(Bag of Words)」と同じ扱いになってしまうんだ。語順が大切な自然言語では致命的だよね。ちなみにViT(Vision Transformer)でも画像パッチの位置を教えるために位置エンコーディングが使われていて、言語以外の分野でも重要な技術なんだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「位置エンコーディング」って出てきたら「Transformerに単語の並び順を教える仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Positional Encoding」 = 位置の符号化
💬 positionは位置、encodingは情報を符号に変換すること。単語の位置を数値に変換してAIに教えるからこの名前だよ
← 用語集にもどる