位置エンコーディング
Positional Encoding
Transformerに単語の順序情報を与える仕組み。単語の位置をベクトルとして埋め込み表現に加算する。
位置エンコーディングとは
位置エンコーディング(Positional Encoding)は、Transformerに「単語の順序」情報を伝えるための仕組みです。各単語の位置を数値ベクトルで表現し、埋め込みベクトルに加算することで、モデルが語順を認識できるようにします。
なぜ必要か
TransformerのSelf-Attentionは、文中のすべての単語を並列に処理します。この仕組みは高速で強力な一方、単語の並び順をそのままでは区別できないという弱点があります。
- 「犬が猫を追いかける」
- 「猫が犬を追いかける」
同じ単語の集合でも、順序が違えば意味は正反対です。これを区別するために、位置情報を明示的に注入する必要があります。
仕組みの考え方
- 各位置(0番目、1番目、2番目…)に対して、固有のベクトルを用意
- そのベクトルを単語の埋め込みベクトルに加算
- 結果として「意味+位置」が1つのベクトルに統合される
初期のTransformerではsin・cos関数を使った決定論的な方式が使われていました。近年のLLMでは、**RoPE(Rotary Positional Embedding)**など、より長いコンテキストに適した方式が主流です。
長文対応との関係
コンテキストウィンドウを広げる際、位置エンコーディングの設計は重要な要素です。100万トークンクラスの長文対応モデルでは、位置の外挿がしやすい方式が採用されています。
他との関係
Self-Attentionの「順序が区別できない」という本質的な制約を補う役割を持つ、Transformerの不可欠な部品です。
