浅析RoPE旋转位置编码的远程衰减特性

news2024/9/24 9:26:07

为什么 θ i \theta_i θi的取值会造成远程衰减性

旋转位置编码的出发点为:通过绝对位置编码的方式实现相对位置编码。

对词向量 q \boldsymbol{q} q添加绝对位置信息 m m m,希望找到一种函数 f f f,使得:
< f ( q , m ) , f ( k , n ) > = g ( q , k , m − n ) <f(\boldsymbol{q}, m), f(\boldsymbol{k}, n)> = g(\boldsymbol{q}, \boldsymbol{k}, m - n) <f(q,m),f(k,n)>=g(q,k,mn)
假设词向量是二维的,借用复数来进行求解(具体求解过程参考:https://spaces.ac.cn/archives/8265),最终得到一种可行解:
f ( q , m ) = q e i m θ = ( c o s   m θ − s i n   m θ s i n   m θ c o s   m θ ) ( q 0 q 1 ) \begin{align} f(\boldsymbol{q}, m) &= \boldsymbol{q} e^{im \theta} \\ &= \left(\begin{matrix} cos\ m\theta& -sin\ m\theta\\ sin\ m\theta& cos\ m\theta \end{matrix} \right) \left(\begin{array}{c} q_0\\ q_1 \end{array} \right) \end{align} f(q,m)=qeimθ=(cos mθsin mθsin mθcos mθ)(q0q1)
扩展到多维:

f ( q , m ) = R m q f(\boldsymbol{q}, m) = \boldsymbol{R}_m \boldsymbol{q} f(q,m)=Rmq
R m = ( c o s   m θ 0 − s i n   m θ 0 0 0 ⋯ 0 0 s i n   m θ 0 c o s   m θ 0 0 0 ⋯ 0 0 0 0 c o s   m θ 1 − s i n   m θ 1 ⋯ 0 0 0 0 s i n   m θ 1 c o s   m θ 1 ⋯ 0 0 ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ 0 0 0 0 ⋯ c o s   m θ d / 2 − 1 − s i n   m θ d / 2 − 1 0 0 0 0 ⋯ s i n   m θ d / 2 − 1 c o s   m θ d / 2 − 1 ) \boldsymbol{R}_m = \left(\begin{matrix} cos\ m\theta_0& -sin\ m\theta_0& 0& 0& \cdots& 0& 0\\ sin\ m\theta_0& cos\ m\theta_0& 0& 0& \cdots& 0& 0\\ 0& 0& cos\ m\theta_1& -sin\ m\theta_1& \cdots& 0& 0\\ 0& 0& sin\ m\theta_1& cos\ m\theta_1& \cdots& 0& 0\\ \vdots& \vdots& \vdots& \vdots& \ddots& \vdots& \vdots\\ 0& 0& 0& 0& \cdots& cos\ m\theta_{d/2 - 1}& -sin\ m\theta_{d/2-1}\\ 0& 0& 0& 0& \cdots& sin\ m\theta_{d/2 - 1}& cos\ m\theta_{d/2-1}\\ \end{matrix}\right) Rm= cos mθ0sin mθ00000sin mθ0cos mθ0000000cos mθ1sin mθ10000sin mθ1cos mθ1000000cos mθd/21sin mθd/210000sin mθd/21cos mθd/21
相当于左乘一个旋转矩阵,或者说高维向量,每两维一组,分别旋转一个角度,且不改变模长。

显然, ( R m q ) T ( R n k ) = q T R m T R n k = q T R n − m k (\boldsymbol{R}_m \boldsymbol{q})^{T} (\boldsymbol{R}_n \boldsymbol{k})= \boldsymbol{q}^T \boldsymbol{R}_m^T \boldsymbol{R}_n \boldsymbol{k} = \boldsymbol{q}^T \boldsymbol{R}_{n-m} \boldsymbol{k} (Rmq)T(Rnk)=qTRmTRnk=qTRnmk,这样Attention就包含相对位置信息了。


下面分析为什么 θ i \theta_i θi的取值会造成远程衰减性

远程衰减性指的是,对于两个词向量,如果两者相对距离较近,那么它们的注意力分数应该偏高,反之应该偏低。

假设 q \boldsymbol{q} q k \boldsymbol{k} k均为ones向量,则 ( R m q ) T ( R n k ) = q T R n − m k = 2 ∑ i = 0 d / 2 − 1 c o s   ( n − m ) θ i (\boldsymbol{R}_m \boldsymbol{q})^{T} (\boldsymbol{R}_n \boldsymbol{k})= \boldsymbol{q}^T \boldsymbol{R}_{n-m} \boldsymbol{k} = 2\sum_{i=0}^{d/2-1} cos\ (n-m)\theta_i (Rmq)T(Rnk)=qTRnmk=2i=0d/21cos (nm)θi,设相对距离 n − m n-m nm x x x,则相对距离为 x x x的向量之间注意力得分:
g ( x ) = 2 ∑ i = 0 d / 2 − 1 c o s   x θ i g(x) = 2\sum_{i=0}^{d/2-1} cos\ x\theta_i g(x)=2i=0d/21cos xθi
如果任意 θ i = 0 \theta_i=0 θi=0,则 g ( x ) = d g(x)=d g(x)=d,无论相对距离多大,注意力得分都相等

如果任意 θ i = 1 \theta_i=1 θi=1,则 g ( x ) = d   c o s   x g(x)=d\ cos\ x g(x)=d cos x,随着相对距离增大,注意力得分呈周期性变化,但不会震荡衰减:


而作者在 θ i \theta_i θi的选择上,沿用了Sinusoidal位置编码的方案,即 θ i = 1000 0 − 2 i / d \theta_i=10000^{-2i/d} θi=100002i/d,它会带来一定的远程衰减性

每个 θ i \theta_i θi c o s   x θ i cos\ x\theta_i cos xθi的周期大小 T i T_i Ti等于 2 π θ i = 2 π 1000 0 − 2 i / d = 2 π ∗ 1 0 8 i / d \frac{2\pi}{\theta_i} = \frac{2\pi}{10000^{-2i/d}} = 2\pi*10^{8i/d} θi2π=100002i/d2π=2π108i/d,所以 i i i越大, T i T_i Ti越大,最小周期为 T 0 = 2 π T_0 = 2\pi T0=2π,最大周期为 T d / 2 − 1 = 2 π ∗ 1 0 ( 4 − 8 d ) T_{d/2-1} = 2\pi*10^{(4-\frac{8}{d})} Td/21=2π10(4d8)

如果对于所有的 x x x x < 1 4 T d / 2 − 1 = π 2 ∗ 1 0 ( 4 − 8 d ) x<\frac{1}{4}T_{d/2-1}=\frac{\pi}{2}*10^{(4-\frac{8}{d})} x<41Td/21=2π10(4d8),也就是说, c o s   x θ d / 2 − 1 cos\ x\theta_{d/2-1} cos xθd/21处于单调递减区间(下方的蓝色区间)

由于前面的 c o s x θ i cos x\theta_i cosxθi呈周期变化,而周期变化的函数 + 单调递减的函数 = 震荡递减的函数。因此,注意力得分 g ( x ) g(x) g(x)随着相对距离 x x x的增大而震荡减小。


比如在LLaMA中, d = 4096 d=4096 d=4096 1 4 T d / 2 − 1 \frac{1}{4}T_{d/2-1} 41Td/21近似于 1 0 4 10^4 104,由于实际应用中,最大序列长度一般不会大于 1 0 4 10^4 104,所以相对距离 x < 1 4 T d / 2 − 1 x<\frac{1}{4}T_{d/2-1} x<41Td/21一般是成立的,当然,也可以增大 θ i = 1000 0 − 2 i / d \theta_i=10000^{-2i/d} θi=100002i/d中的10000,这样 T d / 2 − 1 T_{d/2-1} Td/21会变得更大。


d = 4 d=4 d=4时,最大周期 T d / 2 − 1 T_{d/2-1} Td/21是628,下面的示例 x x x会超过 1 4 T d / 2 − 1 \frac{1}{4}T_{d/2-1} 41Td/21,因此 g ( x ) g(x) g(x)呈周期性,并不是震荡减小

d = 256 d=256 d=256时,下面的示例 x x x不超过 1 4 T d / 2 − 1 = 14617 \frac{1}{4}T_{d/2-1}=14617 41Td/21=14617,因此震荡减小。

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

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

相关文章

技术资讯:Firefox浏览器即将被淘汰?

大家好&#xff0c;我是大澈&#xff01; 本文约1200字&#xff0c;整篇阅读大约需要2分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…

OpenHarmony开发—Ubuntu环境搭建

搭建Ubuntu环境 在嵌入式开发中&#xff0c;很多开发者习惯于使用Windows进行代码的编辑&#xff0c;比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段&#xff0c;大部分的开发板源码还不支持在Windows环境下进行编译&#xff0c;如Hi3861、Hi3516…

高高。。。。

重点&#xff1a;存储系统/分布式系统 得到数据&#xff1a; 数据模型计算&#xff08;简单系统&#xff09;实现一个操作系统CPU&#xff08;成本高&#xff09;仿真实验 文章类型&#xff1a; 国际会议 10-15slices期刊论文 做OS研究为其他方面提供支持 一 Advanced OS …

【VScode和Leecode的爱恨情仇】command ‘leetcode.signin‘ not found

文章目录 一、关于command ‘leetcode.signin‘ not found的问题二、解决方案第一&#xff0c;没有下载Nodejs&#xff1b;第二&#xff0c;有没有在VScode中配置Nodejs第三&#xff0c;力扣的默认在VScode请求地址中请求头错误首先搞定配置其次搞定登入登入方法一&#xff1a;…

C++命名空间(超详细)using namespace std

文章目录 前言一、为什么要有命名空间二、命名空间的定义1.正常定义2.嵌套定义3.多文件 三、命名空间的使用1.命名空间名称作用域限定符2.使用using将命名空间某个成员引入3.使用using namespace将整个命名空间引入 四、c标准库总结 前言 在本文章中&#xff0c;我们将要详细介…

【CANoe】CAPL中测试控制函数和故障注入函数的使用

文章目录 1、介绍2、示例脚本【可结合总线报文的变化进行理解】 1、介绍 2、示例脚本【可结合总线报文的变化进行理解】 testcase TC01() {TestCaseTitle("TC01","TC01");//示例1&#xff1a;禁止/使能发送BMS_100ms这帧报文testDisableMsg(BMS_100ms);te…

llvm后端之DAG设计

llvm后端之DAG设计 引言1 核心类设计2 类型系统2.1 MVT::SimpleValueType2.2 MVT2.3 EVT 3 节点类型 引言 llvm后端将中端的IR转为有向无环图&#xff0c;即DAG。如下图&#xff1a; 图中黑色箭头为数据依赖&#xff1b;蓝色线和红色线为控制依赖。蓝色表示指令序列化时两个节…

windows远程桌面怎么开启?

文章目录 如下三种开启方式&#xff0c;任选一即可方式1.在系统属性中开启远程桌面方式2.通过系统设置开启远程桌面方式3.注册表编辑器开启远程桌面使用远程桌面 如下三种开启方式&#xff0c;任选一即可 配合 组网工具或者内网穿透 超级爽 局域网其他pc如何访问宿主机虚拟机IP…

C语言—每日选择题—Day57

指针相关博客 打响指针的第一枪&#xff1a;指针家族-CSDN博客 深入理解&#xff1a;指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 下面程序段&#xff08;&#xff09; char *str[] {"ABC", "DEF", "GHI"}; puts(str[1]); A&#xff1a;A…

设计模式——外观模式(Facade Pattern)

概述 外观模式又称为门面模式&#xff0c;它通过引入一个外观角色来简化客户端与子系统之间的交互&#xff0c;为复杂的子系统调用提供一个统一的入口&#xff0c;降低子系统与客户端的耦合度&#xff0c;且客户端调用非常方便。它是一种对象结构型模式。外观模式结构图如下所示…

DriveWorks Solo捕获参数(三)

捕获参数 - 木门和矩形窗 木质门 下一个组件是木门本身。除了尺寸之外&#xff0c;门还具有需要控制的功能。 让我们首先捕获尺寸。 通过单击“捕获资源管理器”中的标题来激活“捕获的模型”部分。 双击任务窗格树中的模型木门以在 SOLIDWORKS 中将其打开。捕获以下尺寸。…

Apache Kyuubi 讲解与实战操作

文章目录 一、概述二、Spark Kyuubi 架构三、Hadoop 基础环境安装1&#xff09;hadoop 下载部署包2&#xff09;创建网络3&#xff09;部署MySQL4&#xff09;部署 Hadoop Hive 四、Spark Kyuubi 安装1&#xff09;下载 Kyuubi2&#xff09;下载 Spark32&#xff09;配置 Kyuub…

final的详解

在Java中&#xff0c;final 关键字用于表示不可改变的实体&#xff0c;可以应用于变量、方法、类和指令重排序。它有不同的作用&#xff0c;具体取决于它被应用的上下文。 1.对于变量&#xff1a; 如果一个变量被声明为 final&#xff0c;则该变量的值在一旦被赋予后就不能再被…

excel该如何实现生成条形码/二维码?

如何在Excel中制作条形码/二维码&#xff1f; 1.首先&#xff0c;打开电脑上的Excel。进入后&#xff0c;在上方菜单栏中找到并点击“开发工具”。如果没有找到开发工具&#xff0c;就先点击“文件”&#xff0c;在弹出菜单中再点击“选项”。 2.打开Excel选项窗口后&#xff0…

循环栅栏:CyclicBarrier

CyclicBarrier可以理解为循环栅栏&#xff0c;栅栏就是一种障碍物&#xff0c; 比如通常在私人宅院的周围就可以围上一圈栅栏&#xff0c;阻止闲杂人等入内。 这里当然就是用来阻止线程继续执行&#xff0c;要求线程在栅栏外等待。 前面的Cyclic意为循环&#xff0c;也就是说这…

【轻量化篇】YOLOv8改进实战 | 更换主干网络 Backbone 之 RepGhostnet,重参数化实现硬件高效的Ghost模块

YOLOv8专栏导航:点击此处跳转 前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操…

cpp_04_类_对象_this指针_常对象_常(成员)函数

1 类 1.1 类的定义 类的作用是抽象事物&#xff08;抽取事物特征&#xff09;的规则。 类的外化表现是用户自定义的复合数据类型&#xff08;包括成员变量、成员函数&#xff09;&#xff1a; 成员变量用于表达事物的属性&#xff0c;成员函数用于表达事物的行为。 类的表现…

基于LSTM的情感分析

本文以情感分析为主题&#xff0c;介绍了其在自然语言处理中的重要性以及应用场景。传统的循环神经网络&#xff08;RNN&#xff09;在处理长序列时存在问题&#xff0c;而引入了记忆细胞、输入门、输出门和遗忘门的LSTM模型能够有效解决这一问题。数据集和预处理在机器学习和自…

内外联动——记建行江门鹤山支行营业部成功堵截诈骗

“谢谢&#xff0c;太谢谢你们了&#xff01;真没想到&#xff0c;现在骗子手段这么高了&#xff0c;冒充我孙儿太像了。要不是你们一直拦着我&#xff0c;差点就把养老钱汇出去了&#xff01;”近日&#xff0c;在建行江门鹤山支行营业部大厅里&#xff0c;一位老人家肖婆婆对…

鸿蒙Harmony4.0开发-ArkTS基础知识运用

概念 1.渲染控制语法&#xff1a; 条件渲染&#xff1a;使用if/else进行条件渲染。 Column() {if (this.count > 0) {Text(count is positive)} }循环渲染&#xff1a;开发框架提供循环渲染&#xff08;ForEach组件&#xff09;来迭代数组&#xff0c;并为每个数组项创建…