なぜ文脈が2倍になると、コストは4倍になるのか。

SRC·14 Source
テキストが2倍なら、仕事は4倍。

テキストが2倍なら、仕事は4倍。

アテンションの強みは、どの単語もすべての他の単語を見比べられること——だから文脈をうまく読む。そこが落とし穴でもある。2倍を与えても、仕事は2倍では済まず4倍になる。すべてを見渡す視線は二乗で値がつき、その代償こそ、あらゆる「コンテキストウィンドウ」の裏にある見えない壁だ。
全部読ませたい。だが請求書がノーと言う。

全部読ませたい。だが請求書がノーと言う。

夢は単純だ。一冊まるごと、コード全体を放り込み、その全部を一度に頭に入れさせたい。テキストを蓄えるのは簡単で、1行ずつ行儀よく増える。問題はすべてを関連づける代償で、これがテキスト自体よりずっと速く跳ね上がる。長さは直線で伸びる。請求書は曲線で伸びる。
なぜ二乗? どの単語もすべての単語を見比べる。

なぜ二乗? どの単語もすべての単語を見比べる。

comparisons=n×n=n2\text{comparisons} = n \times n = n^2
アテンションはざっと眺めることではない。一つの単語を位置づけるため、モデルはそれをすべての他の単語と比べ、それをどの単語にも行う。n個の単語なら、n×nの格子——n²回の小さな比較で、近道はない。糸かけアートのように:縁のくぎを一本ずつ、すべての対に糸を張ると、糸はくぎの二乗で積み上がる。くぎが少し増えれば、糸は桁違いに増える。
長さが2倍なら、コストは4倍。

長さが2倍なら、コストは4倍。

cost(2n)cost(n)=(2n)2n2=4\dfrac{\text{cost}(2n)}{\text{cost}(n)} = \dfrac{(2n)^2}{n^2} = 4
仕事がn²に乗るから、少し増えただけでひどく痛む。単語2倍は労力2倍ではなく4倍。10倍なら? 労力は100倍だ。床のタイル貼りのように:部屋の幅を2倍にしても、タイルは2倍ではなく4倍になる。縁は2倍ずつ、内側の床は4倍ずつ増える。
計算だけじゃない。メモリの問題でもある。

計算だけじゃない。メモリの問題でもある。

ARn×n    memory=O(n2)A \in \mathbb{R}^{n \times n} \;\Rightarrow\; \text{memory} = O(n^2)
そのn²個のスコアは、計算して忘れるものではない——アテンションになる前に、格子全体を一度に保持しなければならない。だからメモリもn²で膨らみ、たいてい最初にぶつかる壁になる。「遅すぎる」ではなく「場所が足りない」。ダムの貯水池のように:せき止めようとする川が長いほど水位は上がり、ついには縁ぎりぎりまで達する。
爆発するのは一手だけ。残りは穏やかなまま。

爆発するのは一手だけ。残りは穏やかなまま。

O(nd2)the rest+O(n2d)all-pairs,n2dnd2    nd\underbrace{O(n\,d^2)}_{\text{the rest}} + \underbrace{O(n^2 d)}_{\text{all-pairs}}, \qquad n^2 d \gg n\,d^2 \iff n \gg d
ここに救いと罠がある。モデルの大半は穏やかに伸びる——単語を層に通すコストはおよそn·d²。総当たりの一手だけがn²·dかかる。二本のつる草のように:並んで伸び始めるが、片方は届く範囲を倍々にして先へ抜け出す。テキストがモデルの幅より長くなると——ndを超えると——そのつる、つまり二乗が、すべてを追い抜く。
あの有名な式——その値札を読もう。

あの有名な式——その値札を読もう。

Attention(Q,K,V)=softmax ⁣(QKd)V    O(n2d)\mathrm{Attention}(Q,K,V) = \mathrm{softmax}\!\left(\dfrac{QK^{\top}}{\sqrt{d}}\right)V \;\Rightarrow\; O(n^2 d)
これだ、アテンションのすべてが一行に。内側のQKᵀこそ総当たりの格子で、n²はそこで生まれる。力と代償は同じ一つの事実だ——すべてに触れる視線は、すべてに触れねばならないシャンデリアのように:広間全体を一度に照らすには、どの結晶も輝かねばならない。その豪華さこそが代償だ。
🌱 あなたは全単語を総当たりで比べない。なぜモデルは?

🌱 あなたは全単語を総当たりで比べない。なぜモデルは?

あなたがこの一文を読むとき、どの単語も他の全部と突き合わせたりしない——近さや、慣れや、大意に頼り、ほとんどを無意識に飛ばす。あの二乗の壁は、飛ばすことを拒む代償だ。だから開かれた問いはフロンティアそのもの——モデルは何を安全に無視でき、それでもすべての単語を理解できるのか?
タップ →↑スワイプで詳しく↓スワイプで終了