Kimi Delta Attention:推導、實作與社群回應

Kimi Delta Attention:推導、實作與社群回應

Kimi Delta Attention 基於 DeltaNet 並具備每通道遺忘機制

Kimi Delta Attention(KDA)保留 DeltaNet 的 delta‑rule 寫入方式,但將標量保留閘 αₜ 替換為向量 αₜ ∈ [0,1]^{dₖ},並以對角矩陣 Dₜ = Diag(αₜ) 形式套用。這使得每個 key 通道可以獨立遺忘或保留,而 Gated DeltaNet 則對整個狀態使用單一的 αₜ。其餘的遞迴步驟——預測、校正、寫入與讀取——保持不變。

推導從 Softmax 注意力到 KDA 的三個步驟

從因果 softmax 注意力開始,移除 softmax 後得到線性注意力,其狀態為 Sₜ = Σ_{i≤t} |v_i⟩⟨k_i|。觀察到更新行為類似於 +=,DeltaNet 引入誤差驅動的寫入 eₜ = βₜ(|v_t⟩ − S_{t−1}|k_t⟩),使得 Sₜ = S_{t−1} + eₜ⟨k_t|。Gated DeltaNet 在 delta 更新之前加入全域遺忘因子 αₜ:Sₜ = αₜ S_{t−1} + βₜ(|v_t⟩ − αₜ S_{t−1}|k_t⟩)⟨k_t|。KDA 透過將 αₜ 設為對角矩陣來概括此概念,實現每通道遺忘:Sₜ = S_{t−1} Dₜ + βₜ(|v_t⟩ − S_{t−1} Dₜ|k_t⟩)⟨k_t|。

高效執行可使用融合遞迴核心或分塊核心

在自回歸解碼時,融合遞迴的 Triton 核心一次處理一個 token:state *= exp(g_t)[:,None]; prediction = sum(state * k_t[:,None], axis=0); residual = β_t * (v_t − prediction); state += k_t[:,None] * residual[None,:]; output = sum(state * (q_t * SCALE)[:,None], axis=0)。在訓練與長預填階段,分塊實作將相同的遞迴重新排列為矩陣乘法,計算暫時誤差、透過三角求解恢復因果依賴、快速前推狀態,並產生因果輸出——全部皆不需要形成稠密逆矩陣,因為 I+R_c 為單位對角的三角矩陣。

社群回應突顯推導的清晰度與事後的謙遜

許多評論者讚賞在 bra‑ket 與傳統數學符號之間的切換,認為這讓形狀與運算更清晰。有人寫道:「我喜歡數學與物理的切換。」另一位則指出:「這個切換真的很有用。喜歡!!」bra‑ket 的選擇被描述為一種免責聲明,最終有助於理解:「當作者在開頭寫下使用 bra‑ket 符號是為了讓演算法與資料結構更清晰時,你就知道這篇文章很不簡單。」多位讀者表示自己無法自行發明此方法,評論如「粗略閱讀後,我可以自信地說,我事實上不可能想出 Kimi Delta Attention」以及「我絕對不可能想到 Kimi Delta Attention」。也有人觀察到事後看來解法顯而易見,呼應「哥倫布的蛋」概念:「任何人都可以做到!你從沒說過我們可以打破那顆蛋!」少數人質疑文章是否由大型語言模型生成,引用身份說明作為明顯跡象。其他人則欣賞逐步遞增的推導,認為它讓複雜主題「變得更易懂」。也有讀者請求重新說明像 dₖ 這樣的符號,顯示雖然符號有幫助,但仍有讀者希望獲得更多關於維度的背景資訊。

Kimi Delta Attention 提供概念上簡單卻有效的線性注意力擴充

透過將標量保留提升為每通道的對角矩陣,KDA 解決了 Gated DeltaNet 中所有通道共享相同遺忘率的限制。最終的狀態更新仍是對角加低秩的運算,兼具低延遲的遞迴解碼與高吞吐量的分塊訓練。文章的推導——從 softmax 注意力經過 DeltaNet 與 Gated DeltaNet 再到 KDA——提供了一條清晰的路徑,許多讀者認為易於理解,即使他們也承認自己不會獨立想到此解法。

Sources