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

为什么 θ 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.rhkb.cn/news/221339.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习中的张量维度

1 深度学习中的张量 在深度学习框架中&#xff0c;Tensor&#xff08;张量&#xff09;是一种数据结构&#xff0c;用于存储和操作多维数组。张量可以被视为一种扩展的矩阵&#xff0c;它可以具有任意数量的维度。 在深度学习中&#xff0c;张量通常被用来表示神经网络的输入…

Java 栈和队列的交互实现

文章目录 队列和栈的区别一.用队列模拟实现栈1.1入栈1.2出栈1.3返回栈顶元素1.4判断栈是否为空 二.用栈模拟实现队列2.1 入队2.2出队2.3peek2.4判断队列是否为空 三.完整代码3.1 队列模拟实现栈3.2栈模拟实现队列 队列和栈的区别 栈和队列都是常用的数据结构&#xff0c;它们的…

解读远程工作设计师之未来与发展

引言 在数字化的浪潮下&#xff0c;“远程工作”已经成为现代职场的一个重要趋势。对于设计师来说&#xff0c;这不仅是一种工作方式的转变&#xff0c;更是职业发展的新机遇。在这篇文章中&#xff0c;我将从以下9个方面&#xff0c;深入探讨远程工作设计师的机会、市场和职位…

2023ChatGPT浪潮,2024开源大语言模型会成王者?

《2023ChatGPT浪潮&#xff0c;2024开源大语言模型会成王者&#xff1f;》 一、2023年的回顾 1.1、背景 我们正迈向2023年的终点&#xff0c;回首这一年&#xff0c;技术行业的发展如同车轮滚滚。尽管互联网行业在最近几天基本上处于冬天&#xff0c;但在这一年间我们仍然经…

如何开发一个prompt?prompt的使用有哪些原则?

提示词使用原则 如何开发一个跟自己预期结果接近的提示词&#xff1f;有哪些基本原则&#xff1f; 提示词迭代开发 写提示词时&#xff0c;第一次尝试是值得的&#xff0c;反复完善提示&#xff0c;获得越来越接近你想要的结果 原文来源于B站吴恩达提示工程教学公开课。…

TensorFlow(2):Windows安装TensorFlow

1 安装python环境 这一步请自行安装&#xff0c;这边不做介绍。 2 安装anaconda 下载路径&#xff1a;Index of /&#xff0c;用户自行选择自己的需要的版本。 3 环境配置 3.1 anaconda环境配置 找到设置&#xff0c;点击系统->系统信息->高级系统设置->环境变量…

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

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

Kafka-Kafka核心参数详解

Kafka的HighLevel API使用是非常简单的&#xff0c;所以梳理模型时也要尽量简单化&#xff0c;主线清晰&#xff0c;细节慢慢扩展。 Kafka提供了两套客户端API&#xff0c;HighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细节&#xff0c;使用起来比较简单&…

静态路由及动态路由

文章目录 静态路由及动态路由一、静态路由基础1. 静态路由配置2. 负载分担3. 路由备份4. 缺省路由5. 静态路由实操 二、RIP 动态路由协议1. RIP 协议概述2. RIP 协议版本对比2.1 有类路由及无类路由 3. RIP 路由协议原理4. RIP 计时器5. 度量值6. 收敛7. 示例 静态路由及动态路…

【K8s】#1使用kuboard-spray安装K8s集群

文章目录 搭建k8s集群1.推荐配置1.1.服务器配置1.2.软件版本 2.使用Kuboard-Spray安装k8s集群2.1.配置要求2.2.操作系统兼容性2.3.安装 Kuboard-Spray2.4.加载离线资源包2.5.规划并安装集群2.6.安装成功2.7.访问集群 3.涉及的命令3.1.linux 4.问题汇总Q1&#xff1a;启动离线集…

【Android Studio】各个版本下载地址

下载地址&#xff1a; https://developer.android.com/studio/archive?hlzh-cn

无人机在融合通信系统中的应用

无人驾驶飞机简称“无人机”&#xff0c;是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞行器&#xff0c;现今无人机在航拍、农业、快递运输、测绘、新闻报道多个领域中都有深度的应用。 在通信行业中&#xff0c;无人机广泛应用于交通&#xff0c;救援&#xff0c;消…

Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

文章目录 Dismissible 简介使用场景常用属性基本用法举例注意事项 Dismissible 简介 Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时&#xff0c;提供一种简便的实现方式。 使…

聚类算法及可视化方法的实践与探索

簇内平方和表示数据点到其簇内质心的距离的平方和&#xff0c;公式如下&#xff1a; 其中&#xff0c; 是k簇数&#xff0c; ni是第 i 个簇的样本数&#xff0c; xij是第 i个簇中的第 j 个样本。 import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sk…

探秘 AJAX:让网页变得更智能的异步技术(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

go语言函数二、init函数定义与作用

go语言init函数定义与作用 在go语言中&#xff0c;每一个源文件都可以包含一个init函数&#xff0c;这个函数会在main函数执行前&#xff0c;被go运行框架调用&#xff0c;注意是在main函数执行前。 package main import ("fmt" )func init() {fmt.Println("i…

快速部署SSL证书

以下是一个简单而快速的指南&#xff0c;教你如何在你的网站上部署SSL证书&#xff0c;为你的用户提供更安全的在线体验。 步骤1&#xff1a;选择SSL证书 首先&#xff0c;你需要选择适合你网站需求的SSL证书。有多种类型的证书可供选择&#xff0c;包括单域、多域名和通配符…

AWS 知识二:AWS同一个VPC下的ubuntu实例通过ldapsearch命令查询目录用户信息

前言&#xff1a; 前提&#xff1a;需要完成我的AWS 知识一创建一个成功运行的目录。 主要两个重要&#xff1a;1.本地windows如何通过SSH的方式连接到Ubuntu实例 2.ldapsearch命令的构成 一 &#xff0c;启动一个新的Ubuntu实例 1.创建一个ubuntu实例 具体创建实例步骤我就不…

测试工具Jmeter:设置中文界面

首先我们打开Jmeter所在的文件&#xff0c;进入bin目录&#xff0c;打开Jmeter.properties&#xff1a; 打开后找到languageen&#xff1a; 改为zh_CN: 保存关闭&#xff0c;然后再打开Jmeter&#xff1a; 英文并不会显得高级&#xff0c;能做到高效的性能测试才是高级的。

E : DS查找—二叉树平衡因子

Description 二叉树用数组存储&#xff0c;将二叉树的结点数据依次自上而下,自左至右存储到数组中&#xff0c;一般二叉树与完全二叉树对比&#xff0c;比完全二叉树缺少的结点在数组中用0来表示。 计算二叉树每个结点的平衡因子&#xff0c;并按后序遍历的顺序输出结点的平衡…