AI・機械学習
中級

Sinusoidal Position Encoding(正弦波位置エンコーディング)(セイゲンハイチエンコーディング)

2017年のオリジナルTransformer論文で提案された位置エンコーディング手法。正弦(sin)と余弦(cos)関数を異なる周波数で組み合わせ、各位置に一意のベクトルを割り当てる。学習パラメータ不要で決定論的に生成される。

0 回閲覧
0 いいね

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つある:

  1. 相対位置の線形表現: PE(pos+k) は PE(pos) の線形変換で表現できる。これにより、モデルは相対位置の関係を学習しやすくなる
  2. 任意の位置に対応: 学習パラメータを使わないため、理論上は任意の長さのシーケンスに適用可能
  3. 周波数の多様性: 低次元は低周波(長距離パターン)、高次元は高周波(短距離パターン)をエンコードし、多スケールの位置情報を表現

数学的性質

性質説明実用上の意味
決定論的学習不要、入力に依らず固定推論時に事前計算可能
有界値は [-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(原論文)2017Sinusoidal制限なし(理論上)
BERT2018Learned(学習型)512
GPT-22019Learned(学習型)1024
GPT-32020Learned(学習型)2048
LLaMA2023RoPE2048-4096
LLaMA 32024RoPE8192-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の限界を克服する試み