(Katharopoulos et al., 2020 ) 提出了 linear transformer 的架构,将 attention 的计算复杂度从 O ( n 2 ) \mathcal{O}(n^2) O ( n 2 ) 降低到 O ( n ) O(n) O ( n ) , 其中 n n n 是 sequence length.
作者通过实验证明,linear transformer 相比于 transformer 快 4000 倍左右。
作者首先将 transformer (Vaswani et al., 2017 ) 重写为一个函数 T : R n × d → R n × d T:\mathbb{R}^{n\times d}\to\mathbb{R}^{n\times d} T : R n × d → R n × d , 其中 n n n 是 sequence length, d d d 是 hidden size.
对于输入的 hidden states x ∈ R n × d x\in\mathbb{R}^{n\times d} x ∈ R n × d , 我们有
T ℓ ( x ) = f ℓ ( A ℓ ( x ) + x ) , ℓ = 1 , … , L T_\ell(x) = f_{\ell}(A_{\ell}(x) + x), \ell=1,\dots, L T ℓ ( x ) = f ℓ ( A ℓ ( x ) + x ) , ℓ = 1 , … , L
这里 L L L 是 transformer layer 的层数, f ℓ ( ⋅ ) f_{\ell}(\cdot) f ℓ ( ⋅ ) 一般是一个两层的 MLP, A ℓ ( x ) A_{\ell}(x) A ℓ ( x ) transformer 中的 self-attention, 其定义如下:
A ℓ ( x ) = V ′ = s o f t m a x ( Q K T d ) V A_{\ell}(x) = V' =\mathrm{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V A ℓ ( x ) = V ′ = softmax ( d Q K T ) V
其中,
Q = x W Q , K = x W K , V = x W V Q = xW_Q, K=xW_K, V=xW_V Q = x W Q , K = x W K , V = x W V
上面的公式实际上使用了 exponential 函数来计算相似度,我们可以将其改写为更一般的形式
V i ′ = ∑ j = 1 N s i m ( Q i , K j ) V j ∑ j = 1 n s i m ( Q i , K j ) , i = 1 , … , n \htmlId{general_attention}{\begin{equation}
V_i' = \frac{\sum_{j=1}^N \mathrm{sim}(Q_i, K_j)V_j}{\sum_{j=1}^n \mathrm{sim}(Q_i, K_j)},\quad i=1,\dots,n
\end{equation}} V i ′ = ∑ j = 1 n sim ( Q i , K j ) ∑ j = 1 N sim ( Q i , K j ) V j , i = 1 , … , n
其中, Q i , K i , V i ∈ R d Q_i,K_i,V_i\in\mathbb{R}^{d} Q i , K i , V i ∈ R d 分别代表 Q , K , V Q,K,V Q , K , V 的每一行。
对于 softmax attention, 我们可以定义相似度为如下形式
s i m ( q , k ) : = exp ( q T k d ) \mathrm{sim}(q, k) := \exp\left(\frac{q^Tk}{d}\right) sim ( q , k ) := exp ( d q T k )
注意在 definition 中,我们仅要求 s i m ( ⋅ ) \mathrm{sim}(\cdot) sim ( ⋅ ) 是一个非负函数,因此我们可以使用任意的 kernels: k ( x , y ) : R 2 × d → R + k(x,y): \mathbb{R}^{2\times d}\to\mathbb{R}_+ k ( x , y ) : R 2 × d → R + .
给定一个满足条件的 kernel ϕ ( x ) \phi(x) ϕ ( x ) , 我们可以将公式 definition 改写为
V i ′ = ∑ j = 1 N ϕ ( Q i ) T ϕ ( K j ) V j ∑ j = 1 n ϕ ( Q i ) T ϕ ( K j ) , i = 1 , … , n V_i' = \frac{\sum_{j=1}^N \phi(Q_i)^T\phi(K_j)V_j}{\sum_{j=1}^n \phi(Q_i)^T\phi(K_j)},\quad i=1,\dots,n V i ′ = ∑ j = 1 n ϕ ( Q i ) T ϕ ( K j ) ∑ j = 1 N ϕ ( Q i ) T ϕ ( K j ) V j , i = 1 , … , n
然后,我们进行简化得到
V i ′ = ϕ ( Q i ) T ∑ j = 1 N ϕ ( K j ) V j T ϕ ( Q i ) T ∑ j = 1 n ϕ ( K j ) , i = 1 , … , n \htmlId{linear_attention}{\begin{equation}
V_i' = \frac{\phi(Q_i)^T\sum_{j=1}^N \phi(K_j)V_j^T}{\phi(Q_i)^T\sum_{j=1}^n \phi(K_j)},\quad i=1,\dots,n
\end{equation}} V i ′ = ϕ ( Q i ) T ∑ j = 1 n ϕ ( K j ) ϕ ( Q i ) T ∑ j = 1 N ϕ ( K j ) V j T , i = 1 , … , n
再将其改写为
V i ′ = ϕ ( Q i ) T ⟨ ϕ ( K ) , V ⟩ ϕ ( Q i ) T ∑ j = 1 n ϕ ( K j ) , i = 1 , … , n V_i' = \frac{\phi(Q_i)^T\langle \phi(K), V\rangle}{\phi(Q_i)^T\sum_{j=1}^n \phi(K_j)},\quad i=1,\dots,n V i ′ = ϕ ( Q i ) T ∑ j = 1 n ϕ ( K j ) ϕ ( Q i ) T ⟨ ϕ ( K ) , V ⟩ , i = 1 , … , n
这里内积 ⟨ ⋅ , ⋅ ⟩ \langle\cdot, \cdot\rangle ⟨ ⋅ , ⋅ ⟩ 是按照行进行计算的。此时我们就完成了转换,其矩阵形式可以表达如下
⟨ ϕ ( Q ) , ϕ ( K ) ⟩ V = ϕ ( Q ) ⟨ ϕ ( K ) , V ⟩ \langle \phi(Q), \phi(K)\rangle V = \phi(Q) \langle \phi(K), V \rangle ⟨ ϕ ( Q ) , ϕ ( K )⟩ V = ϕ ( Q ) ⟨ ϕ ( K ) , V ⟩
注意到,这里我们先计算 ⟨ ϕ ( K ) , V ⟩ ∈ R d × d \langle \phi(K), V \rangle\in\mathbb{R}^{d\times d} ⟨ ϕ ( K ) , V ⟩ ∈ R d × d , 其复杂度为 O ( n d 2 ) \mathcal{O}(nd^2) O ( n d 2 ) , 然后我们计算 ϕ ( Q ) ⟨ ϕ ( K ) , V ⟩ ∈ R n × d \phi(Q) \langle \phi(K), V \rangle\in\mathbb{R}^{n\times d} ϕ ( Q ) ⟨ ϕ ( K ) , V ⟩ ∈ R n × d , 其复杂度也是 O ( n d 2 ) \mathcal{O}(nd^2) O ( n d 2 ) , 因此现在 attention 的复杂度就是 O ( n d 2 ) \mathcal{O}(nd^2) O ( n d 2 ) , 也就是说,attention 的复杂度与 sequence length 是一个线性的关系。
接下来,对于 Decoder-only transformer, 我们在 attention 的基础上还会加上 causal mask, 也就是
M i j = { 1 , if j ≤ i 0 , otherwise M_{ij} = \begin{cases}
1, &\text{ if }j \leq i\\
0, &\text{ otherwise}
\end{cases} M ij = { 1 , 0 , if j ≤ i otherwise
此时,我们将对应的 attention 表达式 linear attention 改写如下:
V i ′ = ϕ ( Q i ) T ∑ j = 1 i ϕ ( K j ) V j T ϕ ( Q i ) T ∑ j = 1 i ϕ ( K j ) , i = 1 , … , n V_i' = \frac{\phi(Q_i)^T\sum_{j=1}^i \phi(K_j)V_j^T}{\phi(Q_i)^T\sum_{j=1}^i \phi(K_j)},\quad i=1,\dots,n V i ′ = ϕ ( Q i ) T ∑ j = 1 i ϕ ( K j ) ϕ ( Q i ) T ∑ j = 1 i ϕ ( K j ) V j T , i = 1 , … , n
作者在这里定义两个新的变量
S i = ∑ j = 1 i ϕ ( K j ) V j T , Z i = ∑ j = 1 i ϕ ( K j ) S_i = \sum_{j=1}^i\phi(K_j)V_j^T, \quad Z_i = \sum_{j=1}^i\phi(K_j) S i = j = 1 ∑ i ϕ ( K j ) V j T , Z i = j = 1 ∑ i ϕ ( K j )
这样,我们可以将 causal attention 改写为
V i ′ = ϕ ( Q i ) T S i ϕ ( Q i ) T Z i , i = 1 , … , n V_i' = \frac{\phi(Q_i)^TS_i}{\phi(Q_i)^TZ_i}, i=1,\dots,n V i ′ = ϕ ( Q i ) T Z i ϕ ( Q i ) T S i , i = 1 , … , n
作者提到,因为 S i S_i S i 和 Z i Z_i Z i 可以由 S i − 1 S_{i-1} S i − 1 和 Z i − 1 Z_{i-1} Z i − 1 在常数时间计算得到,因此其并不会影响 linear attention 的线性时间复杂度。
为了解决 linear attention 在实现时需要保存所有中间状态 S i S_i S i 来计算梯度的问题,作者将 S i S_i S i 改写为 cumulative sums, 这样可以保证算法的线性时间复杂度和常数空间复杂度。
给定分子的值 V ˉ i \bar{V}_i V ˉ i 和对应的梯度 ∇ V ˉ i L \nabla_{\bar{V}_i}\mathcal{L} ∇ V ˉ i L , 我们可以使用如下方式计算梯度:
∇ ϕ ( Q i ) L = ∇ V ˉ i L ( ∑ j = i n ϕ ( K j ) V j T ) T ∇ ϕ ( K i ) L = ( ∑ j = i n ϕ ( Q j ) ( ∇ V ˉ i L ) T ) T V i ∇ V j L = ( ∑ j = i n ϕ ( Q j ) ( ∇ V ˉ j L ) T ) T ϕ ( K i ) \begin{align}
\nabla_{\phi(Q_i)}\mathcal{L} &= \nabla_{\bar{V}_i}\mathcal{L}\left(\sum_{j=i}^n \phi(K_j)V_j^T\right)^T\\
\nabla_{\phi(K_i)}\mathcal{L} &= \left(\sum_{j=i}^n \phi(Q_j)(\nabla_{\bar{V}_i}\mathcal{L})^T\right)^TV_i\\
\nabla_{V_j}\mathcal{L} &= \left(\sum_{j=i}^n \phi(Q_j)(\nabla_{\bar{V}_j}\mathcal{L})^T\right)^T\phi(K_i)\\
\end{align} ∇ ϕ ( Q i ) L ∇ ϕ ( K i ) L ∇ V j L = ∇ V ˉ i L ( j = i ∑ n ϕ ( K j ) V j T ) T = ( j = i ∑ n ϕ ( Q j ) ( ∇ V ˉ i L ) T ) T V i = ( j = i ∑ n ϕ ( Q j ) ( ∇ V ˉ j L ) T ) T ϕ ( K i )
最终,整体的计算的算法如下
Algorithm: Linear transformers with causal masking function forward( ϕ ( Q ) , ϕ ( K ) , V ) (\phi(Q), \phi(K), V) ( ϕ ( Q ) , ϕ ( K ) , V ) :
V ′ ← 0 V'\gets0 V ′ ← 0 , S ← 0 S\gets0 S ← 0
For i = 1 , … , N i=1,\dots,N i = 1 , … , N
S ← S + ϕ ( K i ) V i T S\gets S + \phi(K_i)V_i^T S ← S + ϕ ( K i ) V i T
V ˉ i ← ϕ ( Q i ) S \bar{V}_i\gets \phi(Q_i)S V ˉ i ← ϕ ( Q i ) S
Return V ˉ \bar{V} V ˉ
function backward( ϕ ( Q ) , ϕ ( K ) , V , G ) (\phi(Q), \phi(K), V, G) ( ϕ ( Q ) , ϕ ( K ) , V , G ) :
S ← 0 S\gets0 S ← 0 , ∇ ϕ ( Q ) L ← 0 \nabla_{\phi(Q)}\mathcal{L}\gets0 ∇ ϕ ( Q ) L ← 0
For i = 1 , … , N i=1,\dots,N i = 1 , … , N
S ← S + ϕ ( K i ) V i T S\gets S+\phi(K_i)V_i^T S ← S + ϕ ( K i ) V i T
∇ V i L ← S T ϕ ( K i ) \nabla_{V_i}\mathcal{L}\gets S^T\phi(K_i) ∇ V i L ← S T ϕ ( K i )
∇ ϕ ( K i ) L ← S V i \nabla_{\phi(K_i)}\mathcal{L}\gets SV_i ∇ ϕ ( K i ) L ← S V i
Return ∇ ϕ ( Q ) L , ∇ ϕ ( K ) L , ∇ V L \nabla_{\phi(Q)}\mathcal{L}, \nabla_{\phi(K)}\mathcal{L}, \nabla_{V}\mathcal{L} ∇ ϕ ( Q ) L , ∇ ϕ ( K ) L , ∇ V L
计算时,由于 cumulative sum 的时间复杂度为 O ( n ) \mathcal{O}(n) O ( n ) , 空间复杂度为 O ( 1 ) \mathcal{O}(1) O ( 1 ) , 因此整体的复杂度仍然是 O ( n d 2 ) \mathcal{O}(nd^2) O ( n d 2 ) , 空间复杂度为 O ( n d ) \mathcal{O}(nd) O ( n d ) .
训练时,我们可以高效利用平行来加速计算。但是在推理的时候,我们只需要保存 ϕ ( K j ) V j T \phi(K_j)V_j^T ϕ ( K j ) V j T 作为 internal state, 这样就可以实现高速推理了。
作者还将 transformer 建模为 RNN 的形式,注意到 transformer 的定义如下:
T ℓ ( x ) = f ℓ ( A ℓ ( x ) + x ) , ℓ = 1 , … , L T_\ell(x) = f_{\ell}(A_{\ell}(x) + x), \ell=1,\dots, L T ℓ ( x ) = f ℓ ( A ℓ ( x ) + x ) , ℓ = 1 , … , L
我们可以使用两个变量,即 attention memory s s s 以及 normalized memory z z z 来便是 hidden states, 这样 transformer 的流程可以表示如下:
s 0 = 0 , z 0 = 0 , s i = s i = 1 + ϕ ( x i W k ) ( x W V ) T z i = z i − 1 + ϕ ( x i W K ) y i = f ℓ ( ϕ ( x i W Q ) T s i ϕ ( x i W Q ) T z i + x i ) \begin{aligned}
s_0&=0,\\
z_0&=0,
s_i = s_{i=1} + \phi(x_iW_k)(xW_V)^T\\
z_i &= z_{i-1} + \phi(x_iW_K)\\
y_i &= f_\ell \left(\frac{\phi(x_iW_Q)^Ts_i}{\phi(x_iW_Q)^Tz_i}+x_i\right)
\end{aligned} s 0 z 0 z i y i = 0 , = 0 , s i = s i = 1 + ϕ ( x i W k ) ( x W V ) T = z i − 1 + ϕ ( x i W K ) = f ℓ ( ϕ ( x i W Q ) T z i ϕ ( x i W Q ) T s i + x i )
也就是说,任意一个 transformer 都可以表示为一个 RNN.
Katharopoulos, A., Vyas, A., Pappas, N., & Fleuret, F. (2020). Transformers are rnns: Fast autoregressive transformers with linear attention. International Conference on Machine Learning , 5156–5165. Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., & Polosukhin, I. (2017). Attention Is All You Need. Advances in Neural Information Processing Systems .