论文地址:
https://arxiv.org/abs/2206.02680arrow-up-right
提出了一种Attention的计算方式,主要思想是将QQQ压缩为一个向量,这里带来的问题是,KKK交互的token变成了一个,所以应该会带来一些性能损失,计算公式如下:
输入:X∈Rn×dX\in \mathbb R^{n\times d}X∈Rn×d
cs=Softmax(XW1)∈Rn×1c_s = \mathrm{Softmax}(X W_1) \in \mathbb R^{n\times 1}cs=Softmax(XW1)∈Rn×1
Xk=XWk∈Rn×d,Xv=XWv∈Rn×dX_k = XW_k \in \mathbb R^{n\times d}, X_v=XW_v \in \mathbb R^{n\times d}Xk=XWk∈Rn×d,Xv=XWv∈Rn×d
cv=cs⊤Xk∈R1×dc_v= c_s^{\top} X_k \in \mathbb R^{1\times d}cv=cs⊤Xk∈R1×d
O1=cv⊙ReLU(Xv)∈Rn×dO_1=c_v \odot \mathrm{ReLU}(X_v)\in \mathbb R^{n\times d}O1=cv⊙ReLU(Xv)∈Rn×d
O2=O1Wo∈Rn×dO_2=O_1 W_o \in \mathbb R^{n\times d}O2=O1Wo∈Rn×d
O(nd2)O(nd^2)O(nd2)。
不变。
https://github.com/apple/ml-cvnetsarrow-up-right
只适用于Encoder(csc_scs的计算),性能尚可,作者这里考虑的主要是效率,从效率角度来说却是不错。
思路总体来说是很简单的,可以考虑适配到NLP任务中。
Last updated 2 years ago