为什么要引入旋转位置编码?
因为想要捕捉相对位置关系,语义应该是和相对位置有关,而不是绝对位置。也就是在长文本中的某个词应该和它附近词更相关,离它较远的词关系没那么大。
回顾Attention
这里就希望在计算Q,K相似性的时候引入,相对位置信息,如果用数学函数表达的话Qi,Kj相乘应该只依赖三个信息,即Xi,Xj,(i-j),这里(i-j)就是Xi和Xj的相对位置信息,即
我们希望找到一种方式,使得Qi,Kj相乘完,满足上述式子。
回顾矩阵知识
矩阵乘法可以看作一种线性算子,一个矩阵A,左乘一个矩阵X,AX就是A对X每个行向量进行变换。
这里引入一个旋转矩阵
这个矩阵物理意义就是,对X逆时针旋转角度
旋转矩阵的俩个性质:
融入旋转位置信息
刚才我们希望的是
,我们现在假设Qi和Kj都是二维向量i,j是它们对应的position,是的弧度表示。
因为,我们现在想办法在这个等式右边融入相对位置信息
思路:把和俩个向量各自按照角度旋转后再计算点积
替换,新的向量内积就带上了位置信息。观察新的内积,模长没有变,角度增加了。现在我们目标就基本上完成了,下面是严格数学证明:
这里只推导了二维空间,高维空间推导类似
标签:编码,Kj,位置,矩阵,信息,旋转,Qi From: https://blog.csdn.net/data_huzh/article/details/143377493