Transformer中的位置编码

news2025/1/18 8:44:06

在Transformer模型中,位置编码是一种特殊的编码方式,用于向模型提供关于输入序列中单词位置的信息。由于Transformer模型没有循环结构,无法像循环神经网络那样从输入序列中推断单词的位置顺序,因此需要引入位置编码来帮助模型理解单词在序列中的位置信息。

自注意机制(Self-Attention Mechanism)

Transformer 架构由于其自注意力机制 (Self-Attention Mechanism) 的特性,对序列中的元素没有固有的顺序感知。这意味着,如果不加以处理,Transformer 无法区分序列中的元素的相对位置。为了解决这个问题,位置编码被引入。

自注意力机制

在上图中的嵌入表示x1,x2中如果没有位置信息,打乱输入的词序后,会导致Attention之后得到的分数没有变化。对于任何一门语言,单词在句子中的位置以及排列顺序是非常重要的,它们不仅是一个句子的语法结构的组成部分,更是表达语义的重要概念。一个单词在句子的位置或排列顺序不同,可能整个句子的意思就发生了偏差。

采用Attention结构,这些词序信息就会丢失,模型就没有办法知道每个词在句子中的相对和绝对的位置信息。因此,有必要把词序信号加到词向量上帮助模型学习这些信息,位置编码(Positional Encoding)就是用来解决这种问题的方法。

位置编码 (Positional Encoding)

位置编码通常是通过在输入的词嵌入向量中添加特定的位置信息来实现的。这样一来,每个单词的词嵌入向量不仅包含单词的语义信息,还包含了关于单词在序列中位置的信息。位置编码的引入有助于Transformer模型更好地处理序列数据,特别是在处理长序列时,位置编码可以帮助模型区分不同位置的单词,从而提高模型的性能和泛化能力。

Transformer中的自注意力机制无法捕捉位置信息,这是因为其计算过程具有置换不变性(permutation invariant),导致打乱输入序列的顺序对输出结果不会产生任何影响。

自注意力中加入位置编码

位置编码(Position Encoding)通过把位置信息引入输入序列中,以打破模型的全对称性。上面式子中,为简化问题,考虑在m,n位置处加上不同位置编码,将位置信息加入到输入序列中,相当于引入索引的嵌入,通过微调自注意力运算过程使其能分辨不同token之间的相对位置。

从上面式中可以看出,在Transformer模型的自注意机制中,位置编码通常有两种形式:绝对位置编码和相对位置编码。

  1. 绝对位置编码:绝对位置编码是通过在词嵌入向量中添加固定的位置信息来表示单词在序列中的绝对位置。通常采用固定的公式或矩阵来计算每个位置的位置编码。

  2. 相对位置编码:相对位置编码是根据单词之间的相对位置关系来计算位置编码。这种编码方式更加灵活,能够捕捉到不同单词之间的相对位置信息,有助于模型更好地理解序列中单词之间的关系。

绝对位置编码

形式上来看,绝对位置编码是相对简单的一种方案,但即便如此,也不妨碍各路研究人员的奇思妙想,也有不少的变种。一般来说,绝对位置编码会加到输入中:在输入的第k个向量xk中加入位置向量pk,输入变为xk+pk,其中pk只依赖于位置编号k。

1. 可学习

绝对位置编码的一个最朴素方案是不特意去设计什么,而是直接将位置编码当作可训练参数,比如最大长度为512,编码维度为768,那么就初始化一个512×768的矩阵作为位置向量,让它随着训练过程更新。

对于这种训练式的绝对位置编码,一般的认为它的缺点是没有外推性,即如果预训练最大长度为512的话,那么最多就只能处理长度为512的句子,再长就处理不了了。当然,也可以将超过512的位置向量随机初始化,然后继续微调。

2. 三角式

三角函数式位置编码,一般也称为Sinusoidal位置编码,

其中pk,2i,pk,2i+1,分别是位置k的编码向量的第2i,2i+1个分量,d是位置向量的维度。三角函数式位置编码的特点是有显式的生成规律,因此可以期望于它有一定的外推性,由于sin(α+β)=sinαcosβ+cosαsinβ,cos(α+β)=cosαcosβ−sinαsinβ,这表明位置α+β的向量可以表示成位置α和位置β的向量组合。

相对位置编码

旋转位置编码(ROPE)

作用在每个transformer层的自注意力块,在计算完Q/K后,旋转位置编码作用在Q/K上,再计算注意力分数;其通过绝对位置编码的方式实现了相对位置编码,有良好的外推性。目前的大模型LLaMA,GLM, PaLM均用了相对ROPE位置编码。

旋转位置编码(ROPE) 

ALiBi(Attention with Linear Biases)

在计算完注意力分数之后,直接为注意力分数矩阵上加上一个预设好的偏置矩阵,计算简洁;ALiBi的偏置矩阵根据Q和K的相对距离来惩罚注意力分数,相对距离越大,惩罚项越大。相当于两个token的距离越远,相互贡献就越小。ALiBi有良好的外推性。目前的大模型BLOOM用了ALiBi位置编码。

PS:欢迎扫码头像关注公众号^_^.

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

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

相关文章

window环境下使用k8s部署.net core项目

前提:已经部署镜像到Docker 在项目发布目录下新建.yaml文件,内容如下(以下仅举例出两种方式内容,可按需自由配置) --方式一(创建deployment 、服务、指定命名空间) # ------------------- 注意层级结构,…

多线程系列(十五) -常用并发工具类详解

一、摘要 在前几篇文章中,我们讲到了线程、线程池、BlockingQueue 等核心组件,其实 JDK 给开发者还提供了比synchronized更加高级的线程同步组件,比如 CountDownLatch、CyclicBarrier、Semaphore、Exchanger 等并发工具类。 下面我们一起来…

嵌入式工程师必备知识点

嵌入式工程师必备知识点 一、基础知识与理论二、编程语言与工具三、嵌入式操作系统四、通信协议与接口技术五、设计与测试 嵌入式工程师作为现代电子工程领域的核心角色,其职责涵盖了从硬件设计、软件开发到系统测试等多个方面。为了胜任这一职位,嵌入式…

一次一对一服务引起的沉思和笑话

前情提要 客户需求: 分析页面代码和接口请求协议和参数需求,将人工下载视频怎么获得最终的视频链接,这一逻辑清晰的展示并讲解清除。我询问了是否需要成品爬虫,他说代码他自己能搞定。 我给的价格选择: 第一种、首…

mac 下redis

安装 Redis brew install redis 安装完成后,我们可以使用以下命令来确认 Redis 是否正确安装: redis-cli ping 启动 Redis redis-server 后台启动 Redis,可以使用以下命令: redis-server --daemonize yes 指定配置文件启动…

Sentinel 面试题及答案整理,最新面试题

Sentinel的流量控制规则有哪些,各自的作用是什么? Sentinel的流量控制规则主要包括以下几种: 1、QPS(每秒查询量)限流: 限制资源每秒的请求次数,适用于控制高频访问。 2、线程数限流&#xf…

C--8--解决因配置文件中字符编码不一致问题导致的错误

1、介绍: ASCII 1个字节1个文字 ANSI 2个字节1个文字 UNICODE 3或4个甚至更多字节1个文字 ASCII、ANSI、UNICODE这三种压缩后,变为UTF-8、UTF-16、UTF-32。 ASCII、ANSI、UNICODE 是字符编码,即给全世界每…

1.2_3 TCP/IP参考模型

文章目录 1.2_3 TCP/IP参考模型(一)OSI参考模型与TCP/IP参考模型(二)5层参考模型(三)5层参考模型的数据封装与解封装 1.2_3 TCP/IP参考模型 (一)OSI参考模型与TCP/IP参考模型 TCP/I…

open-spider开源爬虫工具:抖音数据采集

在当今信息爆炸的时代,网络爬虫作为一种自动化的数据收集工具,其重要性不言而喻。它能够帮助我们从互联网上高效地提取和处理数据,为数据分析、市场研究、内容监控等领域提供支持。抖音作为一个全球性的短视频平台,拥有海量的用户…

哈希专题 - leetcode 1. 两数之和 - 简单难度

leetcode 1. 两数之和 leetcode 1. 两数之和 简单难度 哈希1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 leetcode 1. 两数之和 简单难度 哈希 1. 题目详情 给定一个整数数组 nums 和一个整数目标值 target…

万马合一之js解答

输入m和n 两个数,m和n表示一个mn 的棋盘。输入棋盘内的数据。棋盘中存在数字和".“两种字符,如果是数字表示Q该位置是一匹马,如果是”."表示该位置为空的,棋盘内的数字表示为该马能走的最大步数。例如棋盘内某个位置一个…

ICCV 2023 超分辨率(Super-Resolution)论文汇总

文章目录 图像超分辨率(Image Super-Resolution) 1、经典图像超分辨率(Classical image SR) 2、基于参考的图像超分辨率(Reference-Based image SR) 3、高效&轻量化图像超分辨率(Efficient/…

Unity引擎关于APP后台下载支持的实现问题

1)Unity引擎关于APP后台下载支持的实现问题 2)Prefab对DLL中脚本的引用丢失 3)Unity DOTS资源加载问题 4)UnitySendMessage和_MultiplyMatrixArrayWithBase4x4_NEON调用导致崩溃 这是第376篇UWA技术知识分享的推送,精选…

Unity背景模糊图片高斯模糊高性能的实现方案

环境: unity2021.3.x 效果: 模糊前: 模糊后: 模糊前: 模糊后: 实现核心思路(shader): SubShader {CGINCLUDE#include "UnityCG.cginc"sampler2D _MainTex; // 主纹理half4 _MainTe…

CubeMX入门教程(1)——环境搭建

目录 1、为什么要用CubeMX? 2、如何安装CubeMX? 3、HAL固件库的安装 1、为什么要用CubeMX? STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C …

BUUCTF---[极客大挑战 2019]BabySQL1

1.这道题和之前做的几道题是相似的,这道题考的知识点更多。难度也比之前的大一些 2.尝试万能密码 or 1#发现过滤了or,使用1和1,发现他对单引号也进行了过滤。于是我尝试进行双写绕过,发现可以通过了。 3.由之前的做题经验可知,这道题会涉及到…

wps没保存关闭了怎么恢复数据?恢复文件教程

Microsoft Word是我们不可或缺的工具。很多小伙伴都遇到在WPS中编辑文件时,它可能会突然闪退,或者忘记及时保存文件就直接关闭了,导致我们辛苦编辑的文档丢失。面对这种情况我们该如何应对,尽量减小损失呢?接下来让我为…

Java - Spring MVC 实现跨域资源 CORS 请求

据我所知道的是有三种方式:Tomcat 配置、拦截器设置响应头和使用 Spring MVC 4.2。 设置 Tomcat 这种方式就是引用别人封装好的两个 jar 包,配置一下web.xml就行了。我也并不推荐,这里放两个我在网上找到的配置相关文章,感兴趣可…

遥感分析时什么情况下需要做大气校正?

经常会遇到这样的问题:什么情况需要做大气校正产生?这个问题取决于传感器和应用目标,总的来说,如果要做光谱分析,那么大气校正是必须要做的。本文对于在什么情况下选择什么样的大气校正方法,给出了一些依据…

(3)(3.3) MAVLink高延迟协议

文章目录 前言 1 配置 2 说明 3 消息说明 前言 ArduPilot 支持 MAVLink 高延迟协议(MAVLink High Latency)。该协议专为卫星或 LoRA 等低带宽或高成本链路而设计。 在此协议中,每 5s 只发送一次 HIGH_LATENCY2 MAVLink 信息。对 MAVLink 命令或请求&#xff08…