位置编码的具体计算方式(公式解释)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
公式 (10.6.2) 描述了位置编码的具体计算方式,这种位置编码基于正弦和余弦函数,用于在自注意力机制中引入位置信息。下面我们详细解释公式和代码。

公式 (10.6.2)

公式 (10.6.2) 的目的是为输入序列中的每个词元添加一个位置编码,以保留序列的位置信息:

[
\begin{split}
\begin{aligned}
p_{i, 2j} &= \sin\left(\frac{i}{10000^{2j/d}}\right), \
p_{i, 2j+1} &= \cos\left(\frac{i}{10000^{2j/d}}\right).
\end{aligned}
\end{split}
]

这里:

  • ( p_{i, 2j} ) 是位置编码矩阵 (\mathbf{P}) 的第 (i) 行、第 (2j) 列的元素。
  • ( p_{i, 2j+1} ) 是位置编码矩阵 (\mathbf{P}) 的第 (i) 行、第 (2j+1) 列的元素。
  • ( i ) 表示词元在序列中的位置。
  • ( j ) 表示编码维度的索引。
  • ( d ) 是词元向量的维度。

这些位置编码使用不同频率的正弦和余弦函数,较小的频率用于较低的维度,较大的频率用于较高的维度。

在这里插入图片描述
在这里插入图片描述
让我们详细解释一下为什么在公式 (10.6.2) 中使用 ( i ) 和 ( 2j ),为什么是 ( 10000^{2j/d} ),以及为什么选择正弦和余弦函数。

1. 为什么是 ( i ) 和 ( 2j )

  • ( i ): 表示词元在序列中的位置。
  • ( 2j ) 和 ( 2j+1 ): 表示编码维度的索引。位置编码矩阵的每个词元的每个维度都有两个值,一个是正弦函数值,另一个是余弦函数值。

在位置编码矩阵中,维度 ( 2j ) 存储正弦函数值,维度 ( 2j+1 ) 存储余弦函数值。这种交替存储方式允许位置编码同时捕捉到不同频率的周期信息。

2. 为什么是 ( 10000^{2j/d} )

  • ( 10000^{2j/d} ): 这是一个缩放因子,确保不同维度的频率不同。具体来说,随着 ( j ) 的增加,频率会指数级地增加。

    • 当 ( j ) 较小时, ( \frac{2j}{d} ) 也较小,这意味着 ( 10000^{2j/d} ) 较小,从而使 ( \frac{i}{10000^{2j/d}} ) 较大,结果是低频率。
    • 当 ( j ) 较大时, ( \frac{2j}{d} ) 也较大,这意味着 ( 10000^{2j/d} ) 较大,从而使 ( \frac{i}{10000^{2j/d}} ) 较小,结果是高频率。

这种设计保证了不同维度上位置编码的频率不同,从而捕捉到多种粒度的位置信息。

3. 为什么选择正弦和余弦函数

选择正弦和余弦函数的主要原因是它们的周期性和相位特性。这些函数可以捕捉到序列中的相对位置关系:

  • 正弦函数和余弦函数的周期性: 位置编码利用了正弦和余弦函数的周期性,能够捕捉到词元在序列中的相对位置。因为这些函数是周期性的,模型可以通过这些位置编码了解词元之间的相对距离。

  • 正弦和余弦的互补性: 正弦函数和余弦函数是相位差90度的互补函数,组合在一起可以更全面地描述位置信息。

总结

结合以上几点,公式 (10.6.2) 的位置编码设计利用了正弦和余弦函数的周期性特性,通过不同的频率和相位捕捉序列中词元的相对位置,从而增强了模型对序列顺序信息的理解。

这就是为什么公式 (10.6.2) 被设计成这个样子:通过 ( i ) 来表示位置,通过 ( 10000^{2j/d} ) 来控制频率,通过正弦和余弦函数来捕捉不同频率的位置信息。

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

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

相关文章

PROSOFT/普罗索夫特 PROSOFT MVI56-PDPMV1模块 控制器 处理器

PROSOFT MVI56-PDPMV1是一款功能丰富的工业自动化通信模块,其参数、规格、尺寸、重量、系列、特征和作用如下: 参数与规格: 功能:作为PROSOFT MVI56-PDPMV1网络扫描仪,在PROSOFT MVI56-PDPMV1设备和处理器数据之间传输…

MOE技术简要记录

MOE GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding 模型设计: 特点: (1) 专家容量 expert capacity 强制规定了每一个expert所负责处理的token数量有一个最大值,这个最大值就叫专家容量;(…

RK3588 linux RGA初探

概述 RGA (Raster Graphic Acceleration Unit)是一个独立的2D硬件加速器,可用于加速点/线绘制,执行图像缩放、旋转、bitBlt、alpha混合等常见的2D图形操作。 本文基于以下版本编写: commit fb5f019ea0191ec1c34f49ac8be447ac8921aadd (HEAD -> main,…

服务器数据恢复—raid5阵列硬盘出现大量坏道的数据恢复案例

服务器存储数据恢复环境&故障: 一台DELL EqualLogic PS 4000存储中有一组由12块磁盘组建的raid5阵列,存储空间划分3个同等大小的卷,采用的VMFS文件系统。 两块硬盘指示灯亮黄色,raid5阵列崩溃,存储变得不可用。 服…

C语言学习记录Day2

for循环 for(表达式1;表达式2;表达式3) 循环语句; 注:表达式1:初始化部分.表达式2:条件判断部分 表达式3:调整部分 不可再for循环体内修改循环变量,防止f…

厂拉拉获清科文创天使轮投资

最新信息:源头工厂测品平台厂拉拉APP已正式获得北京清科文创千万级的天使轮投资。 本轮资金将主要用于测品师、品鉴官队伍的引流,及APP3.0数字供应链和用户购物行为算法技术、算力模型的建设。 厂拉拉APP的营运主体为广州智邦远见科技有限公司&#xf…

Java基础概念

1.注释和关键字 (1)注释 什么是注释?注释就是对代码进行解释说明的文字 注释的分类?单行注释,多行注释,文档注释 注释的使用细节? 注释的内容不会参与编译和运行,仅仅是对代码的…

【Linux】touch

我们在介绍ls这个命令时,提到每个文件在Linux下面都会记录许多的时间参数,其实是有三个主要的变动时间,那么三个时间的意义是什么? 修改时间(modification time,mtime):当该文件的【内容数据】…

qt udp 协议链接举例

在Qt框架中,使用UDP协议进行通信主要依赖于QUdpSocket类。以下是一个基于Qt的UDP通信示例,包括UDP套接字的创建、绑定端口、发送和接收数据报的步骤。 1. 创建UDP套接字 首先,需要创建一个QUdpSocket对象。这通常在你的类的构造函数中完成&…

【c++刷题笔记-贪心】day28: 134. 加油站 、 135. 分发糖果 、860.柠檬水找零 、 406.根据身高重建队列

134. 加油站 - 力扣(LeetCode) 思路:算出当前的消耗的油量总数,如果花费大于油量表示无法到达。统计总花费最大的油耗总数,如果油耗总数大于或者等于0,表示全程没有负花销,直接从0起步。小于零…

十二、数组

1. 一维数组的创建和初始化 数组是一组相同类型元素的集合。 变长数组是不能初始化的。 数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。 例如上图 char ch3[ ]"abc";里面方的就是 a b c \0 char ch3[ …

EDA 2023 年世界国家suicide rate排名

文章目录 前言:关于数据集列 导入模块导入数据数据预处理探索性数据分析按性别划分的自杀率 [箱线图]相关矩阵热图自杀率最高的 15 个国家变化百分比最高的 15 个国家/地区2023 年世界地图上自杀率的国家 结尾: 前言: 随着社会的不断发展和变迁,人们对于各种社会问…

揭秘:源代码防泄密的终极秘籍

在当今信息科技高度发达的时代,源代码作为企业最核心的资产之一,其安全性不言而喻。源代码的泄露可能导致企业技术机密被竞争对手获取,进而威胁到企业的市场竞争力和长远发展。因此,源代码防泄密成为了企业信息安全工作的重中之重…

前端JS特效第24波:jQuery轻量级响应式幻灯片插件EasyFader

jQuery轻量级响应式幻灯片插件EasyFader&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"utf-8"> <title>jQuery轻量级响应式幻灯片插件E…

C-10 凸包

凸包 数学定义 平面的一个子集S被称为是凸的&#xff0c;当且仅当对于任意两点A&#xff0c;B属于S&#xff0c;线段PS都完全属于S过于基础就不详细介绍了 凸包的计算 github上找到了别人的代码&#xff0c;用4种方式实现了凸包的计算&#xff0c;把他放在这里链接地址htt…

可灵ai出web端了

网址 https://klingai.kuaishou.com/ 可灵ai出web端了 最近最火的莫过于老照片动态视频了&#xff0c;现在可灵出web端了&#xff0c;更利好开发者了。

redis运维:sentinel模式如何查看所有从节点

1. 连接到sentinel redis-cli -h sentinel_host -p sentinel_port如&#xff1a; redis-cli -h {域名} -p 200182. 发现Redis主服务器 连接到哨兵后&#xff0c;我们可以使用SENTINEL get-master-addr-by-name命令来获取当前的Redis主服务器的地址。 SENTINEL get-master-a…

原生JS常用方法总结

文章目录 根据 cookie 的 key 获取 value根据 xpath 获取页面元素ajax请求 根据 cookie 的 key 获取 value // 获取cookie function getCookie(key){var arrstr document.cookie.split("; ");for (var i 0; i < arrstr.length; i){var temp arrstr[i].split(&…

手动安装Ruby 1.9.3并升级RubyGems

手动安装Ruby 1.9.3并升级RubyGems ###Ruby 1.9.3 p125安装 wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz \ && tar -xzvf ruby-1.9.3-p125.tar.gz \ && cd ruby-1.9.3-p125 \ && ./configure --with-openssl-dir/usr/lib/op…

Python骨架肌体运动学数学模型

&#x1f3af;要点 &#x1f3af;运动学矢量计算 | &#x1f3af;跳远的运动学计算 | &#x1f3af;关节肢体运动最小加加速度模型 | &#x1f3af;膝关节和踝关节角度二维运动学计算 | &#x1f3af;上下肢体关节连接运动链数学模型 | &#x1f3af;刚体连接点速度加速度计算…