论文地址:
整体思路以及计算方式
对Transformer-XL做了改进,增加了读写内存(可微),整体流程如下:
输入:X∈Rn×d;
分块成为X=[X0,…,Xk−1],Xi∈Rm×d,km=n;
记忆Token:M∈Rl×d;
对于第i层Transformer Layer:
初始化M0i=Mi∈Rl×d;
对于j=0,…,k−1:
拼接:Yi=[Mji,Xj,Mji]∈R(m+2l)×d;
Oi=Tran(Yi,Yi)∈R(m+2l)×d;
更新:Mj+1i=Oi[−m:,:]∈Rl×d;
下一层的记忆Token为:Mi+1=Mki∈Rl×d;
图示:
时间复杂度
O((m+2l)2×kd)=O(nkd),所以序列关于序列长度是线性的。
训练以及loss
不变。
代码
实验以及适用场景
适用于Encoder和Decoder。
细节
暂无。
简评
整体思路是首先用window attention计算,但是跨window之间没有信息交互,global memory的动机就是弥补这点:在第i个window中,global memory有前i−1个window的信息,所以当前window的token和global memory的交互可以一定程度上代表和前i−1个window中全部的token进行交互,从而完成跨window的交互,所以本质上还是local-global的思路。
Last updated