長文脈化と位置符号化の外挿
訓練長の数倍まで文脈窓を延ばしても壊れない理由を原理から理解できる。位置補間・NTK-aware・YaRN の効かせ分け、注意のシンクを使うストリーミング推論、そして「使える長さ」を測る評価まで整理。
- 1.学習長 L_train を超えた位置で品質が急落するのは、RoPE の低周波(長波長)ペアが訓練中に一周もしておらず、未学習の回転角=分布外に踏み込むため。単純な文脈窓の拡大では外挿できない。
- 2.位置補間 PI は全周波数を一律に圧縮し近距離解像度を犠牲にする。NTK-aware は base を拡大して低周波ほど強く補間、YaRN は周波数帯ごとに補間/外挿を切替え、さらに注意の温度も補正する。
- 3.注意のシンク(先頭数トークンに集まる注意)を残せば KV を捨てても崩れず、StreamingLLM で無限長の生成が可能。実効長は Needle-in-a-Haystack や RULER で測り、公称窓長と区別する。
なぜ訓練長を超えると壊れるのか
LLM の文脈窓は「アーキテクチャ上いくらでも入る」ものではありません。RoPE(回転位置埋め込み) は Query・Key を位置 m に比例した角度だけ回転させ、次元を2個ずつのペアに分けてペア j ごとに角周波数 θ_j = base^(-2j/d)(base は通常 10000)で回します。ここで問題になるのが 波長 です。高次元ペアは θ_j が小さくゆっくり回る(長波長)、低次元ペアは速く回る(短波長)。
訓練を系列長 L_train までしか行っていない場合、そのペアが訓練中に何ラジアン回ったかは L_train · θ_j で決まります。短波長のペアは訓練内で何周もして角度の全域 [0, 2π) を経験済みですが、最も長波長のペアは一周すら回っておらず、外側の角度を一度も見ていません。推論時に L_train を超える位置をそのまま入れると、このペアは未学習の角度=分布外(out-of-distribution)に踏み込み、注意スコアが暴れて品質が急落します。単純に位置インデックスの上限を上げるだけでは外挿できないのはこのためです。
「128K トークン対応」と謳っても、モデルがその全域で情報を正しく引けるとは限りません。位置符号化の外挿が甘いと、窓の後半に置いた事実を無視したり精度が落ちたりします。公称の窓長(context window)と、実際に性能を保てる 実効文脈長(effective context length) は区別して評価すべき指標です。
位置補間(PI):一律圧縮とその代償
最も素朴で確実な手法が 位置補間(Position Interpolation, PI) です。目標長 L_target を窓に収めるため、位置 m を m · (L_train / L_target) に線形圧縮し、すべての回転角を一律に縮めます。これで最大位置でも回転角は訓練済みの範囲に収まり、分布外を避けられます。少量の追加学習を併用すれば安定します。
代償は 近距離の解像度低下 です。一律圧縮は、すでに十分学習できている短波長(近接トークンを区別する高周波)まで詰めてしまいます。隣り合う語の位置差 θ_j が小さくなり、細かい語順の識別力が落ちる。PI は「全部を等しく潰す」ため、外挿は成立するが近接の分解能を犠牲にするトレードオフを持ちます。
NTK-aware と YaRN:周波数ごとに調整する
PI の弊害を避ける鍵は「そのペアが訓練長の中で何周したか」で扱いを変えることです。波長が L_train より十分短いペアは外側の角度も経験済みなので そのまま外挿してよい。波長が L_train より長いペアだけ 補間して既知の範囲に押し込む 必要があります。
- NTK-aware スケーリング — 位置ではなく
baseを拡大する。baseを大きくすると高次元(低周波)ほど波長が伸びて実質的に強く補間され、低次元(高周波)はほとんど元のまま残る。結果として近距離の解像度を保ちつつ遠距離だけ延ばせる。追加学習なしでもある程度効くのが利点で、拡張率からbaseの倍率を解析的に決められる。 - YaRN(Yet another RoPE extensioN method) — 周波数を波長基準で3帯に区切る。訓練内で十分回った高周波は そのまま外挿、一周も回らない低周波は PI で補間、中間帯は両者を滑らかに線形混合(ramp)でつなぐ。加えて長文化で注意分布が鈍る問題に対し、softmax 前のスコアに温度
1/tを掛けて 注意の鋭さ(エントロピー)を補正 する。ごく少量の追加学習で長文性能を大きく改善でき、現行の長文脈モデルで広く採用される。
| 手法 | 周波数への作用 | 近距離の解像度 | 追加学習 | 温度補正 |
|---|---|---|---|---|
| PI(位置補間) | 全帯を一律圧縮 | 落ちる | 推奨 | なし |
| NTK-aware | 低周波ほど強く補間 | ほぼ保持 | 任意(無しでも可) | なし |
| YaRN | 帯ごとに補間/外挿を切替 | 保持 | 少量で高効率 | あり(1/t) |
文脈が長くなるほど softmax の分母に加わる項が増え、注意分布が平坦化して「どこを見るか」がぼやけます。YaRN はスコアを一律に定数倍することで分布を鋭く保ちます。回転角の調整(どの位置か)と注意温度の調整(どれだけ集中するか)は別の軸で、YaRN は両方を同時に扱う点が PI・NTK-aware との差です。
注意のシンクとストリーミング推論
もう一つの長文脈化の道筋は、位置符号化を延ばすのではなく古い KV を捨てる アプローチです。ここで発見されたのが 注意のシンク(attention sink) 現象です。学習済み Transformer は、意味的に重要でなくても 系列の先頭数トークンへ大量の注意を割り当てる。softmax は総和を1にする制約上、どこかへ確率質量を「捨てる」必要があり、モデルは初期トークンをその捨て場(シンク)として使うよう学習しているためです。
この性質を無視して単純な滑走窓(sliding window)で先頭 KV を捨てると、シンクが消えて注意分布が崩壊し、生成品質が破綻します。StreamingLLM は、先頭の数トークン(シンク)を常に KV キャッシュ に残したまま、それ以降は直近ウィンドウだけ保持する。これによりメモリ・計算量を一定に抑えつつ、事実上 無限長の逐次生成 を安定して続けられます。
StreamingLLM は無限に生成を続けられますが、窓外に押し出したトークンの情報は失われます。つまり「長い会話を破綻させず続ける」用途には向く一方、「文書全体を横断して事実を引く」長文脈タスクの解にはなりません。位置補間系(PI/NTK/YaRN)で実効窓を広げる話と、シンクで生成を延命する話は目的が別だと切り分けて捉えるべきです。
長文脈の評価:Needle からRULERへ
外挿がうまくいったかは、必ず 評価 で確かめます。パープレキシティ は窓を延ばしても下がり続けることがあり、長距離の検索能力を保証しません。そこで用いられるのが検索型のストレステストです。
- Needle-in-a-Haystack(干し草の中の針) — 長大な無関係テキストの中に一文の事実(針)を埋め込み、位置を変えながら正しく取り出せるかを測る。窓の中盤で精度が落ちる「lost in the middle(中盤の見落とし)」が典型的に観測される。
- passkey / パスキー検索 — 乱数列の中に埋めた数字列を復元させる最小構成のテスト。外挿の可否を素早く切り分けられる。
- RULER — 針の本数を増やす、複数の針を追跡する、長文脈上で集計・推論させるなど、単純検索を超えた合成タスク群で 実効文脈長を段階的に測る。公称窓長を大きく下回る実効長が露呈することが多い。
- 外挿が壊れる根因は「低周波(長波長)ペアが L_train 内で一周せず、未学習の回転角=分布外に入る」こと。base と波長の関係で説明できると強い。
- PI=一律圧縮(近距離を犠牲)、NTK-aware=低周波ほど補間(base 拡大)、YaRN=帯ごとに補間/外挿を切替+温度補正、の3段を整理する。
- 注意のシンクは softmax の質量の捨て場。StreamingLLM はシンクを残して滑走窓を回す。ただし窓外の情報は失われる。
- 公称窓長と実効文脈長は別。Needle-in-a-Haystack/RULER で測り、lost in the middle に注意。
まとめ
長文脈化の壁は、注意計算の重さだけでなく 位置符号化の外挿 にあります。RoPE の低周波ペアが訓練長で回りきらず分布外に入るのが本質で、対策は回転角の与え方を周波数ごとに調整すること——PI の一律圧縮から、NTK-aware の低周波偏重、YaRN の帯別切替+温度補正へと精度を上げます。生成を延命したいだけなら注意のシンクを残す StreamingLLM が有効ですが、これは窓を広げる手法とは目的が異なります。そして成果は公称窓長ではなく、Needle-in-a-Haystack や RULER で測る実効文脈長で判断します。注意計算そのものを線形コストに置き換える別路線は 状態空間モデルと Mamba を参照すると、長文脈へのもう一つのアプローチとして対比できます。
AI/機械学習 Article
長文脈化と位置符号化の外挿を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
長文脈
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
位置補間 PI は全周波数を一律に圧縮し近距離解像度を犠牲にする。NTK-aware は base を拡大して低周波ほど強く補間、YaRN は周波数帯ごとに補間/外挿を切替え、さらに注意の温度も補正する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「長文脈 / RoPE」に近いか確認する。
- 強みである「学習長 L_train を超えた位置で品質が急落するのは、RoPE の低周波(長波長)ペアが訓練中に一周もしておらず、未学習の回転角=分布外に踏み込むため。単純な文脈窓の拡大では外挿できない。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。