滑動窗口注意力(Sliding Window Attention)是什麼?

一種高效的注意力機制,限制每個位置只與一個固定大小的局部上下文窗口內的位置進行注意力計算,減少計算複雜度。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Sliding Window Attention
主題標籤
大型語言模型、深度學習、神經網路
考點定位
非 iPAS 核心術語
最後更新
2026/06/22
滑動窗口注意力(Sliding Window Attention)是什麼? 大型語言模型深度學習
術語快查

搜尋意圖: 如果你在找「滑動窗口注意力 是什麼」或「滑動窗口注意力 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

TL;DR: 一種高效的注意力機制,限制每個位置只與一個固定大小的局部上下文窗口內的位置進行注意力計算,減少計算複雜度。

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

一種高效的注意力機制,限制每個位置只與一個固定大小的局部上下文窗口內的位置進行注意力計算,減少計算複雜度。

核心概念

滑動窗口注意力(Sliding Window Attention, SWA)是一種局部注意力機制。在標準多頭注意力中,每個位置對所有其他位置都計算注意力權重,導致計算複雜度為 O(n²),其中 n 是序列長度。滑動窗口注意力限制注意力範圍:每個位置 i 只與 [i-w, i+w] 範圍內的位置進行注意力計算,其中 w 是窗口半徑。

SWA 的基本假設是:在許多任務中,一個位置的預測主要依賴於其附近的上下文。遠距離的信息雖然可能相關,但通常不如近距離信息重要。通過局部化注意力,既能保留局部語義,又能大幅降低計算成本。

運作原理

計算流程

給定序列長度 n 和窗口大小 w(例如 w=128),標準注意力計算所有 n×n 對的注意力權重,而 SWA 只計算窗口內的對。

具體步驟:

  1. 對每個位置 i,確定注意力窗口 [i-w, i+w](邊界處理:0 到 n-1)。

  2. 從查詢向量 Q 中提取位置 i 的查詢 q_i。

  3. 從鍵矩陣 K 中提取窗口 [i-w, i+w] 的鍵向量。

  4. 計算 softmax(q_i · K_window^T / sqrt(d)) 得到注意力權重。

  5. 從值矩陣 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 的限制是無法直接建模遠距離依賴。例如,詞彙代詞指代通常需要回溯到遠處的主語。為解決這一問題,現代實現採用多層次策略:

  1. 基層用 SWA:大多數層用滑動窗口,提高效率。

  2. 稀疏層用全注意力或擴展窗口:某些層每隔 k 個位置允許全注意力,或使用更大的窗口。

  3. 長距離令牌機制:某些實現允許特定位置(如句首、句尾、特殊標記)與所有其他位置進行全注意力。

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 是固定的,因此實現簡單;自適應注意力更精緻但複雜度更高。

常見問題

滑動窗口注意力如何處理需要遠距離上下文的情況?

純滑動窗口的視野確實局限於固定窗口。現代實現通過多種方式擴展視野:首先,在多層堆疊的模型中,視野逐層擴大;其次,某些層使用全注意力或更大窗口;再次,特殊位置(如開始、結束令牌)可能有全局視野。例如,Mistral 7B 除了使用窗口大小 4096 的 SWA,還在特定層允許更遠的位置進行注意力計算。這樣,遠距離依賴通過多層傳播和特殊機制得以建立,從而在保持效率的同時不完全放棄遠距離建模能力。

窗口大小如何選擇?

窗口大小的選擇是效率與性能的權衡。較小的窗口(如 128)提供最高的計算效率,但可能丟失重要的上下文;較大的窗口(如 4096)保留更多上下文,但計算成本更高。在實踐中,應根據任務特點:對於需要精細局部信息的任務(如詞性標註),可選較小窗口;對於需要廣泛上下文的任務(如文檔分類、摘要),應選較大窗口。通常,預設選擇 256 到 2048 是合理的。Mistral 7B 選 4096,展示了對於通用大型語言模型,較大的窗口仍能保持可接受的效率。

使用滑動窗口注意力訓練的模型是否能用全注意力進行推理?

理論上可以,但不推薦。用 SWA 訓練的模型的注意力權重是針對窗口視野優化的。突然切換到全注意力可能導致性能不穩定,特別是對於遠距離位置對。如果必須轉換,通常需要進行微調以重新適應全注意力。反向轉換(全注意力訓練改用 SWA 推理)也有類似問題。最佳實踐是從一開始就確定使用何種注意力機制,然後貫徹訓練和推理全程。如果需要靈活性,可以設計模型支持多種注意力方式,並在訓練時同時優化。