关于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)

结束!

目录
相关文章
|
5天前
|
Python
python用鼠标获取图像任一点的坐标和像素值
python用鼠标获取图像任一点的坐标和像素值
56 1
|
5天前
|
机器学习/深度学习 缓存 人工智能
大语言模型中常用的旋转位置编码RoPE详解:为什么它比绝对或相对位置编码更好?
Transformer的基石自2017年后历经变革,2022年RoPE引领NLP新方向,现已被顶级模型如Llama、Llama2等采纳。RoPE融合绝对与相对位置编码优点,解决传统方法的序列长度限制和相对位置表示问题。它通过旋转矩阵对词向量应用角度与位置成正比的旋转,保持向量稳定,保留相对位置信息,适用于长序列处理,提升了模型效率和性能。RoPE的引入开启了Transformer的新篇章,推动了NLP的进展。[[1](https://avoid.overfit.cn/post/9e0d8e7687a94d1ead9aeea65bb2a129)]
150 0
|
5天前
|
机器学习/深度学习
|
3天前
|
JavaScript 前端开发 流计算
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理
|
5天前
|
存储 算法 Java
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
20 0
VC中如何把一串文字旋转90度显示
VC中如何把一串文字旋转90度显示
|
7月前
|
定位技术
任意一张图片的CGCS2000坐标配准
任意一张图片的CGCS2000坐标配准
66 0
|
10月前
用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形
用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形
|
10月前
ENVI_IDL:如何对影像进行各种方式的上下左右的颠倒或者翻转.
ENVI_IDL:如何对影像进行各种方式的上下左右的颠倒或者翻转.
199 0
|
11月前
|
算法 前端开发 JavaScript
图片转ASCII字符图案的原理(可调整亮度对比度 宽高度)
平时看代码会看到很多标点符号的字符拼起来的图案, 特别有趣, 像kong(一个高性能API网关), 除了源代码里面有图案, 命令行也藏了彩蛋. 我今天要玩的会深入一点: 基于图片的灰度值来生成图案. 此时的图片不单单有轮廓, 还有光影效果, 也就是素描中提及的黑白灰.
65 0
http://www.vxiaotou.com