旋转位置编码

为什么要引入旋转位置编码?

因为想要捕捉相对位置关系,语义应该是和相对位置有关,而不是绝对位置。也就是在长文本中的某个词应该和它附近词更相关,离它较远的词关系没那么大。

回顾Attention

这里就希望在计算Q,K相似性的时候引入,相对位置信息,如果用数学函数表达的话Qi,Kj相乘应该只依赖三个信息,即Xi,Xj,(i-j),这里(i-j)就是Xi和Xj的相对位置信息,即

Q_{i}K_{j}^{T} = g(X_{i},X{j},i-j)

我们希望找到一种方式,使得Qi,Kj相乘完,满足上述式子。

回顾矩阵知识

矩阵乘法可以看作一种线性算子,一个矩阵A,左乘一个矩阵X,AX就是A对X每个行向量进行变换。

这里引入一个旋转矩阵R(\theta )=\begin{pmatrix} cos\theta &sin\theta \\ -sin\theta &con\theta \end{pmatrix}

这个矩阵物理意义就是,对X逆时针旋转\theta角度

旋转矩阵的俩个性质:

R(\theta)^{T} = R(-\theta)

R(\theta_{1})R(\theta_{2}) = R(\theta_{1}+\theta_{2})

融入旋转位置信息

刚才我们希望的是

Q_{i}K_{j}^{T} = g(X_{i},X{j},i-j),我们现在假设Qi和Kj都是二维向量i,j是它们对应的position,\eta_{i},\eta_{j}Q_{i},K_{j}的弧度表示。

因为Q_{i}K_{j} = \left \| Q_{i} \right \|\left \| K_{j} \right \|cos(\eta_{j}-\eta_{i}),我们现在想办法在这个等式右边融入相对位置信息

思路:把Q_{i}K_{j}俩个向量各自按照i,j角度旋转后再计算点积

Q_{i}R(i)(K_{j}R(j))^T替换Q_{i}K_{j},新的向量内积就带上了位置信息。观察新的内积,模长没有变,角度增加了j-i。现在我们目标就基本上完成了,下面是严格数学证明:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值