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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
公式 (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,一经查实,立即删除!

相关文章

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):当该文件的【内容数据】…

十二、数组

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…

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…

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

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

[python]Markdown图片引用格式批处理桌面应用程序

需求 使用python编写一个exe&#xff0c;实现批量修改图片引用&#xff0c;将修改后的文件生成为 文件名_blog.md。有一个编辑框&#xff0c;允许接收拖动过来md文件&#xff0c;拖入文件时获取文件路径&#xff0c;有一个编辑框编辑修改后的文件的输出路径&#xff0c;用户拖入…

Springboot实战:AI大模型+亮数据代理助力短视频时代

目录 前言1.如何入门亮数据1.1、注册登录1.2、注册账号1.3、登录1.4、购买静态住宅代理1.5、展示购买的代理 2. 使用Springboot、AI大模型构建系统2.1 使用Springboot、AI大模型构建爬虫2.2、在Springboot项目添加工具 3、编写代码&#xff0c;爬取视频素材3.1、代码里使用代理…

Redis核心问题总结(一)

1、为什么要使用Redis做缓存 缓存的好处 使用缓存的目的就是提升读写性能。而实际业务场景下&#xff0c;更多的是为了提升读性能&#xff0c;带来更好的性 能&#xff0c;带来更高的并发量。Redis 的读写性能比 Mysql 好的多&#xff0c;我们就可以把 Mysql 中的热点数据缓 …

提升结构安全性:应变计在现代建筑中的应用

在现代建筑领域&#xff0c;随着工程技术的不断进步&#xff0c;对结构安全性的要求也日益提高。作为一种关键的工程仪器仪表&#xff0c;应变计在提升结构安全性方面发挥着不可替代的作用。本文将深入探讨应变计在现代建筑中的应用&#xff0c;以及它如何助力工程师们实时监测…

权力之望怎么注册账号创建角色 权利之网角色账号注册教程

权力之望是一款全新的大型MMORPG游戏&#xff0c;拥有9把独特武器和56种职业组合&#xff0c;并搭配了超炫酷的战斗画面&#xff0c;全程采用低俯视角游戏&#xff0c;让玩家能体验到更强的操作感和爽快感。这款游戏主打高养成自由度玩家可以自由更换武器进行战斗&#xff0c;还…

前端面试题30(闭包和作用域链的关系)

闭包和作用域链在JavaScript中是紧密相关的两个概念&#xff0c;理解它们之间的关系对于深入掌握JavaScript的执行机制至关重要。 作用域链 作用域链是一个链接列表&#xff0c;它包含了当前执行上下文的所有父级执行上下文的变量对象。每当函数被调用时&#xff0c;JavaScri…