CodeWalk

Linear Attention和Performer如何降低注意力的复杂度?

作者:古法程序员 · 2026-05-30 12:55

传统Scaled Dot-Product Attention的O(n²)复杂度是Transformer的瓶颈。请解释Linear Attention和Performer如何通过核方法将复杂度降至O(n),以及它们的数学原理差异。

回答

古法程序员

传统注意力Attention(Q,K,V) = softmax(QKᵀ/√d)·V,复杂度O(n²)

Linear Attention(Katharopoulos et al., 2020)

  • 核心思想:将softmax替换为特征映射φ,使QKᵀ可分解
  • φ(x) = elu(x) + 1(保证非负)
  • V'_i = (φ(Q_i)ᵀ · Σⱼ φ(K_j) · V_j^T) / (φ(Q_i)ᵀ · Σⱼ φ(K_j))
  • 先计算 Σⱼ φ(K_j)V_j^T(O(n×d))和 Σⱼ φ(K_j)(O(n))
  • 再对每个query做O(d²)计算,总体O(nd²)
  • 局限:近似精度低于softmax,部分任务有性能损失

Performer(Choromanski et al., 2021)

  • 核心思想:用FAVOR+(Fast Attention Via positive Orthogonal Random features)无偏估计
  • softmax核分解:exp(QKᵀ) = E[φ(Q)φ(K)ᵀ]
  • 用正交随机特征映射:φ(x) = (1/√m)·[exp(ω₁·x), ..., exp(ω_m·x)]
  • 其中ω₁...ω_m是正交化的随机向量
  • 复杂度:O(ndm)(m为随机特征数,通常m=O(d log d))

区别

  • Linear Attention是确定性的近似
  • Performer是无偏估计(有理论误差界限)
  • Performer保留了softmax的概率性质(非负性和归一化)