RoPE, 2D RoPE, 3D RoPE和复数
旋转位置编码是一种用于Transformer架构中的位置编码方法,从复数的角度来看,其主要利用了复数的乘法性质来实现位置编码,以下作为学习记录:
1. 旋转位置编码
1)对于输入序列的每个位置的嵌入向量,将嵌入向量分到(1, d)和(d,n)两部分,即:
2)复数表示:将分割后的位置嵌入向量两两组合为复数形式:
3)旋转位置:对于每个位置,定义一个旋转角度:
是一个预定义的常数,通过复数乘法来实现对复数向量的旋转变换,对每个嵌入向量进行旋转变换:
根据欧拉公式:
将上式展开后得:
即实现对向量的旋转操作。
4)理解:通过对query和key向量进行上述复数旋转操作,使得模型能够捕捉到相对位置信息。因为旋转矩阵的乘积对应角度的相加,所以经过旋转后的query和key向量的内积包含了相对位置的信息。
5)理解旋转矩阵的乘积等于对应角度的相加,旋转矩阵形式:
理解旋转矩阵的乘积就等于对应角度的相加:
将上式展开,可得:
几何意义:两次旋转的效果等于一次旋转。