Sinusoidal Position Encoding(正弦波位置エンコーディング)(セイゲンハイチエンコーディング)
2017年のオリジナルTransformer論文で提案された位置エンコーディング手法。正弦(sin)と余弦(cos)関数を異なる周波数で組み合わせ、各位置に一意のベクトルを割り当てる。学習パラメータ不要で決定論的に生成される。
Sinusoidal Position Encoding(正弦波位置エンコーディング)とは
Sinusoidal Position Encoding は、Vaswani et al.が2017年の「Attention Is All You Need」論文でオリジナルTransformerとともに提案した位置エンコーディング手法である。sin関数とcos関数を異なる周波数で組み合わせ、各トークン位置に一意の固定ベクトルを割り当てる。
概要
Transformerのself-attention機構は入力の順序に不変(permutation invariant)であるため、「私は猫が好き」と「猫は私が好き」を区別できない。この問題を解決するため、各位置に固定の位置ベクトルを加算する。
Sinusoidal PEの数式:
- PE(pos, 2i) = sin(pos / 10000^(2i/d))
- PE(pos, 2i+1) = cos(pos / 10000^(2i/d))
ここで pos はトークンの位置、i は次元インデックス、d はモデルの埋め込み次元数である。
設計の意図
Vaswaniらがsin/cosを選んだ理由は3つある:
- 相対位置の線形表現: PE(pos+k) は PE(pos) の線形変換で表現できる。これにより、モデルは相対位置の関係を学習しやすくなる
- 任意の位置に対応: 学習パラメータを使わないため、理論上は任意の長さのシーケンスに適用可能
- 周波数の多様性: 低次元は低周波(長距離パターン)、高次元は高周波(短距離パターン)をエンコードし、多スケールの位置情報を表現
数学的性質
| 性質 | 説明 | 実用上の意味 |
|---|---|---|
| 決定論的 | 学習不要、入力に依らず固定 | 推論時に事前計算可能 |
| 有界 | 値は [-1, 1] の範囲 | 数値的に安定 |
| 周期的 | 各次元が異なる周期を持つ | 位置の一意性を保証(十分な次元数で) |
| 線形変換可能 | PE(pos+k) = T_k × PE(pos) | 相対位置の学習が容易 |
実装例
import torch
import math
def sinusoidal_position_encoding(max_len, d_model):
pe = torch.zeros(max_len, d_model)
position = torch.arange(0, max_len).unsqueeze(1).float()
div_term = torch.exp(
torch.arange(0, d_model, 2).float() * -(math.log(10000.0) / d_model)
)
pe[:, 0::2] = torch.sin(position * div_term)
pe[:, 1::2] = torch.cos(position * div_term)
return pe
d_model=512 の場合、10000^(2i/d) は:
- i=0: 周期 = 2π ≈ 6.28 位置
- i=128: 周期 ≈ 628 位置
- i=255: 周期 ≈ 62,832 位置
採用モデルと歴史
| モデル/システム | 年 | 位置エンコーディング | 最大長 |
|---|---|---|---|
| Transformer(原論文) | 2017 | Sinusoidal | 制限なし(理論上) |
| BERT | 2018 | Learned(学習型) | 512 |
| GPT-2 | 2019 | Learned(学習型) | 1024 |
| GPT-3 | 2020 | Learned(学習型) | 2048 |
| LLaMA | 2023 | RoPE | 2048-4096 |
| LLaMA 3 | 2024 | RoPE | 8192-128K |
Sinusoidal PEはオリジナルTransformer(機械翻訳)で使われたが、BERT以降のLLMでは学習型の位置埋め込みに置き換えられ、さらにRoPEへと進化した。ただし、Sinusoidal PEの数学的原理はRoPEの設計にも影響を与えている。
限界と後継技術への発展
Sinusoidal PEの主な限界:
- 外挿能力: 理論上は任意の長さに対応するが、実際には訓練時に見ていない位置での性能が低い
- 絶対位置の固定: 相対位置の学習にはモデル側の負担が大きい
- Attention機構との統合が間接的: 埋め込みに加算するため、Attentionスコアへの位置情報の伝達が不完全
これらの限界を克服するために開発されたのが:
- ALiBi: 位置埋め込みを廃止し、Attentionバイアスで置換
- RoPE: 回転行列で相対位置をAttention内積に直接反映
- YaRN/NTK: RoPEの外挿能力を強化
よくある質問(FAQ)
Q1: Sinusoidal PEは今でも使われている? A: 2026年時点の主要LLMでは使われていない。ただし、機械翻訳モデル、音声認識の一部、Vision Transformerの初期実装などでは依然として採用例がある。教育・研究目的では最も理解しやすい位置エンコーディングとして重要。
Q2: 学習型の位置埋め込みとの違いは? A: Sinusoidal PEは固定値で学習パラメータがゼロ。学習型はランダム初期化された埋め込みテーブルをデータから最適化する。BERTの実験では両者の性能差はほぼなかったが、学習型は最大長を事前に決める必要がある(BERTは512、GPT-2は1024)。
Q3: なぜ10000がbase値として選ばれた? A: Vaswaniらの論文では明確な理論的根拠は示されていない。経験的に10000が良い結果を出したとされる。この値は後のRoPEにも引き継がれ、d=128の場合に2πから約63,000までの広い周期範囲をカバーする。
まとめ
- Sinusoidal PEはTransformerの原点となった位置エンコーディング
- sin/cos関数の異なる周波数で各位置を一意にエンコード
- 学習パラメータ不要で決定論的に計算可能
- 2024年以降はRoPEに主役を譲ったが、概念的基礎として重要
- RoPE、ALiBi、YaRNはすべてSinusoidal PEの限界を克服する試み