滑動窗口注意力 是什麼?
Sliding Window Attention:滑動窗口注意力 的完整解釋
一種高效的注意力機制,限制每個位置只與一個固定大小的局部上下文窗口內的位置進行注意力計算,減少計算複雜度。
核心概念
滑動窗口注意力(Sliding Window Attention, SWA)是一種局部注意力機制。在標準多頭注意力中,每個位置對所有其他位置都計算注意力權重,導致計算複雜度為 O(n²),其中 n 是序列長度。滑動窗口注意力限制注意力範圍:每個位置 i 只與 [i-w, i+w] 範圍內的位置進行注意力計算,其中 w 是窗口半徑。
SWA 的基本假設是:在許多任務中,一個位置的預測主要依賴於其附近的上下文。遠距離的信息雖然可能相關,但通常不如近距離信息重要。通過局部化注意力,既能保留局部語義,又能大幅降低計算成本。
運作原理
計算流程
給定序列長度 n 和窗口大小 w(例如 w=128),標準注意力計算所有 n×n 對的注意力權重,而 SWA 只計算窗口內的對。
具體步驟:
對每個位置 i,確定注意力窗口 [i-w, i+w](邊界處理:0 到 n-1)。
從查詢向量 Q 中提取位置 i 的查詢 q_i。
從鍵矩陣 K 中提取窗口 [i-w, i+w] 的鍵向量。
計算 softmax(q_i · K_window^T / sqrt(d)) 得到注意力權重。
從值矩陣 V 中提取相應的值,加權求和。
複雜度分析:標準注意力為 O(n²d),SWA 為 O(n·w·d)。若 w << n(例如 w=128,n=4096),複雜度大幅下降。
視覺化例子
考慮序列 "I love natural language processing" 的位置編號 0-4,假設 w=1(只關注鄰近位置):
- 位置 0("I"):可注意 [0, 1],即 "I" 和 "love"。
- 位置 2("natural"):可注意 [1, 3],即 "love"、"natural"、"language"。
- 位置 4("processing"):可注意 [3, 4],即 "language" 和 "processing"。
每個位置只與最多 2w+1 個位置交互,複雜度線性化。
長距離依賴的解決方案
SWA 的限制是無法直接建模遠距離依賴。例如,詞彙代詞指代通常需要回溯到遠處的主語。為解決這一問題,現代實現採用多層次策略:
基層用 SWA:大多數層用滑動窗口,提高效率。
稀疏層用全注意力或擴展窗口:某些層每隔 k 個位置允許全注意力,或使用更大的窗口。
長距離令牌機制:某些實現允許特定位置(如句首、句尾、特殊標記)與所有其他位置進行全注意力。
Mistral 7B 就採用這樣的混合策略:多數層用窗口大小 4096 的 SWA,某些層使用更小的窗口但增加長距離注意力。
實際應用
SWA 在多個高效大型語言模型中被採用:
Mistral 系列
Mistral 7B 是一個 7 億參數的高效開源模型,採用 SWA 作為其效率的關鍵。論文報告,使用 SWA(窗口大小 4096)的 Mistral 7B 在多個基準上超越 Llama 2 13B,同時推理速度快 6 倍,記憶體占用更少。這個對比強有力地展示了 SWA 的實際價值。
Longformer
Longformer 是專門設計用於長文檔的 BERT 變體,採用 SWA。Longformer 可處理高達 4096 個 token 的序列(相比 BERT 的 512),在長文檔分類、問答等任務上表現出色。
BigBird
Google 的 BigBird 模型也採用了局部窗口注意力加稀疏全注意力的混合策略,能處理長達 4096 個 token 的序列。
具體效果
推理速度:SWA 推理速度通常比全注意力快 4-8 倍(取決於窗口大小)。
記憶體占用:KV 快取大小從 O(n²) 降至 O(n·w),對長序列推理的記憶體節省很顯著。
訓練加速:訓練時同樣享受計算和記憶體優勢,訓練速度可提升 2-4 倍。
性能影響:在有合理的長距離注意力機制的情況下,性能損失通常小於 2%。
常見誤區
誤區一:滑動窗口注意力會導致模型無法理解遠距離依賴。實際上,在多層堆疊的情況下,即使單層的視野限於窗口,多層的組合視野會逐層擴大。例如,4 層 SWA(窗口大小 w)的模型,第 4 層位置 i 的有效視野可達 4w 個位置。加上長距離注意力機制,遠距離依賴是可以建模的。
誤區二:窗口大小越小效率越高,應該選最小窗口。實際上,窗口過小會損害性能。通常需要在效率和性能之間平衡。實驗表明,窗口大小 256-4096 是合理範圍。
誤區三:SWA 是一個新發明,沒有足夠的實踐驗證。實際上,局部注意力的思想由來已久,Longformer(2020)已展示其有效性。Mistral(2023)更是用 SWA 構建出高效且強大的開源模型,證明了其實用價值。
誤區四:全注意力與 SWA 的模型不能互相使用。實際上,使用 SWA 訓練的模型的權重可以用於全注意力推理,反之亦然,儘管性能可能有差異。
與相關技術的比較
與全注意力的比較:全注意力保留所有位置間的互動,表達能力強但複雜度高;SWA 限制視野,效率高但可能遺漏遠距離信息。實踐中,結合使用最優。
與稀疏注意力的比較:稀疏注意力(如 Strided、Local+Stride)選擇性地計算注意力,也能降低複雜度。相比之下,SWA 更簡單直接,但稀疏注意力可能更靈活。
與條形注意力的比較:條形注意力(如在 Transformer-XL 或 Compressive Transformer 中)將序列分為塊,塊間有限交互。SWA 是連續的窗口,無塊邊界的人為割裂。
與自適應注意力的比較:自適應注意力根據內容動態決定注意力範圍。SWA 是固定的,因此實現簡單;自適應注意力更精緻但複雜度更高。