# 1. Self-Attention 機制的基礎與瓶頸 ## 1.1. Self-Attention 的定義 Self-Attention 是 Transformer 架構中的核心模組,其目的是計算序列中每個位置對其他位置的關注程度,並據此加權組合輸入表示。 其數學形式為: $b^1 = \sum_{i=1}^{N} \alpha'_{1,i} v^i = \sum_{i=1}^{N} \frac{\exp(q^1 \cdot k^i)}{\sum_{j=1}^{N} \exp(q^1 \cdot k^j)} v^i$。 其中,$q^1$ 為第一個位置的 query 向量,$k^i$ 為第 $i$ 個位置的 key 向量,$v^i$ 為第 $i$ 個位置的 value 向量,$\alpha'_{1,i}$ 為經 softmax 正規化後的注意力權重。 ## 1.2. Attention Matrix 與計算流程 若序列長度為 $N$,則需對每對 query-key 組合計算內積,形成大小為 $N \times N$ 的 Attention 矩陣: $A = QK^T$。 整體 Self-Attention 計算流程為: $O = \text{softmax}(QK^T)V$。 其中,$Q \in \mathbb{R}^{N \times d}$ 為query 矩陣,$K \in \mathbb{R}^{N \times d}$ 為key 矩陣,$V \in \mathbb{R}^{N \times d'}$ 為value 矩陣,$O \in \mathbb{R}^{N \times d'}$ 為最終輸出。 ## 1.3. 時間與空間複雜度分析 Self-Attention 的運算與儲存成本為二次方級數,具體複雜度如下: $QK^T$:$O(N^2 d)$。 $\text{softmax}(QK^T) V$:$O(N^2 d')$。 整體時間與空間複雜度為: $O\left((d + d')N^2\right)$。 ## 1.4. 實際應用與限制 Self-Attention 可靈活建模長距依賴,並廣泛應用於語言與影像模型。然而,當序列長度 $N$ 增大時,其 $O(N^2)$ 的成本將造成訓練與推論上的瓶頸。因此,各種近似與替代機制陸續被提出。 # 2. 提升效率的經典變體 ## 2.1. Local Attention / Truncated Attention 在完整 Self-Attention 中,每個位置需與所有位置互動,造成 $O(N^2)$ 複雜度。Local Attention 限制每個位置只與鄰近範圍內的若干位置互動,超出範圍的權重設為 0: 1.原 Attention 矩陣大小為 $N \times N$ 2.限制互動範圍為 $w$ 時,每列最多保留 $w$ 項,其餘設為 0 優點: 1.計算與儲存複雜度降為 $O(Nw)$,其中 $w \ll N$ 2.適用於鄰近資訊為主的任務(如語音、影像) ## 2.2. Stride Attention Stride Attention 每隔固定距離取一個位置做注意力互動,例如每 $s$ 個 key 做一次 attention: 1.降低注意力密度,提高計算效率 2.可與 Local Attention 結合交錯使用 其 Attention 矩陣具有規律性稀疏結構,可視為類似卷積的滑動視窗抽樣。 ## 2.3. Global Attention 在序列中加入少數 global tokens,例如 $g$,並令其與所有其他 token 互相注意: 1.$g$ attend 所有 token 並收集全域資訊 2.所有 token 也 attend $g$ 以獲得全域上下文 此機制讓全域資訊透過少量節點傳播,並降低 $O(N^2)$ 的互動需求。 ## 2.4. Skip Some Calculations with Human Knowledge 觀察 Self-Attention 中許多位置之間的關聯性極小,可視為近乎無關: 1.對 attention matrix 中小於閾值的項目直接設為 0 2.僅保留對結果有顯著影響的注意力路徑 這種稀疏化策略在不影響準確率的前提下大幅減少計算量。 ## 2.5. Multi-head Patterns 在 Multi-head Attention 中,每個 head 可以採用不同的注意力模式: 1.一個 head 使用 Local Attention 2.一個 head 使用 Stride Attention 3.一個 head 使用 Global Attention 這種設計擁有「專精 + 多樣」的結構,增強模型捕捉多尺度依賴的能力。 # 3. 基於知識與結構的稀疏注意力 ## 3.1. Clustering-based Attention(Reformer) 傳統 Self-Attention 計算所有 $q_i \cdot k_j$,為降低計算量,可將相似的 $q$ 和 $k$ 分群,只在同群內進行注意力運算。Reformer 模型提出使用 LSH(Locality-Sensitive Hashing)進行分群,使每個 query 只 attend 同群中的 key: 1.Attention 僅在子集合中計算,複雜度由 $O(N^2)$ 降至 $O(N \log N)$ 2.分群過程為近似運算,可接受一定誤差 ## 3.2. Learnable Patterns(Sinkhorn Sorting) 與手動設計注意力遮罩不同,Learnable Pattern 透過模型自動學習注意力結構: 1.使用 Sinkhorn Network 對序列進行軟排序(soft permutation) 2.學得之排序可用來指引稀疏注意力的配置 優點: 1.遮罩結構具備可學性,可動態調整 2.結合 differentiable sorting 機制,支援端到端訓練 ## 3.3. Representative Key(Linformer) 觀察發現 Attention Matrix $A = QK^T$ 在實務中為低秩矩陣。Linformer 利用此性質對 $K$ 和 $V$ 進行線性壓縮:學習投影矩陣 $E \in \mathbb{R}^{k \times N}$,將 $K$ 和 $V$ 壓縮至 $k$ 維 改寫公式如下: $A = QK^T \approx Q (EK)^T$。 $O = \text{softmax}(QK^T) V \approx \text{softmax}(Q (EK)^T) (EV)$。 其中,$k \ll N$,故能將計算與記憶體複雜度降為 $O(Nk)$。 這一類方法強調以結構或可學方式對 Attention Matrix 進行 sparsification,核心理念為: 1.不需對所有位置計算關聯性 2.保留資訊傳遞關鍵路徑即可維持性能 3.同時可達成時間與記憶體效率的大幅提升 # 4. 重構計算順序的線性注意力 ## 4.1. 傳統計算順序的複雜度瓶頸 在標準 Self-Attention 中,計算 Attention Matrix 需耗費大量計算與記憶體: $O = \text{softmax}(QK^T)V$。 此處 Attention Matrix 的大小為 $N \times N$,當序列長度 $N$ 趨大時,複雜度為: $O((d + d')N^2)$。 為克服此問題,可透過調整矩陣乘法順序以降低成本。 ## 4.2. 改變乘法順序的重構方法 線性注意力的基本概念為將 softmax 前的內積計算順序改寫為: $O \approx (V K^T) Q$。 此處將原本先計 $QK^T$ 的順序,改為先計 $VK^T$。優點為: 1.無需建構完整 $N \times N$ 的中間矩陣 2.若不含 softmax,則可實現計算複雜度為 $O(d' d N)$ 的線性縮放 ## 4.3. Kernel Approximation — Performer 模型 Performer 引入正定核函數 $\phi(\cdot)$,以近似 softmax 的 exponent dot product: $\exp(q \cdot k) \approx \phi(q)^T \phi(k)$。 可將注意力輸出改寫為: $O(q) = \frac{\sum_{i=1}^{N} \phi(q)^T \phi(k^i) v^i}{\sum_{j=1}^{N} \phi(q)^T \phi(k^j)}$。 透過重新排列與合併項,進一步轉換為: $O(q) = \frac{\phi(q)^T \left( \sum_{i=1}^{N} \phi(k^i) v^i \right)}{\phi(q)^T \left( \sum_{i=1}^{N} \phi(k^i) \right)}$。 ## 4.4. 預先計算共享記憶向量 為了提升效率,將以下兩項提前計算: $S = \sum_{i=1}^{N} \phi(k^i) v^i$。 $Z = \sum_{i=1}^{N} \phi(k^i)$。 則每個輸出可表為: $O(q) = \frac{\phi(q)^T S}{\phi(q)^T Z}$。 優點: 1.對所有 query 可共用 $S$ 與 $Z$ 2.計算複雜度為 $O(Nd + dN_q)$,其中 $d$ 為投影維度,$N_q$ 為 query 數 ## 4.5. 時間與空間效率比較 | 方法 | 複雜度 | 儲存需求 | | ------------ | ------------ | ---------- | | 原始 Attention | $O(N^2 d)$ |$O(N^2)$ | | 線性 Attention | $O(Nd)$ | $O(Nd)$ | # 5. 結構簡化:捨棄 query 和 key ## 5.1. Synthesizer — Attention 不一定需要 $q$ 與 $k$ 傳統 Attention 依賴 $q \cdot k^T$ 進行相似度計算。然而,Synthesizer 模型質疑此假設,並提出: 為何 Attention 權重 $\alpha_{i,j}$ 必須來自 $q_i \cdot k_j$? 是否可以直接生成(synthesize)注意力矩陣本身? Synthesizer 的基本想法: 將注意力矩陣視為可訓練的參數,或透過神經網路學出來,而非內積計算。 $\alpha = \text{Synthesizer}(X)$。 其中 $\alpha \in \mathbb{R}^{N \times N}$ 可能來自: 1.一個前饋神經網路輸出 2.固定參數模板 3.位置編碼的線性變換 優點: 1.無需計算 $q$ 與 $k$ 2.可直接控制注意力結構 3.減少計算量與參數量 Synthesizer 的核心精神是:「關注結構可由學習主動生成,而非被動計算」 ## 5.2. Attention Matrix 的完全解耦設計 與傳統 self-attention 的全矩陣計算不同,Synthesizer 中的 $\alpha_{i,j}$: 1.可為學習型常數矩陣 2.可為相對位置函數的結果 3.可透過 token 本身產生(而非 inner product) 這表示: $b^i = \sum_{j=1}^{N} \alpha_{i,j} v^j \quad \text{。但 } \alpha_{i,j} \text{ 並非由 } q^i \cdot k^j \text{ 決定}$。 理論觀點與結論: 1.Synthesizer 擴展了 Self-Attention 的設計空間 2.計算更快、控制性更高 3.雖略降精度,但可在速度與資源有限場景中應用 # 6. 完全去注意力:Attention-free 架構 ## 6.1. FNet — 使用傅立葉變換取代 Attention FNet 提出以傅立葉轉換(Fourier Transform)取代 Attention 機制,用於混合序列中不同位置的資訊。核心操作:對輸入序列 $X \in \mathbb{R}^{N \times d}$ 應用雙維傅立葉轉換: $X' = \text{Re}(\mathcal{F}_\text{row}(\mathcal{F}_\text{col}(X)))$。 其中,$\mathcal{F}_\text{col}$ 為對每一列進行傅立葉轉換(即跨時間位置),$\mathcal{F}_\text{row}$ 為對每一行進行傅立葉轉換(即跨特徵維度),$\text{Re}(\cdot)$ 為取實部作為輸出(忽略虛部)。 特點: 1.完全不使用 attention 或權重計算 2.操作為固定變換,無需額外學習參數 3.複雜度為 $O(N \log N)$,顯著快於 $O(N^2)$ 的 Self-Attention ## 6.2. gMLP / MLP-Mixer — 全 MLP 架構替代 Attention MLP-Mixer 架構,將序列處理分為兩個子模組: 1.Token-mixing MLP:在時間維度上打散與混合位置資訊 2.Channel-mixing MLP:在通道維度上處理特徵抽取 對於輸入 $X \in \mathbb{R}^{N \times d}$,使用如下形式: $Y = \text{MLP}_\text{channel}(\text{MLP}_\text{token}(X))$。 gMLP 改進引入 gating 機制,稱為 Spatial Gating Unit,用來控制位置間的交互: $Y = U \odot \sigma(V W)$。 其中,$U, V$ 為經過線性投影後的中間張量,$W$ 為位置混合參數,$\odot$ 為逐元素乘法。 優點: 1.完全使用 MLP 模組 2.易於部署於高效硬體(如 TPU) 3.計算流程線性,無注意力矩陣開銷 ## 6.3. 設計觀點與啟示 1.Attention 並非序列建模的唯一選擇 2.固定變換(如 Fourier)與位置感知 MLP 皆可取代其效果 3.在資源有限、推論延遲敏感場景下為良好選擇 # 7. Attention 設計策略總覽與比較 ## 7.1. 各類 Attention 優化策略分類 | 策略類別 | 代表方法/模型 | 核心思路 | | ------------------ | ---------------------------------- | ---------------------------------- | | Human Knowledge | Local Attention, Big Bird | 透過人為設定稀疏結構(局部、全域、隨機) | | Clustering | Reformer | 使用哈希或分群,將計算限制於同群內 | | Learnable Pattern | Sinkhorn Sorting Network | 學習出排序後再施加稀疏遮罩 | | Representative Key | Linformer | 壓縮 Key/Value,低秩近似 Attention Matrix | | 改變計算順序(線性注意力) | Performer, Linear Transformer | 重新排列乘法順序,結合核函數實現線性計算 | | 全新架構(無 attention) | Synthesizer, FNet, gMLP, MLP-Mixer | 完全捨棄 query-key 機制,以其他方式混合資訊 | ## 7.2. 模型效能與效率比較(LRA Benchmark) 根據 Long Range Arena(LRA)基準測試,各方法在處理長序列任務時的精度與推論速度分布如下: 1.Transformer / Big Bird:精度高,但推論速度慢,計算與記憶體開銷大 2.Performer / Linformer:維持良好準確率,並顯著提升推理速度 3.Synthesizer / FNet / MLP-Mixer:精度略低,但擁有最佳速度與資源效率 此比較顯示,不同應用場景下可依據精度需求與資源限制進行選擇。 ## 7.3. 技術總結 1.若需保持精度:Big Bird、Performer 為較佳選擇 2.若需極速運算:FNet、gMLP 更具優勢 3.若需模型簡化:Synthesizer 提供靈活結構替代方案 4.任務特化設計:可結合多種策略(如 global + local) 在未來的注意力設計中,「可擴展性」與「架構靈活性」將成為主流趨勢,模型是否仍需 Attention,將不再是唯一選項。