论文地址:
https://arxiv.org/abs/2005.00743arrow-up-right
本文的观点很有意思:Attention中的Attention Matrix可以不通过Query和Key计算,通过其他方式得到n×nn\times nn×n矩阵也能得到合理的结果,模型一共有5种,分别如下:
Dense:
输入:X∈Rn×dX\in \mathbb R^{n\times d}X∈Rn×d
S1=f(XW1)∈Rn×d1S_1= f(XW_1) \in \mathbb R^{n\times d_1}S1=f(XW1)∈Rn×d1
S2=S1W2∈Rn×nS_2= S_1 W_2 \in \mathbb R^{n\times n}S2=S1W2∈Rn×n
O=Softmax(S2)(XW3)∈Rn×dO=\mathrm{Softmax}(S_2)(XW_3)\in \mathbb R^{n\times d}O=Softmax(S2)(XW3)∈Rn×d
Random:
初始化:S1∈Rn×nS_1 \in \mathbb R^{n\times n}S1∈Rn×n
O=Softmax(S1)(XW1)∈Rn×dO=\mathrm{Softmax}(S_1 )(XW_1)\in \mathbb R^{n\times d}O=Softmax(S1)(XW1)∈Rn×d
Factorized Dense(降低空间复杂度):
初始化:W1∈Rd×k1,W2∈Rd×k2W_1\in \mathbb R^{d\times k_1}, W_2\in \mathbb R^{d\times k_2}W1∈Rd×k1,W2∈Rd×k2,k1×k2=nk_1 \times k_2 = nk1×k2=n
S1=(XW1)⊙(XW2)∈Rn×nS_1= (XW_1) \odot (XW_2) \in \mathbb R^{n\times n}S1=(XW1)⊙(XW2)∈Rn×n(复制到相同维度,然后点乘)
O=Softmax(S1)(XW3)∈Rn×dO=\mathrm{Softmax}(S_1)(XW_3)\in \mathbb R^{n\times d}O=Softmax(S1)(XW3)∈Rn×d
Factorized Random(降低空间复杂度):
初始化:S1∈Rn×k,S2∈Rn×kS_1\in \mathbb R^{n\times k}, S_2\in \mathbb R^{n\times k}S1∈Rn×k,S2∈Rn×k
O=Softmax(S1S2⊤)(XW1)∈Rn×dO=\mathrm{Softmax}(S_1 S_2^{\top})(XW_1)\in \mathbb R^{n\times d}O=Softmax(S1S2⊤)(XW1)∈Rn×d
Mixture:
通过不同的方式计算Score Matrix SSS:
S=∑αiSi,∑αi=1S=\sum\alpha_i S_i, \sum \alpha_i =1S=∑αiSi,∑αi=1
O=Softmax(S)(XW)∈Rn×dO=\mathrm{Softmax}(S)(XW)\in \mathbb R^{n\times d}O=Softmax(S)(XW)∈Rn×d
本质上还需要计算Attention Matrix,所以依然为O(n2d)O(n^2d)O(n2d)
不变。
https://github.com/leaderj1001/Synthesizer-Rethinking-Self-Attention-Transformer-Modelsarrow-up-right
适用于所有场景,性能最好的是Mixture情形,这里使用了QK⊤QK^{\top}QK⊤,所以即使提升性能,其实意义并不大。
模型参数和序列长度有关,如果所以要处理很长的序列,模型应该会非常大。
提供了一个不同的视角,但是从实验上来说,不利用QK⊤\mathbf Q \mathbf K^{\top}QK⊤的情形性能其实比较差。
Last updated 2 years ago