线性注意力机制


线性注意力机制(Linear Attention)是一类通过降低计算复杂度来优化传统注意力机制的方法,尤其适用于长序列任务。其核心思想是将注意力矩阵的计算复杂度从 O ( N 2 ) O(N^2) O(N2) 降低到 O ( N ) O(N) O(N) O ( N log ⁡ N ) O(N \log N) O(NlogN),从而显著减少计算和内存开销。以下是几种典型的线性注意力算法:


Linear Transformer

在 Transformer 领域,最经典的线性注意力(Linear Attention)机制 出自 2020 年由 Katharopoulos 等人提出的《Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention》(简称 Linear Transformer)。该工作首次系统性地提出了用线性复杂度近似标准 Softmax 注意力的方法,成为后续线性注意力研究的基石。
在这里插入图片描述

知乎详解公式推导


原始的单头注意力机制的计算复杂度:
在这里插入图片描述

1. 核心思想

传统 Transformer 的 Softmax 注意力 计算复杂度为 O ( N 2 ) O(N^2) O(N2) N N N 是序列长度),而 Linear Attention 通过数学重构将复杂度降至 O ( N ) O(N) O(N),关键步骤:

  1. 分解 Softmax 注意力:
    标准注意力公式为:
    Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V
    Linear Attention 将其重写为:
    Attention ( Q , K , V ) = ϕ ( Q ) ( ϕ ( K ) T V ) ϕ ( Q ) ( ϕ ( K ) T 1 ) \text{Attention}(Q, K, V) = \frac{\phi(Q)(\phi(K)^T V)}{\phi(Q)(\phi(K)^T \mathbf{1})} Attention(Q,K,V)=ϕ(Q)(ϕ(K)T1)ϕ(Q)(ϕ(K)TV)
    其中 ϕ ( ⋅ ) \phi(\cdot) ϕ() 是一个特征映射函数(如 ϕ ( x ) = elu ( x ) + 1 \phi(x) = \text{elu}(x) + 1 ϕ(x)=elu(x)+1),将 Q Q Q K K K 映射到非负空间。

  2. 利用结合律优化计算顺序:
    先计算 ( ϕ ( K ) T V ) (\phi(K)^T V) (ϕ(K)TV) ( ϕ ( K ) T 1 ) (\phi(K)^T \mathbf{1}) (ϕ(K)T1)(复杂度 O ( N ) O(N) O(N)),再与 ϕ ( Q ) \phi(Q) ϕ(Q) 相乘,避免显式计算 Q K T QK^T QKT O ( N 2 ) O(N^2) O(N2))。


2. 为什么它成为经典?

  • 理论严谨性:首次证明了线性注意力的可行性,并通过数学推导保证近似效果。
  • 通用性:适用于自回归和非自回归任务(如文本生成、图像分类)。
  • 效率提升:在长序列任务(如 DNA 序列分析、高分辨率图像处理)中显著降低内存和计算成本。

3. 后续发展

Linear Transformer 启发了多种改进方案,例如:

  • Performer(2021, Google):使用随机正交特征映射(Random Fourier Features)进一步优化近似效果。
  • Linformer(2020, Facebook):通过低秩投影压缩 K K K V V V 的维度。
  • Flowformer(2022):引入流模型思想增强线性注意力的表达能力。

5. 适用场景

  • 长序列建模:如视频处理、基因组序列分析。
  • 资源受限设备:移动端或边缘计算场景。
  • 实时应用:需要低延迟的生成任务(如实时语音合成)。

总结
Linear Transformer 是线性注意力领域的开创性工作,通过特征映射和计算顺序优化实现了 O ( N ) O(N) O(N) 复杂度,平衡了效率与性能。尽管后续模型(如 Performer、Linformer)在某些任务上表现更好,但其核心思想仍是当前线性注意力研究的基准。

Linear Transformer 和 Linformer对比

Linear Transformer 和 Linformer 都是旨在降低 Transformer 自注意力计算复杂度的经典方法,但两者的设计思路和实现方式有显著区别。以下是它们的核心对比:


1. 核心目标

  • 共同点:将标准 Softmax 注意力的 O ( N 2 ) O(N^2) O(N2) 复杂度降至 线性复杂度 O ( N ) O(N) O(N) N N N 为序列长度)。
  • 差异:
    • Linear Transformer:通过数学重构(特征映射+结合律)直接近似 Softmax 注意力。
    • Linformer:通过低秩投影压缩 Key 和 Value 的序列长度,间接降低计算量。

2. 方法原理对比

(1) Linear Transformer
  • 核心思想:
    将 Softmax 注意力分解为线性运算,利用特征映射函数 ϕ ( ⋅ ) \phi(\cdot) ϕ() 和结合律重写注意力公式:
    Attention ( Q , K , V ) = ϕ ( Q ) ( ϕ ( K ) T V ) ϕ ( Q ) ( ϕ ( K ) T 1 ) \text{Attention}(Q, K, V) = \frac{\phi(Q)(\phi(K)^T V)}{\phi(Q)(\phi(K)^T \mathbf{1})} Attention(Q,K,V)=ϕ(Q)(ϕ(K)T1)ϕ(Q)(ϕ(K)TV)

    • 特征映射:使用简单的非线性函数(如 ϕ ( x ) = elu ( x ) + 1 \phi(x) = \text{elu}(x)+1 ϕ(x)=elu(x)+1)保证非负性。
    • 计算顺序:先计算 ϕ ( K ) T V \phi(K)^T V ϕ(K)TV(复杂度 O ( N ) O(N) O(N)),再与 ϕ ( Q ) \phi(Q) ϕ(Q) 相乘。
  • 优点:

    • 保持自注意力机制的全局交互能力。
    • 无需训练额外的投影矩阵,计算更轻量。
(2) Linformer

在这里插入图片描述
在Q和K的后续添加两个Projection单元,将序列长度n映射到低维的k,作者将这种单元称之为Linformer

  • 核心思想:
    假设注意力矩阵是低秩的,通过投影将 K K K V V V 的序列长度从 N N N 压缩到 k k k k ≪ N k \ll N kN):
    K ~ = K ⋅ E K , V ~ = V ⋅ E V \tilde{K} = K \cdot E_K, \quad \tilde{V} = V \cdot E_V K~=KEK,V~=VEV
    其中 E K , E V ∈ R N × k E_K, E_V \in \mathbb{R}^{N \times k} EK,EVRN×k 是可学习的投影矩阵。
    注意力计算变为:
    Attention ( Q , K ~ , V ~ ) = softmax ( Q K ~ T d k ) V ~ \text{Attention}(Q, \tilde{K}, \tilde{V}) = \text{softmax}\left(\frac{Q \tilde{K}^T}{\sqrt{d_k}}\right) \tilde{V} Attention(Q,K~,V~)=softmax(dk QK~T)V~

    • 复杂度:从 O ( N 2 ) O(N^2) O(N2) 降至 O ( N ⋅ k ) O(N \cdot k) O(Nk)(若 k k k 为常数,则为 O ( N ) O(N) O(N))。
  • 优点:

    • 直接压缩序列长度,适合超长序列(如文档或高分辨率图像)。
    • 保留原始 Softmax 形式,理论近似误差更小。

3. 关键区别总结

特性Linear TransformerLinformer
核心方法特征映射 + 结合律优化低秩投影压缩 K K K V V V
复杂度 O ( N ) O(N) O(N)(严格线性) O ( N ⋅ k ) O(N \cdot k) O(Nk)(近似线性)
是否保留 Softmax❌ 替换为线性近似✅ 保留原始 Softmax
是否需要投影矩阵❌ 无额外参数✅ 需学习 E K , E V E_K, E_V EK,EV
适用场景通用序列任务(生成、分类)超长序列(文档、图像)
近似误差较高(依赖特征映射的合理性)较低(低秩假设成立时)
开源实现GitHubGitHub

4. 直观理解

  • Linear Transformer 像“用乘法分配律加速计算”:
    Q ⋅ ( K T V ) = ( Q K T ) V Q \cdot (K^T V) = (Q K^T) V Q(KTV)=(QKT)V
    左式(Linear)复杂度更低,但近似了右式(标准注意力)的效果。

  • Linformer 像“用降维压缩数据”:
    K K K V V V N × d N \times d N×d 投影到 k × d k \times d k×d(类似 PCA),直接减少计算量。


5. 代码对比

(1) Linear Transformer 核心代码
def linear_attention(Q, K, V):
    phi = lambda x: F.elu(x) + 1  # 特征映射
    Q, K = phi(Q), phi(K)
    KV = torch.einsum('nkd,nkv->kdv', K, V)  # 先计算 K^T V
    return torch.einsum('nkd,kdv->nkv', Q, KV)
(2) Linformer 核心代码
class LinformerAttention(nn.Module):
    def __init__(self, dim, seq_len, k=256):
        super().__init__()
        self.E_K = nn.Parameter(torch.randn(seq_len, k))  # 投影矩阵
        self.E_V = nn.Parameter(torch.randn(seq_len, k))

    def forward(self, Q, K, V):
        K = torch.einsum('nkd,nk->kd', K, self.E_K)  # 降维
        V = torch.einsum('nkd,nk->kd', V, self.E_V)
        attn = torch.softmax(Q @ K.T / sqrt(dim), dim=-1)
        return attn @ V

6. 如何选择?

  • 优先 Linear Transformer:

    • 任务需要严格线性复杂度且对近似误差不敏感(如实时生成)。
    • 设备资源有限,需减少参数量。
  • 优先 Linformer:

    • 处理超长序列(如 4K 图像、万词文档)。
    • 需保留 Softmax 的精确交互特性(如敏感的分类任务)。

总结
两者均为线性注意力的里程碑工作:

  • Linear Transformer 胜在数学简洁,适合轻量级场景;
  • Linformer 胜在低秩压缩,适合长序列高精度需求。
    后续研究(如 Performer、Nyströmformer)往往结合两者优点进一步优化。
    在这里插入图片描述

经典模型

1. Performer (2020)

  • 核心思想:使用随机特征映射(Random Feature Maps)近似 softmax 核函数,将注意力矩阵分解为低秩形式。
  • 优点:计算复杂度为 O ( N ) O(N) O(N),适用于长序列任务。
  • 缺点:随机特征映射可能引入近似误差。
  • 论文:Rethinking Attention with Performers

2. Linformer (2020)

  • 核心思想:通过低秩投影将 Key 和 Value 矩阵的维度从 N × d N \times d N×d 降为 k × d k \times d k×d(其中 k ≪ N k \ll N kN),从而将复杂度从 O ( N 2 ) O(N^2) O(N2) 降为 O ( N k ) O(Nk) O(Nk)
  • 优点:简单高效,适合长序列任务。
  • 缺点:低秩投影可能丢失部分信息。
  • 论文:Linformer: Self-Attention with Linear Complexity

3. Linear Transformer (2020)


4. Reformer (2020)

  • 核心思想:结合局部敏感哈希(LSH)和可逆残差层,将注意力限制在局部区域,从而降低计算复杂度。
  • 优点:适用于长序列任务,显存占用低。
  • 缺点:LSH 可能引入近似误差。
  • 论文:Reformer: The Efficient Transformer

5. BigBird (2020)

  • 核心思想:使用稀疏注意力机制,结合全局、局部和随机注意力,将复杂度从 O ( N 2 ) O(N^2) O(N2) 降为 O ( N ) O(N) O(N)
  • 优点:适合长序列任务,性能接近全注意力。
  • 缺点:稀疏模式可能影响模型表达能力。
  • 论文:BigBird: Transformers for Longer Sequences

6. Longformer (2020)

在这里插入图片描述

  • 核心思想:使用滑动窗口注意力和全局注意力,将复杂度从 O ( N 2 ) O(N^2) O(N2) 降为 O ( N ) O(N) O(N)
  • 优点:适合长序列任务,显存占用低。
  • 缺点:滑动窗口可能限制全局信息的捕捉。
  • 论文:Longformer: The Long-Document Transformer

总结
线性注意力机制通过低秩分解、核函数近似、稀疏化、局部注意力等方法,显著降低了传统注意力机制的计算和内存开销。这些方法在长序列任务(如文本、基因组、图像)中表现出色,但需要在计算效率和模型性能之间进行权衡。选择哪种算法取决于具体任务的需求和资源限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值