Transformer位置表示(Position Encoding)

news2024/11/25 15:24:52

为什么需要位置表示

对比CNN、RNN和Self-Attention:

CNN处理相邻窗口的内容;RNN天然是序列操作,考虑了位置先后关系;Self-Attention的计算时是无序的,所以需要位置表示来知道Token之间的位置信息。

绝对位置表示

典型如:Bert/Roberta/GPT2的位置表示,将位置如 0~512 像词一样做embedding,需要训练position向量矩阵

不同模型训练出来的位置表示之间的相似性,对角线是1

优势:简单

劣势:无法处理超出长度的句子,必须截断

相对位置表示

位置n的旋转位置编码(RoPE),本质上就是数字n的β进制编码!- 苏剑林

为什么需要进制编码?我们先看进制编码的格式:

我们再回到RoPE的公式:pos是位置,i是表示向量的维度

令 \beta=10000^2,那么RoPE就是下面这种表示,也就是完整的进制编码表示:

我们再看下位置表示的可视化,发现当表示向量的维度上升,曲线更加稠密;

为什么要用周期进制表示:

  1. 进制在表示相对位置时和绝对位置表示是一样的效果,如「我们知道10的相邻数据是9和11」

  2. 周期进制表示方式,更加的稠密;就像10/16进制一样,进制越高,表示信息越大

  3. 周期进制可以做推理:假设我们已经学习过0~200的表示,那么对于200~299,直接就知道他们的位置和关系;甚至于200~999也是可以直接知道含义的

如何扩展位置表示

直接外推

如果我们学习过position 在0~200之间的表示,那么对于200~299的长度,可以直接扩展,甚至 200~999的位置表示,也可以直接外推。但是如果是1000~以上的范围,那么效果就不好了,因为千位的维度没有训练过。

优点是:在预留的维度上,是可以直接外推,不需要训练的;

缺点:超出范围的,性能下降极大

线性内插

如果我们学习过position 在0~200之间的表示,我们需要表示更长,一种是我们每隔0.5就做一个表示,这样表示能力扩展到 0~400了,这样还是保持学习范围之内,但是问题是表示更加拥挤,当处理范围进一步增大时,相邻差异则更小,这样位置表示的作用就减弱了。

优点是:原则上可以无限内插下去

缺点:差异小了,PE的效果降低

Neural Tangent Kernel—NTK-aware

内插 + 外插叠加:在低位的时候,基本和原来一致,不影响原始表示,这个就是外插;在高位的时候,往里面内插,虽然信息降低,但是也可以表示

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

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

相关文章

数据结构中图的概念以及遍历算法的实现

在数据结构中,图(Graph)是由节点(Vertex)和连接节点的边(Edge)组成的一种非线性数据结构。图可以用来表示各种实际问题中的关系和连接,如社交网络、道路网络、电路等。 图由两个主要…

LiveGBS流媒体平台GB/T28181常见问题-基础配置流媒体服务配置中本地|内网IP外网IP(可选)外网IP收流如何配置

LiveGBS常见问题基础配置流媒体服务配置中本地|内网IP外网IP外网IP收流如何配置? 1、流媒体服务配置2、播放提示none rtp data receive3、多网卡服务器4、收流端口配置5、端口区间可以如何配置6、搭建GB28181视频直播平台 1、流媒体服务配置 LiveGBS中基础配置-》流…

【小呆的力学笔记】弹塑性力学的初步认知五:初始屈服条件(1)

文章目录 3. 初始屈服条件3.1 两个假设以及屈服条件基本形式3.2 π \pi π平面、Lode参数3.3 屈服曲线的一般特征 3. 初始屈服条件 3.1 两个假设以及屈服条件基本形式 在简单拉伸时,材料的屈服很明确,即 σ > σ s (1) \sigma\gt\sigma_s\tag{1} …

nvm安装配置环境

前言 对于前端开发人员来说,多个项目可能用的不同的node版本,如何方便快速的转换版本,nvm版本管理工具的出现,解决这个问题。 实战 1. 搜索nvm版本,我用的1.1.2,下载后直接安装。 2.在d盘建立nvm空文件…

深入理解MySQL索引底层数据结构

一、索引的本质 索引是帮助MySQL高效获取数据的排好序的数据结构; 二、索引为什么使用BTree 1、索引为何不用二叉树结构 当索引字段递增时,如主键索引,二叉树会退化成一个链表,如果是数据有几百上千万,那链表就会很…

【Spring】三级缓存

目录标题 触发所有未加载的实例a - 开始getBean( doGetBean) - 获取单例beangetSingleton() - 获取单例beancreateBean(doCreateBean) - 创建beancreateBeanInstance - 创建并返回beanaddSingletonFactory -放三级缓存populateBea…

循环测试之旅 —— 深度解析Pytest插件 pytest-repeat!

在软件开发中,测试的重要性不言而喻。而为了提高测试的鲁棒性和可靠性,Pytest插件 pytest-repeat 应运而生。这个插件可以帮助你轻松实现测试用例的循环运行,以更全面地评估代码的稳定性。本文将深入介绍 pytest-repeat 插件的基本用法和实际…

vtkPolyData 生成轮廓线

PolyData 的轮廓用法实战 #include <vtkActor.h> #include <vtkCutter.h> #include <vtkMath.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkPlane.h> #include <vtkPolyDataMapper.h> #include <vtkPropert…

探索设计模式的魅力:迭代器模式让你轻松驾驭复杂数据集合

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;并且坚持默默的做事。 文章目录 一、&#x1f4a1; 引言二、原理与结构 &#x1f4da;&#x1f465; 迭代器模式的关…

Matlab|基于支持向量机的电力短期负荷预测【最小二乘、标准粒子群、改进粒子群】

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序主要是对电力短期负荷进行预测&#xff0c;采用三种方法&#xff0c;分别是最小二乘支持向量机&#xff08;LSSVM&#xff09;、标准粒子群算法支持向量机和改进粒子群算法支持向量机三种方法对负荷进行…

Eclipse - Colors and Fonts

Eclipse - Colors and Fonts References 编码最好使用等宽字体&#xff0c;Ubuntu 下自带的 Ubuntu Mono 可以使用。更换字体时看到名字里面带有 Mono 的基本都是等宽字体。 Window -> Preferences -> General -> Appearance -> Colors and Fonts -> C/C ->…

Java——IO流

目录 一、IO流的概述 1、IO流的分类 1.1、纯文本文件 2、小结 二、IO流的体系结构 三、字节流 1、FileOutputStream&#xff08;字节输出流&#xff09; 2、FileOutputStream写出数据的细节 3、FileOutputStream写数据的3种方式 3.1、一次写一个字节数据 3.2、一次写…

【网络安全 | 网络协议】一文讲清HTTP协议

HTTP概念简述 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;协议&#xff0c;又称超文本传输协议&#xff0c;用于传输文本、图像、音频、视频以及其他多媒体文件。它是Web应用程序通信的基础&#xff0c;通过HTTP协议&#xff0c;Web浏览器可以向Web服务器发起请…

通俗易懂的L0范数和L1范数及其Python实现

定义 L0 范数&#xff08;L0-Norm&#xff09; L0 范数并不是真正意义上的一个范数&#xff0c;因为它不满足范数的三角不等式性质&#xff0c;但它在数学优化和信号处理等领域有着实际的应用。L0 范数指的是向量中非零元素的个数。它通常用来度量向量的稀疏性。数学上表示为…

合理利用pandas来简化大量请求数据组装工作

工作场景 本次我们开发了一个新功能&#xff0c;为了验证它是否合理&#xff0c;我们需要从线上导出一批真实的用户数据来进行模拟请求&#xff0c;以此来验证功能的完整性。 例如一个很简单的功能&#xff0c;我们是一个对学生成绩进行数据分析的系统&#xff0c;各学校会将…

prometheus+mysql_exporter监控mysql

prometheus+mysql_exporter监控mysql 一.安装mysql 1.下载:wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2.安装客户端:yum -y install mysql57-community-release-el7-10.noarch.rpm 3.安装服务端:yum -y install mysql-community-se…

mysql 2-1

添加数据 方式二 更新数据 删除数据 小结 计算列 数据类型 可选属性 适用场景 如何选择 浮点类型 存在精度问题 定点数介绍 BIT类型 日期与时间类型 YEAR类型 DATA类型 TIME类型 DATATIME TIMESTAMP 文本字符串类型 适用场景 TEXT类型

JavaWeb-JDBC-练习

一、环境准备 1、数据库表 tb_brand 2、实体类 Brand 最后注意使用get、set方法和toString 二、实现功能 1、查询所有数据 2、添加数据 3、根据id修改 4、根据id删除

【类与对象 -2】学习类的6个默认成员函数中的构造函数与析构函数

目录 1.类的6个默认成员函数 2.构造函数 2.1概念 2.2特性 3.析构函数 3.1析构函数的概念 3.2特性 1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;…

红队学习笔记Day6 --->干货分享

今天看到这样的一个东西&#xff0c;好好好&#xff0c;有点恐怖&#x1f613;&#x1f613;&#x1f631;&#x1f631;&#x1f631;&#x1f631; 我就想网安是不是也有这种东西&#xff1f; 我来试试 icmp&#xff0c;RDP&#xff0c;arp&#xff0c;dhcp&#xff0c;nat&a…