为什么要引入旋转位置编码?
因为想要捕捉相对位置关系,语义应该是和相对位置有关,而不是绝对位置。也就是在长文本中的某个词应该和它附近词更相关,离它较远的词关系没那么大。
回顾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,
是
的弧度表示。
因为,我们现在想办法在这个等式右边融入相对位置信息
思路:把和
俩个向量各自按照
角度旋转后再计算点积
替换
,新的向量内积就带上了位置信息。观察新的内积,模长没有变,角度增加了
。现在我们目标就基本上完成了,下面是严格数学证明:

这里只推导了二维空间,高维空间推导类似
3057

被折叠的 条评论
为什么被折叠?



