尽管标准自注意力 (self-attention)提供了出色的序列建模能力,但其二次方的计算和内存复杂度(序列长度为 N N N 时为 O ( N 2 ) O(N^2) O ( N 2 ) )仍然是一个主要的限制,尤其是在处理高分辨率图像生成、文档摘要或基因组数据分析等场景中遇到的长序列时。Choromanski 等人 (2020) 提出的 Performer 架构,通过以线性复杂度近似注意力机制 (attention mechanism),提供了一种有效的解决办法。它通过一种巧妙的技术,称为“通过正交随机特征实现快速注意力”(FAVOR+),实现了这一点。
限制:显式注意力矩阵计算
回顾标准缩放点积注意力:
注意力 ( Q , K , V ) = softmax ( Q K T d k ) V \text{注意力}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V 注意力 ( Q , K , V ) = softmax ( d k Q K T ) V
这里,Q , K , V Q, K, V Q , K , V 分别是查询、键和值向量 (vector)的矩阵,每个矩阵有 N N N 行(序列长度)和 d k d_k d k (或 d v d_v d v )列(嵌入 (embedding)维度)。主要计算成本在于计算 N × N N \times N N × N 的注意力矩阵 A = softmax ( Q K T / d k ) A = \text{softmax}(QK^T / \sqrt{d_k}) A = softmax ( Q K T / d k ) 。这需要 O ( N 2 d k ) O(N^2 d_k) O ( N 2 d k ) 次操作和 O ( N 2 ) O(N^2) O ( N 2 ) 内存,随着 N N N 的增加,这很快变得难以承受。
使用核与随机特征近似注意力
Performer 模型的核心思路是避免显式计算 N × N N \times N N × N 矩阵 A A A 。相反,它寻求使用核方法来近似注意力机制 (attention mechanism)。让我们将注意力机制的第 i i i 个输出向量 (vector)(归一化 (normalization)之前)重写为:
注意力 ′ ( Q , K , V ) i = ∑ j = 1 N exp ( q i T k j d k ) v j \text{注意力}'(Q, K, V)_i = \sum_{j=1}^N \exp\left(\frac{q_i^T k_j}{\sqrt{d_k}}\right) v_j 注意力 ′ ( Q , K , V ) i = j = 1 ∑ N exp ( d k q i T k j ) v j
标准注意力输出通过使用分母 D i = ∑ j = 1 N exp ( q i T k j / d k ) D_i = \sum_{j=1}^N \exp(q_i^T k_j / \sqrt{d_k}) D i = ∑ j = 1 N exp ( q i T k j / d k ) 对此和进行归一化而得到。
Performer 模型利用了函数 相似度 ( q i , k j ) = exp ( q i T k j / d k ) \text{相似度}(q_i, k_j) = \exp(q_i^T k_j / \sqrt{d_k}) 相似度 ( q i , k j ) = exp ( q i T k j / d k ) 类似于核函数的思路,特别是在经过适当缩放和变换后的高斯核。核方法通常允许使用特征映射隐式计算相似度。Performer 模型提出寻找一个特征映射 ϕ : R d k → R r \phi: \mathbb{R}^{d_k} \rightarrow \mathbb{R}^r ϕ : R d k → R r ,其中 r r r 是随机特征的维度(通常 r ≪ N r \ll N r ≪ N ),使得核相似度可以通过特征空间中的内积来近似:
exp ( q i T k j d k ) ≈ ϕ ( q i ) T ϕ ( k j ) \exp\left(\frac{q_i^T k_j}{\sqrt{d_k}}\right) \approx \phi(q_i)^T \phi(k_j) exp ( d k q i T k j ) ≈ ϕ ( q i ) T ϕ ( k j )
如果存在这样的特征映射 ϕ \phi ϕ ,注意力计算可以巧妙地重新排序,以避免 N × N N \times N N × N 的计算。未归一化的注意力求和变为:
注意力 ′ ( Q , K , V ) i ≈ ∑ j = 1 N ( ϕ ( q i ) T ϕ ( k j ) ) v j = ϕ ( q i ) T ∑ j = 1 N ( ϕ ( k j ) v j T ) \text{注意力}'(Q, K, V)_i \approx \sum_{j=1}^N (\phi(q_i)^T \phi(k_j)) v_j = \phi(q_i)^T \sum_{j=1}^N (\phi(k_j) v_j^T) 注意力 ′ ( Q , K , V ) i ≈ j = 1 ∑ N ( ϕ ( q i ) T ϕ ( k j )) v j = ϕ ( q i ) T j = 1 ∑ N ( ϕ ( k j ) v j T )
类似地,分母可以近似为:
D i ≈ ∑ j = 1 N ϕ ( q i ) T ϕ ( k j ) = ϕ ( q i ) T ∑ j = 1 N ϕ ( k j ) D_i \approx \sum_{j=1}^N \phi(q_i)^T \phi(k_j) = \phi(q_i)^T \sum_{j=1}^N \phi(k_j) D i ≈ j = 1 ∑ N ϕ ( q i ) T ϕ ( k j ) = ϕ ( q i ) T j = 1 ∑ N ϕ ( k j )
请注意操作顺序的重要变化。我们可以首先计算求和 ∑ j = 1 N ( ϕ ( k j ) v j T ) \sum_{j=1}^N (\phi(k_j) v_j^T) ∑ j = 1 N ( ϕ ( k j ) v j T ) (一个 r × d v r \times d_v r × d v 矩阵)和 ∑ j = 1 N ϕ ( k j ) \sum_{j=1}^N \phi(k_j) ∑ j = 1 N ϕ ( k j ) (一个 r × 1 r \times 1 r × 1 向量)。这些计算只需处理键和值一次,大约需要 O ( N r d k + N r d v ) O(N r d_k + N r d_v) O ( N r d k + N r d v ) 的时间。然后,对于每个查询 q i q_i q i ,我们计算 ϕ ( q i ) \phi(q_i) ϕ ( q i ) 并执行两次矩阵-向量乘法,每个查询需要 O ( r d k + r d v ) O(r d_k + r d_v) O ( r d k + r d v ) 的时间。总时间复杂度近似为 O ( N r ( d k + d v ) ) O(N r (d_k + d_v)) O ( N r ( d k + d v )) ,如果 r r r 被视为常数或增长远慢于 N N N ,则在 N N N 上呈线性关系。内存复杂度也降低到 O ( N r + N d k + N d v ) O(N r + N d_k + N d_v) O ( N r + N d k + N d v ) ,主要用于存储映射后的查询、键、值和中间求和结果。
计算流程对比。标准注意力需要形成代价高昂的 N × N N \times N N × N 矩阵(红色节点)。Performer 模型使用特征映射 ϕ \phi ϕ 来计算中间求和(黄色节点),这些操作具有线性复杂度 O ( N ) O(N) O ( N ) ,从而避免了二次方的限制。
构建特征映射 ϕ \phi ϕ
Performer 模型的有效性取决于能否找到一个合适的特征映射 ϕ \phi ϕ 。FAVOR+ 机制通过使用随机特征构建 ϕ \phi ϕ 来实现这一点,其灵感来源于用于近似高斯核的技术(如随机傅里叶特征)。Performer 模型的一个重要贡献是开发了能保证非负性(ϕ ( x ) T ϕ ( y ) ≥ 0 \phi(x)^T \phi(y) \ge 0 ϕ ( x ) T ϕ ( y ) ≥ 0 )的特征映射,这有助于保持稳定性并更好地近似 softmax 函数的特性(其输出分量是非负的)。
具体来说,Performer 模型基于随机投影和三角函数定义特征映射,例如:
ϕ ( x ) = h ( x ) m [ f 1 ( w 1 T x ) , … , f m ( w m T x ) , f 1 ′ ( w 1 T x ) , … , f m ′ ( w m T x ) ] T \phi(x) = \frac{h(x)}{\sqrt{m}} \left[ f_1(w_1^T x), \dots, f_m(w_m^T x), f'_1(w_1^T x), \dots, f'_m(w_m^T x) \right]^T ϕ ( x ) = m h ( x ) [ f 1 ( w 1 T x ) , … , f m ( w m T x ) , f 1 ′ ( w 1 T x ) , … , f m ′ ( w m T x ) ] T
其中 w i w_i w i 是随机采样的向量 (vector),h ( x ) h(x) h ( x ) 是像 exp ( ∥ x ∥ 2 / 2 ) \exp(\|x\|^2 / 2) exp ( ∥ x ∥ 2 /2 ) 这样的函数,而 f l , f l ′ f_l, f'_l f l , f l ′ 是像 ( sin , cos ) (\sin, \cos) ( sin , cos ) 或 ( exp , exp ) (\exp, \exp) ( exp , exp ) 这样的对。特征映射 r r r 的维度是 2 m 2m 2 m 。精确的构造确保了 softmax 核的无偏或近无偏估计,并具有非负输出。
优点与注意事项
优点:
线性复杂度: 将注意力的时间和空间复杂度从 O ( N 2 ) O(N^2) O ( N 2 ) 降低到 O ( N ) O(N) O ( N ) ,使得能够应用于更长的序列。
强大的理论保证: 为 softmax 核提供了可证明的近似界限。
良好的实证表现: 通常能达到与标准 Transformer 模型相当的性能,同时在长序列任务上效率显著提高。
兼容性: 可以作为标准注意力模块的替代品进行集成,对整个 Transformer 架构的修改很小。
注意事项:
近似质量与成本: 近似质量取决于随机特征维度 r r r 。较大的 r r r 会产生更好的近似,但会增加线性复杂度中的常数因子(O ( N r d ) O(N r d) O ( N r d ) )。选择 r r r 需要在精度和计算成本之间进行权衡。 r r r 的典型值可能在 64 到 256 甚至更高,具体取决于任务和资源。
随机性: 使用随机特征会引入随机性。然而,方差通常较低,特别是在 r r r 的选择合理时,并且 Performer 模型采用正交随机特征等技术来进一步降低这种方差。在实际应用中,不同随机种子下的结果通常是稳定的。
通过使用非负随机特征近似 softmax 核,Performer 模型提供了一种计算高效且有理论依据的方法,能够将 Transformer 模型扩展到以前认为不可行的长度,显著拓宽了其应用范围。