Last updated 2 years ago
论文地址:
思路非常简单,利用MHA降维得到中间状态,然后再利用一个MHA计算最终结果,整体思路如下:
双向版本:
外部输入P∈Rl×dP\in \mathbb R^{l\times d}P∈Rl×d,输入X∈Rn×dX\in \mathbb R^{n\times d}X∈Rn×d
YP=MHA(P,X)∈Rl×dY_P= \mathrm{MHA}(P, X)\in \mathbb R^{l\times d}YP=MHA(P,X)∈Rl×d
YX=MHA(X,YP)∈Rn×dY_X=\mathrm{MHA}(X,Y_P)\in \mathbb R^{n\times d}YX=MHA(X,YP)∈Rn×d
单向版本:
定义
Apack=w(PX⊤)∈Rl×nA_{pack}=w(P X^{\top} )\in \mathbb R^{l\times n}Apack=w(PX⊤)∈Rl×n
www可选1 + elu / softplus(不能按行使用Softmax,因为会有信息泄露)
Auppack=w(f(X,X,Apack⊤))∈Rn×lA_{uppack}=w(f(X, X,A_{pack}^{\top}))\in \mathbb R^{n\times l}Auppack=w(f(X,X,Apack⊤))∈Rn×l
www可选Softmax(按行归一化)
输出Y=f(Auppack,Apack⊤,X)∈Rn×dY=f(A_{uppack},A_{pack}^{\top}, X)\in \mathbb R^{n\times d}Y=f(Auppack,Apack⊤,X)∈Rn×d
单向双向的时间复杂度都为O(nd2)O(nd^2)O(nd2),但是单向版本本质上是RNN,速度会比较慢。
不变。
适用于所有场景,效果总的来说不错。
暂无。
这篇论文思路还是挺不错的,利用Attention来降维的思路也见到过很多次,然后单向版本的算法可以再仔细思考下。