关于RoPE旋转位置编码的理解

简介: 关于RoPE旋转位置编码的理解

RoPE中旋转位置编码的全部过程如图所示:

这里我以自己的理解解释一下这张图以及等式

image.png


首先我们以二维为例子,为了方便我们令 m=1,再把 Wqxm(x1,x2)表示, q m q_m qm(x1,x2)表示,就有了如下等式:

image.png

这里我觉得不应该弄成等式,我转化成这样好理解一些:

image.png


第一种: image.png

我们有 image.png ,采取的处理方式是先 image.png ,单数取实部,双数取虚部这里有

image.png


  image.png

image.png 都知道欧拉函数 image.png 从欧拉函数中我们可以发现 image.png 是可以对应平面直角坐标系的,即 image.png ;从这里的公式来说x1,x2表示的是标量,如果使用 image.png ,从某种意义上拓展了其维度,这也是我使用 <=表示的原因;

第二种:转化为指数形式再展开

上面说了,标量直接与 image.png 从某种意义上来说相当于拓维,所以我们可以两两构成 image.png ,再来与 image.png 进行计算,最后再把 image.png 转化为 image.png ;有 image.png

image.png

image.png


image.png

image.png

得到的旋转矩阵就是 image.png

引入到多维有旋转矩阵为:

image.png

这里直接贴的原文,转置的原因为我这里的顺序与原文相反;

同时可以发现:

image.png

通过这个结论拓展到多维就可以得到:

image.png

这里是原文中出现的错误 image.png 应该改为 image.png

也就是相当于

image.png

这里插入介绍一下旋转矩阵的快速计算技巧: 1f7b758aed8148639529eb2fa0284777.png

结合下面代码:

def rotate_every_two(x):
    x1 = x[:, :, :, ::2]
    x2 = x[:, :, :, 1::2]
    x = torch.stack((-x2, x1), dim=-1)
    return x.flatten(-2)

def theta_shift(x, sin, cos):
    return (x * cos) + (rotate_every_two(x) * sin)

结束!

目录
相关文章
|
6月前
|
机器学习/深度学习 缓存 人工智能
大语言模型中常用的旋转位置编码RoPE详解:为什么它比绝对或相对位置编码更好?
Transformer的基石自2017年后历经变革,2022年RoPE引领NLP新方向,现已被顶级模型如Llama、Llama2等采纳。RoPE融合绝对与相对位置编码优点,解决传统方法的序列长度限制和相对位置表示问题。它通过旋转矩阵对词向量应用角度与位置成正比的旋转,保持向量稳定,保留相对位置信息,适用于长序列处理,提升了模型效率和性能。RoPE的引入开启了Transformer的新篇章,推动了NLP的进展。[[1](https://avoid.overfit.cn/post/9e0d8e7687a94d1ead9aeea65bb2a129)]
924 0
|
4月前
|
JavaScript
js【图解】滚动条的位置(文档与屏幕间的距离),鼠标事件距离(位置),元素距离(位置)
js【图解】滚动条的位置(文档与屏幕间的距离),鼠标事件距离(位置),元素距离(位置)
96 7
|
5月前
|
存储 机器学习/深度学习 算法
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
|
6月前
|
机器学习/深度学习
|
定位技术
任意一张图片的CGCS2000坐标配准
任意一张图片的CGCS2000坐标配准
135 0
|
数据可视化 PyTorch 算法框架/工具
数据增强之裁剪、翻转与旋转
数据增强之裁剪、翻转与旋转
144 0
数据增强之裁剪、翻转与旋转
用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形
用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形
119 0
|
算法 前端开发 JavaScript
图片转ASCII字符图案的原理(可调整亮度对比度 宽高度)
平时看代码会看到很多标点符号的字符拼起来的图案, 特别有趣, 像kong(一个高性能API网关), 除了源代码里面有图案, 命令行也藏了彩蛋. 我今天要玩的会深入一点: 基于图片的灰度值来生成图案. 此时的图片不单单有轮廓, 还有光影效果, 也就是素描中提及的黑白灰.
91 0
|
C语言
一篇文章搞定字符串的旋转问题(数组旋转问题)!
一篇文章搞定字符串的旋转问题(数组旋转问题)!
79 0