论文地址:
https://arxiv.org/abs/2110.11773arrow-up-right
论文观察了一个有趣的性质,Attention Matrix是按行归一化(∑jpij=1\sum_{j}p_{ij}=1∑jpij=1),但是训练后的模型大部分情形也能满足列归一化:∑ipij=1\sum_{i}p_{ij}=1∑ipij=1,于是作者提出了如下改进方式:
定义K0=exp(C)∈Rn×c\mathbf K^0=\exp(\mathbf C)\in \mathbb R^{n\times c}K0=exp(C)∈Rn×c
定义:
行归一化:(NR(K))ij=Kij∑l=1nKil\left(N_{R}(\mathrm K)\right)_{ij}=\frac{\mathrm K_{ij}}{\sum_{l=1}^{n} \mathrm K_{il} }(NR(K))ij=∑l=1nKilKij
列归一化:(NC(K))ij=Kij∑l=1nKlj\left(N_{C}(\mathrm K)\right)_{ij}=\frac{\mathrm K_{ij}}{\sum_{l=1}^{n} \mathrm K_{lj} }(NC(K))ij=∑l=1nKljKij
执行如下操作:
极限为:
并且满足:
后续作者补充了一些理论证明,这里从略。
增加了时间复杂度,但总体还是O(n2d)O(n^2d)O(n2d)。
不变。
https://github.com/michaelsdr/sinkformersarrow-up-right
提升的性能有限,主要是一个观察和理论证明。
暂无。
一个有意思的结论(按行归一化),感觉原因是许多场景下query和key是相同的向量,所以算出来的Attention Matrix是接近对称的,按行归一化会导致按列也接近归一化。
Last updated 2 years ago