论文地址:
https://arxiv.org/abs/2203.07852arrow-up-right
利用Memory的方式增加Transformer的性能,利用窗口的方式降低计算复杂度,对Memory部分使用递归的方式更新。
计算方式:
输入:X∈Rn×d,M∈Rm×d\mathbf X\in \mathbb R^{n\times d}, \mathbf M \in \mathbb R^{m\times d}X∈Rn×d,M∈Rm×d;
M\mathbf MM表示Memory;
输出部分更新方式:
X1=MHAw(X,X)∈Rn×d\mathbf X_1=\mathrm{MHA}_{w}(\mathbf X, \mathbf X)\in \mathbb R^{n\times d}X1=MHAw(X,X)∈Rn×d
Y1=MHAw(X,M)∈Rn×d\mathbf Y_1=\mathrm{MHA}_{w}(\mathbf X, \mathbf M)\in \mathbb R^{n\times d}Y1=MHAw(X,M)∈Rn×d
O=[X1,Y1]W∈Rn×d\mathbf O =[\mathbf X_1, \mathbf Y_1] \mathbf W \in \mathbb R^{n\times d}O=[X1,Y1]W∈Rn×d
Memory部分更新方式:
M1=MHAw(M,M)∈Rm×d\mathbf M_1=\mathrm{MHA}_{w}(\mathbf M, \mathbf M)\in \mathbb R^{m\times d}M1=MHAw(M,M)∈Rm×d
Y1=MHAw(M,X)∈Rm×d\mathbf Y_1=\mathrm{MHA}_{w}(\mathbf M, \mathbf X)\in \mathbb R^{m\times d}Y1=MHAw(M,X)∈Rm×d
O=[M1,Y1]W∈Rm×d\mathbf O =[\mathbf M_1, \mathbf Y_1] \mathbf W \in \mathbb R^{m\times d}O=[M1,Y1]W∈Rm×d
备注,这里省略了ffn部分,其中M\mathbf MM的ffn为rnn。
整体结构:
O((n+m)wd)O((n+m)wd)O((n+m)wd)。
不变。
https://github.com/dashstander/block-recurrent-transformerarrow-up-right
论文测试了lm,效果还不错。
暂无。
依然是一个空间换性能的方法。
Last updated 3 years ago