RoPE 旋转位置编码,详细解释(下)NLP 面试的女生彻底说明白了

news2024/12/28 20:56:27

RoPE 旋转位置编码,详细解释(下)NLP 面试的女生彻底说明白了

原创 看图学 看图学 2024年07月01日 07:55 北京

图片

书接上文,上文见:这么解释 RoPE 旋转位置编码,女朋友睁大了双眼(上)

下面简单回顾一下上文的重点,后面复数域的解释会用到一些结论,详细的可以点击上面的文章观看。

实数域的 RoPE 解释(重点回顾)

RoPE 的实现和解释,完全可以只在实数域中进行。比如 llama 的实现,就完全没有用到复数的概念。

而在实数域上关于 RoPE 的解释,核心就一句话:在内积空间中,内积具有旋转不变性 

也就是下面这个性质:

也就是说 两个旋转向量的内积等于其中一个向量旋转它们角度差的结果与另一个原始向量的内积。也可以看作是一个向量逆时针旋转了 , 另一个向量逆时针旋转了 ,然后这两个向量又同时顺时针旋转了 于是第一个向量处在 的位置,第二个向量则转到了实数轴上,角度为0. 因为内积的旋转不变性,两个内积依然相等记住这句话,后面在复数域证明还能用。

复数域的 RoPE 解释

其实涉及到旋转的计算,到复数域里会变得特别方便,因为虚数  i 的物理含义就是旋转

为了理解虚数/复数,我们先拿负数来做个对比。

负数的出现让人们困惑了很久,我现在有1个苹果,被女朋友拿走了2个,实在是有些脑壳疼。但是现在我们很容易能理解负数,就是欠我一个苹果呗。如果较真的话,那 -1 个苹果在哪里?可能是我从室友那里借了一个。

图片

可以想象一下,在一维的实数轴上,取负可以让1变成-1,再取负又变成1,然后循环。

还有其他的方法能从1到-1么?这时候认知就要提高了,就好像古代人的活动范围很小,那自然认为地球是平的。知道后来可以航海,发现为什么船接近的时候为什么总是先看到船帆然后才看到船的身子,这个时候就开始思考了,地球有没有可能是圆的。

从1到-1如果只在实数轴上移动,那只能是取负。如果把数轴扩展到2维,新增一个虚数轴,那就可以旋转了。1 乘以 i 就跑到虚数轴的上面再乘以 i 就跑到-1 了。再乘以i就跑到虚数轴的下面,再乘以i就回到了1. 如下图所示:

图片

所以为什么 , 其含义就是在复平面上转了2次,从 1 转到了 -1.

欧拉公式  提出来很久之后,大家才尝试从几何的角度去理解欧拉公式。

欧拉公式其实就是在复平面上旋转,复平面是一个2d 平面。为了看的更清楚一点呢,我们再升一维。新增一个与复平面正交的轴代表 x。如下面视频所示。

看图学

,赞16

这个3维空间上就很好的展示了随着 x 的增大, 就一直在旋转的画圈。这个旋转的曲线投影到复平面上,那就是在复平面画圆;如果投影到 x 与 实数轴的平面上,就是 cos 函数;如果投影到 x 与 虚数轴的平面上,那就是 sin 函数。

再回想一下 RoPE 的旋转角度的函数,恰好就是一个 sin 函数和一个 cos 函数,所以说 RoPE 就如同上面欧拉公式的视频一样,在一直转圈,所以叫旋转编码

然后在实数域证明中,我们已经证明了通过旋转矩阵来解释 RoPE。在复数域一个向量旋转怎么表示呢?非常简单,逆时针旋转  度等于 乘以 . 证明如下:

你看,旋转矩阵又出来了。

所以论文中的

就是 q 和 k 分别旋转了  和 

复数域中同样满足内积旋转不变性。只不过复数域中的内积不再是简单的相乘,而是要取共轭。

比如复数  和 ,内积定义为:

其中  是  的共轭复数(论文中的共轭是用  来表示的)。

计算复内积:

之所以采用共轭复数,完全是为了满足内积的三个性质:正定性,共轭对称性,第一变元线性

共轭复数的物理意义就是顺时针旋转还记得 逆时针旋转  度等于 乘以 ,那么乘以共轭复数  就是 顺时针旋转  度( 逆时针旋转 - 度)。

复数域的旋转不变性证明如下:

这基本上就是 RoPE 在数学上的解释。

最后论文中就还剩下一个 Re (实部)没有解释。看上面复数的内积公式就可以看出,复数域内积的实部(Re)等于实数域两个向量的内积。也就是

注意左边二维向量的实数域的表示,右边则是复数域的表示。

然后 RoPE 的论文里公式的表示似乎没那么严谨,在论文表述的过程中相同的符号含义发生了变化。所以有时候看上去有些困惑,看完本文和下图的解释应该就明白了。

图片

 

— END —

荐阅读:

这么解释 RoPE 旋转位置编码,女朋友睁大了双眼(上)

Transformers 中的 Position Embedding 的作用

看图学大模型:Transformers 的前生今世(上)

内积,点积,数量积是一样的么?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1907526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12种增强Python代码的函数式编程技术

前言 什么是函数式编程? 一句话总结:函数式编程(functional programming)是一种编程范式,之外还有面向对象(OOP)、面向过程、逻辑式编程等。 函数式编程是一种高度抽象的编程范式,它倡导使用纯函数&#x…

【计算机网络】物理层(作业)

1、若信道在无噪声情况下的极限数据传输速率不小于信噪比为30dB 条件下的极限数据传输速率,则信号状态数至少是(D)。 A. 4B. 16C. 8D. 32 解析:可用奈奎斯特采样定理计算无噪声情况下的极限数据传输速率,用香农第二定…

Aqara 发布多款智能照明新品,引领空间智能新时代

7月8日,全球 IoT 独角兽品牌 Aqara 以“光,重塑空间想象”为主题,举办了线上智能照明新品沟通会。 会上,Aqara 正式发布一系列引领行业的智能照明新品,包括银河系列轨道灯 V1 以及繁星系列妙控旋钮 V1 等,…

Leetcode—97. 交错字符串【中等】

2024每日刷题&#xff08;140&#xff09; Leetcode—97. 交错字符串 2d动规实现代码 class Solution { public:bool isInterleave(string s1, string s2, string s3) {int m s1.length();int n s2.length();int len s3.length();if(m n ! len) {return false;}vector<…

metersphere链接腾讯邮箱步骤

1、打开腾讯邮箱生成授权码 路径&#xff1a;设置-账户-账户安全 生成的授权码只会展示1次&#xff0c;注意保存 2、在系统设置-系统参数设置-邮件设置填写授权码和SMTP信息 SMTP信息在邮箱的客户端设置中可以获取到对应的信息 3、信息填写完后&#xff0c;可以测试连接&…

XDMA原理学习(1)——DMA技术详解

目录 一、什么是DMA&#xff1f;为什么需要DMA&#xff1f; 二、DMA分类 2.1 Block DMA 2.2 Scatter-Gather DMA 2.3 Ring buffer DMA 三、实际案例 3.1 STM32微处理器 3.1.1 Block DMA 3.1.2 Scatter-Gather DMA 3.1.3 使用场景举例&#xff1a; 3.1.4 配置与实现 …

Vue框架引入

vue简介 1.1.vue是什么?Vue官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ vue是一套构建用户界面的渐进式javascript框架 构建用户界面:将我们手里拿到的数据通过某种办法变成用户可以看见的界面前端工程师的职责:就是在合适的时候发出合适的请求,然后…

PyQt5显示QImage并将QImage转换为PIL图像保存到缓存

PyQt5显示QImage并将QImage转换为PIL图像保存到缓存 1、效果图 2、流程 1、获取摄像头资源,打开摄像头 2、截取图像 3、opencv读的通道是BGR,要转成RGB 4、往显示视频的Label里显示QImage 5、将QImage转换为PIL图像,并保存到缓存 6、获取图像中人脸信息3、代码 # -*- codin…

数据结构(Java):链表面试OJ题

1、题一&#xff1a;获取链表倒数第k个节点 . - 力扣&#xff08;LeetCode&#xff09; 1.1 思路解析 此题我们使用双指针法求解。 首先&#xff0c;我们要知道&#xff0c;倒数的第k个节点&#xff0c;距离倒数第一个节点还需要移动k-1次。 1.那么我们可以定义出两个指针&…

VS2019运行显示缺少调试目标

出现问题点 如果点击运行显示上述错误&#xff0c;可以尝试先清理&#xff0c;然后重新生成 此时会出来一个调试目标路径&#xff0c;代表生成成功 但是运行还是显示缺少调试目标 右键项目&#xff0c;点击属性&#xff0c;然后修改路径&#xff0c;既可成功

最小爬楼梯(dp)

import java.util.Scanner;public class ClimbingStairsCost {public static int minCostClimbingStairs(int[] cost) {int n cost.length; // 获取输入的 cost 数组的长度int[] dp new int[n 1]; // 创建一个用于存储每个台阶最小花费的 dp 数组dp[0] 0; dp[1] 0; // 初始…

【Python】各种运行符及其运用实例

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言什么是运算符&#xff1f;算术运算符实例 比较运算符实例 赋值运算符实例 逻辑运算符实例 位运算符实例 成员运算符实例 身份运算符实例 运算符优先级实例 前言 关于九种数据…

【手撕数据结构】卸甲时/空间复杂度

目录 前言时间复杂度概念⼤O的渐进表⽰法小试牛刀 空间复杂度 前言 要想知道什么是空/时间复杂度,就得知道什么是数据结构。 这得分两层来理解。我们生活中处处存在数据&#xff0c;什么抖音热点上的国际大事&#xff0c;什么懂的都懂的雍正卸甲等等一系列我们用户看得到的&a…

抖音矩阵系统源代码开发部署,系统独立搭建,抖音搜索引擎优化(SEO)

抖音搜索引擎优化&#xff08;SEO&#xff09;技术框架概览。抖音SEO矩阵系统旨在提升视频的在线可见度和搜索排名。 一、系统概观 抖音SEO系统旨在增强视频内容的在线可见性及搜索排名&#xff0c;通过深入分析用户行为与需求&#xff0c;为内容创作者提供强大的支持。 二、…

51-3 内网信息收集 - 获取RDP密码信息(没有实验成功)

获取常见应用软件凭据 注意: %USERPROFILE% 是环境变量。在使用系统权限时,可以将 %USERPROFILE% 替换为绝对路径,或使用其他用户的令牌进行操作。 获取 RDP 保存的凭据(远程桌面) 为了避免每次连接服务器都进行身份验证,经常使用 RDP 远程桌面连接远程服务器的用户可能…

【js面试题】js的数据结构

面试题&#xff1a;说说你了解的js数据结构 JavaScript中的数据结构是编程的基础&#xff0c;它们帮助我们以高效的方式存储和操作数据。 下面将详细介绍 这些数据结构的来源、概念和应用场景。 数组 Array 来源&#xff1a; 数组是一种线性数据结构&#xff0c;起源于计算…

你可以终止 forEach 吗?

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 理解 forEach JavaScript 的forEach方法是一种流行的数组迭代工具。它为每个数组元素执行一次提供的函数。但是&#xff0c;与传统的for 和 while循环不同&#xff0c;forEa…

深度学习-梯度下降算法-NLP(五)

梯度下降算法 深度学习中梯度下降算法简介找极小值问题数学上求最小值梯度梯度下降算法 找极小值问题在深度学习流程中深度学习整体流程图求解损失函数的目标权重的更新 深度学习中梯度下降算法简介 找极小值问题 引子&#xff1a; 我们训练一个人工智能模型&#xff0c;简单…

珍藏多年的计算机内核结构大全笔记,掌握计算机工作原理真不难

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

C++·栈和队列

栈和队列是什么看这里&#xff1a; 数据结构栈和队列-CSDN博客文章浏览阅读948次&#xff0c;点赞25次&#xff0c;收藏26次。本节讲解了栈和队列的内容&#xff0c;其核心就是栈的特点是后进先出&#xff0c;队列的特点是先进先出。并用C语言实现了栈和队列的结构以及它们的各…