Luna: Linear Unified Nested Attention
论文地址:
整体思路以及计算方式
思路非常简单,利用MHA降维得到中间状态,然后再利用一个MHA计算最终结果,整体思路如下:
双向版本:
外部输入P∈Rl×d,输入X∈Rn×d
YP=MHA(P,X)∈Rl×d
YX=MHA(X,YP)∈Rn×d
单向版本:
定义
XYZFft∈Rn×d1∈Rn×d1∈Rn×d2≜f(X,Y,Z)∈Rn×d2=t1xtj=1∑⊤yj⊤zj∈Rd2 Apack=w(PX⊤)∈Rl×n
w可选1 + elu / softplus(不能按行使用Softmax,因为会有信息泄露)
Auppack=w(f(X,X,Apack⊤))∈Rn×l
输出Y=f(Auppack,Apack⊤,X)∈Rn×d
时间复杂度
单向双向的时间复杂度都为O(nd2),但是单向版本本质上是RNN,速度会比较慢。
训练以及loss
不变。
代码
实验以及适用场景
适用于所有场景,效果总的来说不错。
细节
暂无。
简评
这篇论文思路还是挺不错的,利用Attention来降维的思路也见到过很多次,然后单向版本的算法可以再仔细思考下。