Transformer論文(Vaswani et al., 2017)で提案された位置エンコーディングの元祖。sin関数とcos関数を異なる周波数で組み合わせることで、各位置に一意のベクトルを割り当てる。学習パラメータが不要で、理論上は任意の長さの系列に対応可能。
Sinusoidal Position Encoding は、「Attention Is All You Need」(Vaswani et al., 2017)で Transformer と共に提案された最初の位置エンコーディング手法である。sin 関数と cos 関数を用いて各トークン位置に一意のベクトルを生成し、トークン埋め込みに加算することでTransformerに順序情報を与える。
位置 pos、次元 i に対する位置エンコーディングは以下の式で定義される:
| 次元 | 計算式 |
|---|---|
| 偶数次元 (2i) | PE(pos, 2i) = sin(pos / 10000^(2i/d_model)) |
| 奇数次元 (2i+1) | PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model)) |
ここで d_model はモデルの埋め込み次元数(元祖Transformerでは512)である。
各次元ペア (2i, 2i+1) は異なる周波数の正弦波を持つ。
| 次元ペア | 波長 | 捉える位置関係 |
|---|---|---|
| i=0 | 2π ≈ 6.28 | 極めて局所的 |
| i=中間 | 中程度 | 中距離の位置関係 |
| i=d/2-1 | 2π × 10000 ≈ 62,832 | 大域的な位置関係 |
低次元は高周波で局所的な位置差を、高次元は低周波で大域的な位置関係を表現する。この多スケール構造により、モデルは近接関係と遠距離関係の両方を捉えることができる。
任意の固定オフセット k に対して、PE(pos+k) は PE(pos) の線形変換として表現できる。具体的には、2×2の回転行列 M_k が存在し、各次元ペアについて以下が成り立つ:
[PE(pos+k, 2i), PE(pos+k, 2i+1)] = M_k × [PE(pos, 2i), PE(pos, 2i+1)]
この性質により、モデルは相対位置を学習しやすくなる。
異なる位置 pos_1 ≠ pos_2 に対して、PE(pos_1) ≠ PE(pos_2) が保証される。各次元ペアの位相が異なるため、全ての位置が一意に識別可能である。
全ての要素が [-1, 1] の範囲に収まるため、トークン埋め込みとのスケールの不整合が起きにくい。
| 特性 | Sinusoidal | Learned | RoPE | ALiBi |
|---|---|---|---|---|
| 提案年 | 2017 | 2018 | 2021 | 2022 |
| 学習パラメータ | なし | 位置数×d_model | なし | なし |
| 位置情報の注入 | 加算 | 加算 | 乗算(回転) | バイアス加算 |
| 相対位置の表現 | 間接的 | なし | 直接的 | 直接的 |
| 外挿性能 | 低い | 不可 |
大規模言語モデルではRoPEやALiBiに主役の座を譲ったが、正弦波エンコーディングの設計思想は後継手法に深く影響を与えている。RoPEの周波数スケジュール θ_i = 10000^(-2i/d) は、正弦波エンコーディングと同一の設計を踏襲している。
また、Vision Transformer(ViT)の位置エンコーディングや、音声処理、時系列解析など非言語タスクでは依然として広く使われている。
10000は周波数範囲を制御するハイパーパラメータで、Vaswani et al.が実験的に選択した値。この値により、最低周波数の波長が約62,832となり、数万トークンの系列でも位置を区別できる。
主に2つの理由がある。第一に、位置情報がトークン埋め込みに加算されるため、Attention計算で相対位置が直接表現されない。第二に、訓練時のコンテキスト長を超えた外挿性能が低い。RoPEはこれらの課題を回転行列で解決した。
Sinusoidalは関数で位置ベクトルを生成するため追加パラメータが不要だが、Learnedは位置ごとにベクトルを学習する。BERT等の実験では両者の性能差は小さかったが、Learnedは訓練データに見ない位置への汎化が本質的に不可能である。
| 中〜高(拡張込み) |
| 高い |
| 現在の使用状況 | 非LLM分野で現役 | BERT系で現役 | LLM標準 | 一部LLM |