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

news2025/1/17 15:59:12

一、为什么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.coloradmin.cn/o/378729.html

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

相关文章

P20 PyTorch 反向传播算法

前言:反向传播是深度学习的基础核心,如果掌握了这个,其它的模型会很容易理解。这里面结合前面的多层感知机,深入了解一下权重数是如何更新的目录:1: 多层感知机节点间的权重系数更新2: 反向传播的基本思路3…

基于VS Code的插件开发(基础篇)

一、基础介绍 VSCode 采用了 Electron,在语言上,VSCode 使用了自家的 TypeScript 语言开发。Electron是基于 Chromium 和 Node.js,使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用,它兼容 Mac、Windows 和 Linux,…

认识DOM和架构

DOM 代表文档对象模型,是 HTML 和 XML 文档的接口(API)。当浏览器第一次读取(解析)HTML文档时,它会创建一个大对象,一个基于 HTM L文档的非常大的对象,这就是DOM。它是一个从 HTML 文档中建模的树状结构。DOM 用于交互和修改DOM结…

SpreadJS 16.0 中文版在线电子表设计预览EXCEL-Crack

SpreadJS 纯前端表格控件 - V16.0 新特性--内容摘自互联网 新文件结构是 SpreadJS 近几个版本中最为重要的架构级更新。这种新文件结构可以大大提高导入大型 Excel 文件的性能,同时在保存时创建更小、优化更好的文件。 在 V15.0 及更早的版本中,Spread…

android事件分发机制源码分析

没什么用的前言责任链设计模式流程图源码分析 没什么用的前言 事件分发机制是面试中一道必问的题目,而我的应对方式则是,在网络上找一些博客看看,然后做一些笔记,最后在面试时将我自己记住的内容说出来。这种方式本身没有太大的…

Editor工具开发实用篇:EditorGUI/EditorGUILayout的区别和EditorGUILayout的方法介绍

目录 一:EditorGUI和EditorGUILayout区别 二:EditorGUILayout 1.EditorGUILayout.BeginFadeGroup(float value); 2.EditorGUILayout.BeginHorizontal EditorGUILayout.BeginVertical 3.EditorGUILayout.BeginScrollView 4.EditorGUILayout.BeginT…

携手中国联通丨美格智能成为中国联通物联网产业联盟苏州分联盟副理事长单位

2月24日,联通数科物联网2023年巡展活动首场——中国联通物联网生态合作伙伴大会暨中国联通物联网产业联盟苏州分联盟成立仪式在苏州成功举办。本次活动由联通数字科技有限公司、中国联通物联网产业联盟联合主办,江苏省物联网服务协会指导,中国…

MySQL运维篇之日志

01、日志 1.1、错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的&…

微服务之Nacos注册与配置

🏠个人主页:阿杰的博客 💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨 目前状况🎉:24届毕业生,奋斗在找实习的路上🌟 &#x1…

短视频美颜sdk人脸编辑技术详解、美颜sdk代码分析

短视频美颜sdk中人脸编辑技术可以将人像风格进行转变,小编认为这也是未来的美颜sdk的一个重要发展方向,下文小编将为大家讲解一下短视频美颜sdk中人脸编辑的关键点。 一、人脸编辑的细分关键点 1、年龄 通过更改人脸的年龄属性,可用于模仿人…

「TCG 规范解读」TCG 软件栈 TSS (下)

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alliance,TCPA)所开发的规范。现在的规范都不是最终稿,都…

【Redis】Redis线程IO模型与基于文件的网络通信模型(Redis专栏启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

Unity 渲染顺序

Unity中的渲染顺序自上而下大致分为三层渲染优先级 Camera depth > Sorting Layer > Order in Layer > RenderQueueCamera depth:越小越优先(大的显示在小的前面)如图:尽管Sphere距离摄像机较远,但由于Camera_Sphere dep…

Linux 常用 API 函数

文章目录1. 系统调用与库函数1.1 什么是系统调用1.2 系统调用的实现1.3 系统调用和库函数的区别2. 虚拟内存空间3. 错误处理函数4. C 库中 IO 函数工作流程5. 文件描述符6. 常用文件 IO 函数6.1 open 函数6.2 close 函数6.3 write 函数6.4 read 函数6.5 lseek 函数7. 文件操作相…

算法笔记(十六)—— 有序表(红黑树,AVL树,Size-balance树,跳表),一文搞定!

有序表所有的操作都是O(logN)级别(红黑树,AVL树,Size-balance树,跳表)。 红黑树,AVL树,Size-balance树都属于平衡搜索二叉树(BST)。 搜索二叉书(不保证平衡性…

OSPF -- (开放式最短路径优先协议)(公共协议)

OSPF -- (开放式最短路径优先协议)(公共协议) 1、属性:无类别链路状态IGP协议 无类别:更新携带精确掩码 链路状态:共享拓扑(共享LSA)本地计算路由IGP: 基于…

EasyExcel

文章目录🚏 EasyExcel🚀 一、初识EasyExcel🚬 1、Apache POI🚭 1.1 学习使用成本较高🚭 1.2 POI的内存消耗较大🚭 1.3 特点🚬 2、EasyExcel🚭 2.1 重写了POI对07版Excel的解析&#…

Nginx学习整理

Nginx学习第一章 Nginx概述1.1、Nginx概述1.2、Nginx官网1.3、Nginx用处第二章 Nginx单实例安装2.1、环境说明2.2、安装依赖2.3、Nginx下载2.4、Nginx解压2.5、Nginx安装2.6、Nginx命令2.7、开放防火墙2.8、启动后效果第三章 Nginx正向代理、反向代理3.1、概述3.2、反向代理配置…

大数据|Hadoop系统

目录 📚Hadoop介绍 📚Hadoop优点 📚Hadoop的体系结构 🐰HDFS的体系结构 🐰MapReduce的体系结构 🐰HDFS和MapReduce的协同作用 📚Hadoop与分布式开发 🐰MapReduce计算模型 &a…

【让面试官吃惊的回答:HTTP中GET和POST请求的区别你知道吗?】

一.知识回顾 之前我们一起学习了HTTP1.0、HTTP1.1、HTTP2.0协议之前的区别、以及URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程、HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别、HTTP协…