位置エンコーディングとは
位置エンコーディング(Positional Encoding)は、Transformerにおいて入力系列の順序情報をモデルに伝えるための手法です。自己注意機構は本質的に順序を考慮しない集合演算であるため、トークンの位置情報を明示的に追加する必要があります。これにより、モデルは「最初の単語」や「3番目のトークン」といった位置関係を理解できるようになります。
正弦波による位置エンコーディング
オリジナルのTransformerでは、異なる周波数の正弦関数と余弦関数を用いて位置情報をエンコードします。偶数次元にはsin関数、奇数次元にはcos関数を適用し、位置ごとにユニークなベクトルを生成します。この方法の利点は、学習パラメータを必要とせず、訓練時に見なかった長さの系列にも外挿できる可能性がある点です。
学習可能な位置エンコーディング
BERTやGPTなどの多くのモデルでは、位置エンコーディングを学習可能なパラメータとして扱います。各位置に対応する埋め込みベクトルを学習することで、タスクに最適な位置表現を獲得します。ただし、この方法では最大系列長が固定されるという制約があります。RoPE(Rotary Position Embedding)やALiBiなど、より高度な位置エンコーディング手法も提案されています。
位置エンコーディングの重要性
位置エンコーディングの設計は、Transformerモデルの性能に直接影響します。適切な位置情報がなければ、モデルは語順を区別できず、「犬が猫を追いかける」と「猫が犬を追いかける」を同じ意味として処理してしまいます。最新の研究では、長い文脈を効率的に扱うための位置エンコーディングの改良が活発に進められています。