LLM位置エンコーディング(エルエルエムイチエンコーディング)
Transformerモデルにおいてトークンの並び順情報を付与する技術の総称。Self-Attentionは本来順序を区別できないため、位置エンコーディングがなければ「猫が犬を追う」と「犬が猫を追う」を同一視してしまう。絶対位置・相対位置・回転型など複数の方式が研究されている。
LLM位置エンコーディング(Position Encoding)とは
Transformerアーキテクチャにおいて、トークンの順序情報をモデルに伝える技術が位置エンコーディングである。Self-Attention機構は入力の順番を本質的に区別できないため、位置情報の注入がなければ文の意味を正しく理解できない。
概要
2017年の「Attention Is All You Need」論文で提案されたオリジナルTransformerでは、正弦波(Sinusoidal)関数による絶対位置エンコーディングが採用された。以降、BERT(学習可能な絶対位置埋め込み、最大512トークン)、GPT-2(学習可能な絶対位置、最大1024トークン)を経て、2024-2026年の最新モデルではRoPE(Rotary Position Embedding)が主流となっている。
位置エンコーディングの選択はモデルの長文処理能力に直結する。GPT-4 Turboの128Kトークン、Claude 3.5の200Kトークン、Gemini 1.5 Proの2Mトークンといったコンテキスト長の拡大は、位置エンコーディング技術の進化なしには実現し得なかった。
主な方式と分類
位置エンコーディングは大きく3つのカテゴリに分類される。
- 絶対位置エンコーディング: 各トークンに固定の位置ベクトルを割り当てる。Sinusoidal(正弦波)や学習可能な埋め込みが該当
- 相対位置エンコーディング: トークン間の距離に基づいて位置情報を注入する。ALiBi(Attention with Linear Biases)やT5のRelative Position Biasが該当
- 回転位置エンコーディング: クエリとキーのベクトルを回転行列で変換し、内積計算時に相対位置情報が自然に現れる。RoPEが代表例
| 方式 | 代表例 | 訓練長外挿 | 計算コスト | 採用モデル |
|---|---|---|---|---|
| 絶対位置(正弦波) | Sinusoidal | 困難 | O(1) | オリジナルTransformer |
| 絶対位置(学習) | Learned PE | 困難 | O(1) | BERT, GPT-2 |
| 相対位置バイアス | ALiBi | 良好 | O(n) | BLOOM-176B, MPT-7B/30B |
| 回転位置埋め込み | RoPE | 中程度(拡張で良好) | O(d) | LLaMA 3, Mistral, Qwen2.5 |
| 拡張RoPE | YaRN, NTK-aware | 優秀 | O(d) | LLaMA 3.1-128K, CodeLlama-100K |
長文対応と外挿問題
位置エンコーディングの最大の技術課題は「外挿(Extrapolation)」である。訓練時に見た最大シーケンス長を超える推論時に、モデルの性能が急激に劣化する現象を指す。
- Sinusoidal/Learned PE: 訓練長を超えると急速に崩壊。BERTは512トークン、GPT-2は1024トークンが上限
- ALiBi: 線形バイアスの性質上、訓練長の2-4倍程度まで外挿可能。BLOOM-176Bは2048トークンで訓練し、8192トークンまで推論可能
- RoPE: 素のRoPEは外挿能力が限定的だが、NTK-aware Scaling(θの基数を拡大)やYaRN(周波数帯域ごとの適応的スケーリング)により、4096トークン訓練から128Kトークン推論を実現
2026年時点で最も長いコンテキストを実現しているのはGemini 1.5 Pro(2Mトークン、RoPEベースの独自拡張)とClaude 3.5 Opus(200Kトークン)である。
実装の具体例
RoPEの基本実装(PyTorch):
import torch
def rotary_embedding(x, seq_len, dim, base=10000):
positions = torch.arange(seq_len, dtype=torch.float32)
freqs = 1.0 / (base ** (torch.arange(0, dim, 2).float() / dim))
angles = positions.unsqueeze(1) * freqs.unsqueeze(0)
cos_vals = torch.cos(angles)
sin_vals = torch.sin(angles)
x1, x2 = x[..., ::2], x[..., 1::2]
return torch.cat([x1 * cos_vals - x2 * sin_vals,
x1 * sin_vals + x2 * cos_vals], dim=-1)
NTK-aware RoPE Scalingでは base パラメータを拡大する:
- 元の base: 10,000
- 4倍外挿: base = 10,000 × 4^(dim/(dim-2)) ≈ 160,000
- LLaMA 3.1の128K対応: base = 500,000
最新動向(2025-2026年)
- LongRoPE(Microsoft, 2024): 2つの短いRoPE rescale factorで2048Kトークンまで外挿。LLaMA2-7Bで実証
- Ring Attention(UC Berkeley, 2024): 位置エンコーディングとは別アプローチで、複数GPU間でAttentionブロックをリング状に回すことで理論上無制限のコンテキスト長を実現
- FIRE(Functional Interpolation for Relative Positional Encoding, 2024): 学習可能な連続関数で相対位置をエンコード。T5やRoPEより低い外挿劣化
- CoPE(Contextual Position Encoding, Meta, 2024): コンテンツに依存する位置エンコーディング。トークンの意味に応じて位置の重みを動的に調整
関連用語との違い
| 概念 | 役割 | 位置エンコーディングとの関係 |
|---|---|---|
| トークン埋め込み | 語彙の意味をベクトル化 | 位置エンコーディングと加算/結合される |
| Self-Attention | トークン間の関係性を計算 | 位置情報がないと順序を無視する |
| KVキャッシュ | 推論時の計算結果を再利用 | 位置エンコーディングの値も含めてキャッシュ |
| Flash Attention | Attentionの高速化手法 | 位置情報の計算には直接影響しない |
よくある質問(FAQ)
Q1: 位置エンコーディングがないとどうなる? A: Transformerは入力トークンの順序を完全に無視する。「AがBを食べた」と「BがAを食べた」が同一の出力を生む。Bag-of-Words的な振る舞いになり、文法や論理構造を学習できない。
Q2: RoPEが主流になった理由は? A: 相対位置の情報を内積演算に自然に組み込めるため、追加パラメータなしで外挿能力を持つ。ALiBiよりも表現力が高く、NTK-aware ScalingやYaRNとの組み合わせで長文対応が容易なことが決め手となった。
Q3: 位置エンコーディングと文脈長の関係は? A: 位置エンコーディングの方式が文脈長の上限を事実上決定する。Sinusoidalは訓練長に縛られ、ALiBiは2-4倍の外挿が限界、RoPE+YaRNなら32倍以上の外挿が可能。2026年の100K-2Mトークンモデルはすべて高度な位置エンコーディング技術に依存している。
Q4: 自作PCでLLMを動かす際に位置エンコーディングは影響する? A: 直接的には意識する必要はないが、長いコンテキスト長のモデルはKVキャッシュのVRAM消費が大きくなる。例えばLLaMA 3.1-70B-128Kを全長で推論するにはGPU 80GB×2枚(A100/H100)が必要。ローカル推論ではコンテキスト長を制限(4096-8192)することでVRAM節約が一般的。
まとめ
- 位置エンコーディングはTransformerに順序情報を与える必須技術
- 2026年の主流はRoPE + NTK-aware/YaRN拡張
- Sinusoidal → 学習型 → ALiBi → RoPE → 拡張RoPEと進化
- 外挿能力の向上が100K-2Mトークンの長文処理を実現
- LongRoPE、Ring Attention、CoPEなど次世代技術が活発に研究中