Transformer的位置编码笔记(positional encoding)

news/2024/7/19 8:53:29 标签: transformer, 位置编码, 正余弦函数

一、为什么Transformer需要对输入进行位置编码

因为Transformer的输入并没有内涵位置信息,同样的词在不同位置,或者同一个序列以不同顺序输入,对应的词间都会得到相同的注意力权重和输出,但是在NLP领域,词的顺序会极大地影响句子的含义。

句子1:小明喜欢上了小红

句子2:小红喜欢上了小明

对于这两个句子,分词、embedding处理后得到的词向量是相同的,都是“小红”、“小明”、“喜欢”、“上”、“了” 对应的词向量,它们会以下图的方式计算self-attention

图一

在输入Transformer模型时,只是词向量的顺序不同,但是在计算self-attention时(以“小红”为例,用小红的q,分别与其他token的k相乘,计算相关性a,然后在呈上相应的v的到向量)

图二

所以,哪怕是顺序不同,每个token对应的词向量b 依旧不变,这个问题RNN就不需要考虑,因为在RNN模型中,token是一个接一个进入其中的,它们进入的顺序已经隐含了位置信息。

二、Transformer的Positional Encoding是如何进行确定位置信息的呢?

首先说一下Transformer中位置编码是使用正余弦函数进行编码的,公式如下:

看到这个,肯定会有小伙伴提出疑问了,为什么是sin()、cos()函数呢?为什么里面是10000呢?小小脑袋,大大问号❓❓❓ 别急别急,咱们一个一个来。

1、为什么是sin()、cos()函数呢?

正如图二所示,在求self-attention时,先求qi与kj相乘,求贡献力度aj,然后再用贡献力度aj 乘 vj,之后在相加,得出第i个输入对应的encoder输出。(艾玛,太抽象了,建议看图二)

可以看到,q * k展开之后的第二项,可以理解为绝对位置,就是token(i)和token(j)分别对应的位置P(i)、P(j),,,最后一项,既包括pi也包括pj,和两个位置都有关。

这能说明式子展开之后,已经具备了绝对位置信息,还没有具备相对位置信息,但是有一项表达式和两个位置都有关(最后一项),那我们能不能将最后一项通过人为设定P(x)的表达式,让其隐含相对信息呢?(为什么要希望同时具备绝对位置、相对位置?因为这样更能表示两个变量之间的具体位置呀)

答案是肯定的,这就是位置编码的由来,也就是上面那个公式,具体推导如下:

那么如何才能实现简化之后的式子呢??? 主要是这个g(x)函数怎么构造呢,当时的研究人员就绞尽脑汁的想啊想啊,突然灵光一现,想到了正余弦函数

这样使用正余弦函数,恰好能满足g(x)的需求,能完成我们的设想。这就是正余弦函数的由来。👏👏👏

那对于多维的编码来说呢,由于内积满足叠加性,更高维度的编码可以看成两两一组的结合:

  1. 为什么里面是呢?

那么通过一个相似公式,我们就把问题转换为积分的渐进估计问题了,把这积分的图像画出来,观察一下:

随着(m-n)的增大,也就是相对距离的增大,积分结果逐渐下降。

可以看到,这里做了很多实验,验证那个数值比较好一些,但是像10000对应的橙色的曲线一定是最好的吗?好像并不是,,,如果让我们选的话,好像1000对应的 蓝线 更好一些。 随意这个就是研究人员选取的,没必要太过于纠结为什么是10000.


http://www.niftyadmin.cn/n/108409.html

相关文章

AST之path常用属性和方法总结笔记

文章目录1. path常用属性总结1.1 path.node1.2 path.scope1.3 path.parentPath1.4 path.parent1.5 path.container1.6 path.type1.7 path.key2. path常用方法总结2.1 path.toString2.2 path.replaceWith2.3 path.replaceWithMultiple2.4 path.remove2.5 path.insertBefore2.6 p…

SpringCloud之Nacos学习使用

文章目录Nacos注册中心核心功能配置启动集群搭建Nacos是SpringCloudAilibaba提供的开源组件,有了Nacos我们就可以代替Eureka和SpringCloudConfig了,我们只需要在服务器启动该组件就行 Nacos Nacos是一个易于构建云原生得动态服务发现、服务配置和服务管…

对象扩展、函数的扩展、Symbol、Iterator 迭代器、Set结构、Map 数据结构——ES6+

目录 一、对象扩展 二、函数的扩展 三、Symbol 四、Iterator 迭代器 五、Set结构 六、Map 数据结构 一、对象扩展 1. 对象简写 对于对象属性,属性名与属性值对应的变量相同时,可简写为属性名 对于对象方法,将 :function…

北极星指标体系

北极星指标体系 每个产品都有很多指标,每个指标都反映了对应业务的经营情况。但是在实际业务经营中,却要求我们在不同的产品阶段寻找到合适的指标,让这个指标可以代表当前产品阶段的方向和目标,让这个指标不仅对业务经营团队,而且对产品的用户、对产品的价值都能有很好的…

Samba文件共享服务器的配置

一、Samba服务: 1)SMB(Server Message Block)协议实现文件共享,也称为CIFS(Common Internet File System) 2)是Windows和类Unix系统之间的共享文件的一种协议。NFS是Linux和Linux之…

Zynq UltraScale系列使用MIPI CSI-2 RX Subsystem 解码MIPI视频PD输出 提供2套工程源码和技术支持

目录1、前言2、设计思路和架构3、vivado工程详解4、上板调试验证5、福利:工程代码的获取1、前言 本设计采用OV5640摄像头MIPI模式作为输入,分辨率为1280x72060Hz,MIPI解码方案采用Xilinx官方提供的MIPI CSI-2 RX Subsystem IP解码MIPI视频&a…

【RocketMQ】RocketMQ 5.0版本任意时刻延迟消息的实现原理浅析

文章目录意外发现设计方案时间轮定时消息存储具体实现流程图流程步骤意外发现 无意间从官方的最新的客户端代码中看到下面的Example: 感兴趣的可以看看这个介绍:https://rocketmq.apache.org/docs/featureBehavior/02delaymessage 生产者:…

创建自助服务知识库的指南

在SaaS领域,自助文档是你可以在客户登录你的网站时为他们提供的最灵活的帮助方式,简单来说,一个自助知识库是一个可以帮助许多客户的文档,拥有出色的自助服务知识库,放在官网或者醒目的地方,借助自助服务知…