Last updated 2 years ago
论文地址:
一篇对苏神提出方法的总结,利用2层GAU代替Transformer:
计算方式如下:
给定输入:X∈Rn×d\mathbf X\in \mathbb R^{n\times d}X∈Rn×d
线性变换:Z=XWZ∈Rn×d1,U=XWU∈Rn×d1,V=XWV∈Rn×d2\mathbf Z=\mathbf X\mathbf W_Z\in \mathbb R^{n\times d_1},\mathbf U=\mathbf X\mathbf W_U \in \mathbb R^{n\times d_1},\mathbf V=\mathbf X\mathbf W_V \in \mathbb R^{n\times d_2}Z=XWZ∈Rn×d1,U=XWU∈Rn×d1,V=XWV∈Rn×d2
计算Q,K\mathbf Q ,\mathbf KQ,K:Q=Z+bQ+RoPE∈Rn×d2,K=Z+bK+RoPE∈Rn×d2\mathbf Q=\mathbf Z + \mathbf b_Q + \mathrm{RoPE}\in \mathbb R^{n\times d_2},\mathbf K =\mathbf Z+\mathbf b_K + \mathrm{RoPE}\in \mathbb R^{n\times d_2}Q=Z+bQ+RoPE∈Rn×d2,K=Z+bK+RoPE∈Rn×d2
Attention Matrix:A=Softmax(log512nd2QK⊤)∈Rn×n\mathbf A=\mathrm{Softmax}\left(\frac{\log_{512}n}{\sqrt{d_2}}\mathbf Q \mathbf K^{\top}\right)\in \mathbb R^{n\times n}A=Softmax(d2log512nQK⊤)∈Rn×n
输出:O=[U⊙(AV)]WO∈Rn×d\mathbf O=[\mathbf U\odot (\mathbf A \mathbf V)]\mathbf W_O\in \mathbb R^{n\times d}O=[U⊙(AV)]WO∈Rn×d
依然是O(n2)O(n^2)O(n2),但是实际中比Transformer快。
不变。
暂无。
适用于所有场景,论文测了CLUE benchmark,效果还不错。
暂无,基本包含全部细节。
算是一个不错的方法, 把苏神提出的方法实现并改进,值得复现。