Recurrent Memory Transformer
论文地址:
整体思路以及计算方式
对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的思路。