用 AI 转一对 RoPE 向量:位置一起后移,点积为何仍然相同

前天 3阅读

旋转位置编码听起来像把词放到一只表盘上。要把这个类比变成能核验的练习,可以请AI只处理一对二维向量:写出旋转后的坐标,再计算点积。这样能看见“位置进入计算”究竟发生在哪里。

用 AI 转一对 RoPE 向量:位置一起后移,点积为何仍然相同

AI模型生成的概念插图:两只旋转环提示共同位移与相对角度的关系;不代表软件截图、真实实验或精确数据图。

用整九十度避开小数干扰

设查询向量q=(1,2),键向量k=(3,4)。本练习人为约定每增加一个位置就逆时针转90度,R(x,y)=(-y,x)。这只是便于手算的一组旋转频率,不是任何实际模型的默认RoPE参数。

查询位于m=1,旋转后R¹q=(-2,1);键位于n=2,旋转后R²k=(-3,-4)。点积为(-2)×(-3)+1×(-4)=2。先让AI写坐标再乘,能够暴露把顺时针、逆时针混在一起的错误。

接着将两个位置一起增加2,成为m=3、n=4。对应坐标为R³q=(2,-1)、R⁴k=(3,4),点积是2×3+(-1)×4=2。坐标已经变化,但相对位置n-m仍为1。

相同的是相对旋转,不是所有得分

用矩阵记号可写成(Rᵐq)·(Rⁿk)=q·Rⁿ⁻ᵐk,因为旋转矩阵的转置相当于逆向旋转。直接核对右边:Rk=(-4,3),于是q·Rk=-4+6=2。RoFormer原始论文用这种结构把绝对位置旋转转化为点积里的相对位置关系。

把键位置改为n=1,查询仍在m=1,两者同转90度,点积恢复到q·k=1×3+2×4=11。只移动一边会改变相对角度;“两个位置一起平移不变”不能改写为“位置无论怎么改都没影响”。

还有一项独立验算:q的长度平方为5,旋转后仍为5;k的长度平方为25,旋转后仍为25。若结果变了,先查二维旋转公式,而不是去调整注意力的归一化。

让AI把不成立的推广也写出来

可用提示词:“取q=(1,2)、k=(3,4),位置每步逆时针旋转90度。列(m,n)=(1,2)、(3,4)、(1,1)的旋转坐标、点积与长度平方,再用q·R^(n-m)k独立复核。说明本例哪些参数是教学自选,哪些性质来自正交旋转,勿把点积说成最终注意力概率。”

真实RoPE通常在多组二维子空间中使用不同频率,内容向量也会随上下文变化。本例保持q、k固定,只验证位置旋转这一环;注意力还涉及缩放、掩码和归一化。这里90度频率四步就周期重复,更不能用它宣称模型能无损处理任意长度文本。

资料核对日期:2026年10月2日。数值为原创教学设定,已用独立Python计算复核,不代表真实模型性能测试。

参考资料

Su等:RoFormer原始论文

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。