あらゆる単語を互いに突き合わせる。そのほとんどは無駄になる。 アテンションの肝は、どの単語も他のすべての単語を見られること。美しい——そして過酷だ。コストは長さの二乗で増える。テキストを倍にすれば作業は四倍。町を一軒ずつ配線するように:あらゆる組に専用の線を引き、空は交差するケーブルで埋まる——その大半は一度も使われない。格子はほとんど空っぽだ。なぜその全部に払うのか?
あの巨大な格子の大半は、何も担っていない。 cells=n2,useful≈n k,n kn2=kn→0 (k≪n)\text{cells}=n^2,\quad \text{useful}\approx n\,k,\quad \frac{n\,k}{n^2}=\frac{k}{n}\to 0\ \ (k\ll n) 単語のアテンションが実際にどこへ向かうかを見よう:近くの数語と、遠くのいくつかの拠り所だけ。行の残りはほぼゼロだ。芝生を横切る踏み跡のように:渡り方は無数にあるのに、人々が踏み固めるのはわずか数本——隅は手つかずのまま。n²通りの結びつきのうち、本当の重みは細い帯に収まる——しかもその帯k⁄nは、テキストが伸びるほど痩せていく。では、どの組なら安全に飛ばせるのか?
最初の逃げ道:隣だけを見ればいい。 Attn(qi)=softmax (qiKi−w:i⊤d)Vi−w:i (cost O(nw)),reach after L layers≈L w\text{Attn}(q_i)=\operatorname{softmax}\!\Big(\tfrac{q_i K_{i-w:i}^{\top}}{\sqrt d}\Big)V_{i-w:i}\ \ (\text{cost }O(nw)),\qquad \text{reach after }L\text{ layers}\approx L\,w いちばん単純な切り詰め:各単語が近くの単語の窓だけを見るようにする——直近のw語であって、n語すべてではない。コストは二乗から直線へ落ちる。スタジアムのウェーブのように:一人ひとりは両隣の二人しか見ていないのに、波はアリーナ全体を駆け抜ける。層を何段か重ねれば届く範囲は広がり——L段の後には、ひとつの単語の視野はおよそL·wにまで伸びる。
それでも、遠く離れた単語どうしは出会う必要がある。 cost=O (n(w+g)),g≪n;any pair connects in ≤2 hops via a global token\text{cost}=O\!\big(n(w+g)\big),\quad g\ll n;\qquad \text{any pair connects in }\le 2\text{ hops via a global token} 隣だけにすると、長い糸はすべて断ち切られてしまう。手当て:少数のグローバルな拠り所を残す——全員を見て、全員から見られるトークンだ。すると遠い二語も、その拠り所を介して二回の短い跳躍でつながる。ハブ空港のように:小さな町どうしは互いに直行便を飛ばさない——いくつかのハブを経由させれば、どこからでもどこへでも届く。格子はほぼ空のまま、それでも全体は会話を続ける。
より大胆な逃げ道:そもそも格子を作らない。 Attn(qi)=ϕ(qi)⊤∑jϕ(kj) vj⊤ϕ(qi)⊤∑jϕ(kj) ,(QK⊤)V: O(n2d) → Q(K⊤V): O(nd2)\operatorname{Attn}(q_i)=\dfrac{\phi(q_i)^{\top}\sum_j \phi(k_j)\,v_j^{\top}}{\phi(q_i)^{\top}\sum_j \phi(k_j)}\,,\qquad (QK^{\top})V:\ O(n^2d)\ \to\ Q(K^{\top}V):\ O(nd^2) 疎なアテンションは、それでも薄い格子を描く。線形アテンションは、そもそも描くことを拒む。softmaxの指数を素朴な特徴写像に置き換えると、掛け算の順序が自由になる:まずクエリ×キーを作る代わりに、すべてのキーと値を一つの小さな累積サマリーに畳み込み、各クエリにそれを読ませる。川の合流のように:どの町もすべての源泉へ引くのではなく、すべての源泉が一本の川を養い、各町はそこから汲むだけ。二乗が直線になる。
ただし、正直に言えば落とし穴がある。 exp (q⊤k/d) ≈ ϕ(q)⊤ϕ(k)⇒olin≠osoftmax(exact: o=oexact)\exp\!\big(q^{\top}k/\sqrt d\big)\;\approx\;\phi(q)^{\top}\phi(k)\quad\Rightarrow\quad o_{\text{lin}}\neq o_{\text{softmax}}\quad(\text{exact: }o=o_{\text{exact}}) どれも無料ではない。疎なアテンションは、切り捨てた組は重要でなかったと賭ける;線形アテンションは、softmaxの鋭いスポットライトを柔らかなぼかしに替える。どちらも完全版とは少しだけ違う答えを返す——一致ではなく近似だ。群れをひと目で数えるように:視線をさっと走らせれば素早くおおよその数は出る——だがそれは見積もりであって、一頭ずつの勘定ではない。指数の鋭い山は、小さく固定された写像にぴったりは収まらない;一方で厳密な高速化は、運ぶメモリを減らすだけで答えを決して変えない。
見返り:長さはもう壁ではなくなる。 O(n2d) ⟶ O(nwd)⏟sparse or O(nd2)⏟linear,cost(2n)cost(n)=2O(n^2d)\ \longrightarrow\ \underbrace{O(nwd)}_{\text{sparse}}\ \text{or}\ \underbrace{O(nd^2)}_{\text{linear}},\qquad \frac{\text{cost}(2n)}{\text{cost}(n)}=2 勘定してみよう。完全版のコストは二乗で増えていた;いまは直線で増える。テキストを倍にすれば作業も倍——四倍にはならない。道沿いの街灯のように:一マイル延ばせば、街灯が数本増えるだけ——コストは一定の歩幅で上がるから、道は地平線まで延ばせる。その直線こそが、とても長い文脈——本まるごと、何時間もの会話——をついに手の届くものにする。
🌱 心は何を安全に無視できて——それでも理解できるのか? あなたはこの文のどの単語も、互いに突き合わせてなどいない。大事な数語に寄りかかり、残りはぼかしておく——それでも全体をつかむ。夜明けの窓のように:くっきり見えるのは最も近い尾根だけで、遠い山並みは霞に溶ける——それでも谷ぜんたいを見渡せる。完全な格子など、はじめから要点ではなかったのかもしれない。理解とは、つねにほとんど局所的なものだったのかもしれない——闇を横切る、わずかな長い糸とともに。