# 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,將不再是唯一選項。