二次方之牆
自注意力既美妙又昂貴。每個 token 都與其他每個 token 比較,所以成本隨序列長度的平方成長——上下文加倍,工作量變四倍,而 KV 快取無上限地線性成長。第三篇的 GQA 與滑動視窗緩和了這點,但沒改變底層的律。要真正處理整本書或整個程式庫長度的輸入,有些架構師問了更尖銳的問題:如果一層根本不去比較每一對呢?
注意力分数 QK^T 构成一个 n×n 矩阵——正是这一项让计算成本随序列长度的平方增长。
線性注意力:拿精確換規模
線性注意力改寫數學,讓成本隨長度線性成長、而非二次。訣竅是丟掉那個把每個查詢耦合到每個鍵的 softmax,並重排乘法順序,讓模型維護一份固定大小、不斷更新的過去摘要,而非一張不停成長的鍵清單。回報巨大——每步固定記憶體、快取不爆。代價是這份摘要是有損的:它無法像真正的注意力那樣,清晰地回想起百萬之前的任意一個 token。
查询、键、值向量经由 softmax 注意力权重组合的示意图。
Mamba:一段會掃描的學得記憶
Mamba 與狀態空間模型(SSM)把那個想法做得有原則。SSM 攜帶一個隱藏狀態——一段壓縮的、到目前為止所見一切的記憶——每讀一個 token 就更新狀態並發出一個輸出,恰如由左讀到右。Mamba 的決定性升級是這個更新依輸入而定:模型逐 token 學會該往記憶寫什麼、該忘什麼,於是它能記住好幾頁前提過的一個名字,同時丟掉填充內容。
递归网络展开为一连串重复时间步的示意图。
混合:保留一點注意力
純 SSM 快,但其有損記憶在需要精確回想的任務上吃力——複製一個長 ID、做精準的上下文查找。純注意力回想完美,卻付二次方的稅。於是最有前途的設計是混合 注意力–SSM 模型:大量堆疊便宜的 SSM 或線性注意力層,再在需要精確回想處撒入少數幾個完整注意力層。你得到近乎線性的成本,外加一張注意力安全網——兩本帳的長處兼得。
這與第三篇『視窗+全域』交錯是同一種直覺,再走遠一步:便宜但局部的層承擔大部分工作,昂貴但全域的層充當偶爾的錨點。無論未來是稠密注意力、MoE、SSM 或某種混合,現代架構不變的組織性問題始終如一——只在運算與記憶體能換來最多能力之處才花它們。