面经:什么是Transformer位置编码?

Transformer中的position encoding(位置编码一) 本文主要讲解Transformer 中的 position encoding,在当今CV的目标检测最前沿,都离不开position encoding,在DETR,VIT,MAE框架中应用广泛,下面谈谈我的理解。 一般position encoding 分为 正余弦编码和可学习编码。 正余弦编码 ......... 阅读详情

过去的几年里,Transformer大放异彩,在各个领域疯狂上分。它究竟是做什么,面试常考的Transformer位置编码暗藏什么玄机?本文一次性讲解清楚。

Transformer的结构如下:

图片

可能是NLP界出镜率最高的图

Transformer结构中,左边叫做编码端(Encoder),右边叫做解码端(Decoder)。大家不要小看这两个部分,其中左边的编码端最后演化成了最后鼎鼎大名的Bert,右边的解码端在最近变成了无人不知的GPT模型。从刚才的描述中,我们就可以知道Transformer这个模型对于NLP领域的影响有多大,并且这个影响力还在往其他领域扩展。

所以问题就来了,Transformer到底是干嘛的?

答:重点在Transformer的突破之一—Self-attention,可以让NLP模型做到像CV模型一样,并行输入。

在自然语言处理(NLP)领域中,模型的输入是一串文本,也就是Sequence。

图片

在以前的模型中,NLP的每个Sequence都是一个token一个token的输入到模型当中。比如有一句话是“我喜欢吃洋葱”,那么输入模型的顺序就是“我”,“喜”,“欢“,”吃“,”洋“,”葱”,一个字一个字的。

上面的输入方式其实就引入了一个问题。一个模型每次只吃了一个字,那么模型只能学习到前后两个字的信息,无法知道整句话讲了什么。为了解决这个问题,Transformer模型引用了Self-attention来解决这个问题。Self-attention的输入方式如下:

图片

我们可以看到,对于Self-attention结果而言,它可以一次性的将所有的字都当做输入。但是NLP的输入是有特点的,其特点是输入的文本要按照一定的顺序才可以。因为,文本的顺序是带有一部分语义关系的。比如下面两句话,不同的语序就有不同的语义。

句子1:我喜欢吃洋葱

句子2:洋葱喜欢吃我

所以,对于Transformer结构而言,为了更好的发挥并行输入的特点**,首先要解决的问题就是要让输入的内容具有一定的位置信息**。在原论文中,为了引入位置信息,加入了Position机制。

对于Transformer而言,Position机制看似简单,其实不容易理解。这篇文章通过梳理位置信息的引入方式,然后详细讲解在Transformer中是如何做的。最后将通过数学来证明为什么这种编码方式可以引入相对的位置信息。

位置编码分类

总的来说,位置编码分为两个类型:函数型和表格型

函数型:通过输入token位置信息,得到相应的位置编码

表格型:建立一个长度为L的词表,按词表的长度来分配位置id

以前的方法-表格型

方法一:使用[0,1]范围分配

这个方法的分配方式是,将0-1这个范围的,将第一个token分配0,最后一个token分配去1,其余的token按照文章的长度平均分配。具体形式如下:

我喜欢吃洋葱 【0 0.16 0.32…1】

我真的不喜欢吃洋葱【0 0.125 0.25…1】

问题:我们可以看到,如果句子长度不同,那么位置编码是不一样,所以无法表示句子之间有什么相似性。

方法二:1-n正整数范围分配

这个方法比较直观,就是按照输入的顺序,一次分配给token所在的索引位置。具体形式如下:

我喜欢吃洋葱 【1,2,3,4,5,6】

我真的不喜欢吃洋葱【1,2,3,4,5,6,7】

问题:往往句子越长,后面的值越大,数字越大说明这个位置占的权重也越大,这样的方式无法凸显每个位置的真实的权重。

总结

过去的方法总有这样或者那样的不好,所以Transformer对于位置信息的编码做了改进。

相对位置的关系-函数型

相对位置编码的特点,关注一个token与另一个token距离的相对位置(距离差几个token)。位置1和位置2的距离比位置3和位置10的距离更近,位置1和位置2与位置3和位置4都只相差1。

还是按照上面"我喜欢吃洋葱"中的“我”为例,看看相对位置关系是什么样子的:

图片

我们可以看到,使用相对位置的方法,我们可以清晰的知道单词之间的距离远近的关系。

Transformer的Position

类型

首先给一个定义:Transformer的位置信息是函数型的。在GPT-3论文中给出的公式如下:

图片

细节:

首先需要注意的是,上个公式给出的每一个Token的位置信息编码不是一个数字,而是一个不同频率分割出来,和文本一样维度的向量。向量如下:

图片

不同频率是通过 来表示的。

得到位置向量P之后,将和模型的embedding向量相加,得到进入Transformer模型的最终表示。

图片

关于每个元素的说明:

① 关于 :

图片

是频率

② 关于

这里的 就是每个token的位置,比如说是位置1,位置2,以及位置n

为什么可以表示相对距离?

上文说过,这样的位置信息表示方法可以表示不同距离token的相对关系。这里我们通过数学来证明。

简单复习

回顾下中学的三角函数正余弦公式:

图片

开始证明

我们知道某一个token的位置是 ,如果某一个token表示为 ,那就表明这个位置距上一个token为 。

如果这时我们需要看看一个位置 和 这两个字符的关系。按照位置编码的的公式,我们可以计算的位置编码,其结果如下:

图片

我们可以看看上面公式中,有一部分是似曾相识的:

图片

根据上面的公式我们可以看出,似曾相识的部分带入 的公式中,带入之后的结果如下:

图片

我们可以知道,距离K是一个常数,所有上面公式中和的计算值也是常数,可以表示为:

图片

这样,就可以将写成一个矩阵的乘法。

图片

可以从上面的矩阵乘法角度看到,位置的编码与位置的编码是线性关系。

图片 那么问题来了,上面的操作也只可以看到线性关系,怎么可以更直白地知道每个token的距离关系?

为了解答上面的问题,我们将和相乘 (两个向量相乘),可以得到如下结果:

图片

我们发现相乘后的结果为一个余弦的加和。这里影响值的因素就是。如果两个token的距离越大,也就是K越大,根据余弦函数的性质可以知道,两个位置的相乘结果越小。这样的关系可以得到,如果两个token距离越远则乘积的结果越小。

其他

这样的方式虽说可以表示出相对的距离关系,但是也是有局限的。其中一个比较大的问题是:只能的到相对关系,无法得到方向关系。所谓的方向关系就是,对于两个token谁在谁的前面,或者谁在谁的后面是无法判断的。数学表示如下:

图片

Reference

1.https://kazemnejad.com/blog/transformer_architecture_positional_encoding/

2.https://zhuanlan.zhihu.com/p/121126531

3.https://timodenk.com/blog/linear-relationships-in-the-transformers-positional-encoding/
​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

Transformer面试十问 Transformer分为encoder和decoder两个部分。 Encode包含self-attention和前馈神经网络,用于提取特征; Decoder在自注意力和前馈神经网络中间多了一个cross-attention,用于和encoder的输出做交互。 阅读详情

相关推荐

Transformer架构:位置编码

2017年,Google的Vaswani 等人提出了一种新颖的纯注意力序列到序列架构,闻名学术界与工业界的 Transformer 架构横空出世。它的可并行化训练能力和优越的性能使其成为 NLP(以及最近的 CV)研究人员的热门选择。本文将重点讨论Transformer架构一个不可或缺的部分——位置编码(Positional Encoding)。 Transformer架构 位置编码是什么?它为什么这么重要? 在自然语言中,单词的位置与顺序定义了语法,也影响着语义。无法捕获的单词顺序会导致我们很难理解一句

Jayson13的博客 1万+

关于Transformer,面试官们都怎么问?

作者|Adherer 编辑|NewBeeNLP面试锦囊之知识整理系列,持续更新中已发表:关于ELMo,面试官们都怎么问写在前面前些时间,赶完论文,开始对 Transformer、...

fengdu78的博客 1万+

【人工智能之大模型】Transformer是否需要位置编码?为什么

【人工智能之大模型】Transformer是否需要位置编码?为什么

985小水博的摸鱼日常 2879

白话Transformer&常见面试问题

Tranformer现如今无论是在CV还是NLP,甚至现在非常或的LLM领域都非常重要!该架构是谷歌在2017年《Attention is all you need》中提出的,下面将分析本人对各个模块的理解+算法面试中的常见问题。

qq_41915623的博客 2812

用AG9311芯片DIY一个多功能Type-C扩展坞:从原理图到PCB布局的保姆级指南

本文详细介绍了如何利用AG9311芯片DIY多功能Type-C扩展坞,涵盖从原理图设计到PCB布局的全过程。AG9311芯片作为高性价比的Type-C控制器,支持HDMI 2.0、USB 3.0、PD快充和千兆网口,适合硬件爱好者打造个性化扩展坞。文章还提供了调试技巧和进阶优化建议,帮助读者轻松完成项目。

weixin_42520909的博客 406

保姆级教程:在Windows/Linux双系统下搞定Microsemi Libero SoC v11.8安装与白银版License激活

本文提供了一份详细的Microsemi Libero SoC v11.8在Windows/Linux双系统下的安装与白银版License激活指南。涵盖环境准备、安装流程、License跨平台配置及常见问题排查,帮助开发者高效搭建FPGA开发环境。

weixin_30603633的博客 420

Transformer面试题总结101道

大家好,我是对白。今天给大家总结了101道Transformer的面试题,建议收藏:1,请阐述 Transformer 能够进行训练来表达和生成信息背后的数学假设,什么数学模型或者公式支持了 Transformer 模型的训练目标?请展示至少一个相关数学公式的具体推导过程。2,Transformer 中的可训练 Queries、Keys 和 Values 矩阵从哪儿来?Transformer 中为何会有 Queries、Keys 和 Values 矩阵,只设置 Values 矩阵本身来求 Atte

4709

2d游戏地图编辑器_[U3D]基于MarchingCubes实现的War3Editor 地表/悬崖编辑器

花了几天时间研究清楚Marching cubes后,发现这个方法是一个非常适用于地图编辑,网格编辑,procedural 生成的工具。最大的优点有着较好的边缘,表面处理。然后我用U3D写了一个悬崖/地表的编辑器。其中使用到了Marching Cubes的2.5D,2D两种降维的方法。talk is cheap,让我看效果!DemoEditor展示https://www.zhihu.com/vide...

weixin_42504649的博客 1178

面经常考:什么是 Transformer 位置编码?

过去的方法总有这样或者那样的不好,所以Transformer对于位置信息的编码做了改进。

2401_84033492的博客 1286

OpenVPN 新增 windows 客户端

虚拟私人网络(Virtual Private Network,简称VPN)是一种网络技术,它允许用户通过公共网络(如互联网)建立一个安全的连接通道。本文介绍如何添加 windows 客户端。

利昂的技术存档 3773

Ansys Lumerical 启动时出现 Error: Could not connect to Ansys license server specified at 1055@ 的另一种解决办法

昨天在关闭了中之后 就能正常打开 FDTD 了,结果今天想开启出现了同样的报错:我猜测昨天能启动的原因在于关闭之后要重启电脑,并且在重启之后我第一时间打开 lumerical 测试因此端口没有被占用,今天是在电脑启动之后一段时间才打开所以又遇到了端口占用的问题。

qq_51404184的博客 9559

一文搞懂Transformer的位置编码

本文介绍Transformer的位置编码,有图有表有推导,看不懂你打我!!!在Transformer出现以前,NLP任务大多是以RNN、LSTM为代表的循环处理方式,即一个token一个token的输入到模型当中。这种设计存在天生的缺陷。为了解决这些缺陷,Transformer把token的顺序信号加到词向量上帮助模型学习这些信息,这就位置编码(Positional Encoding)。接下来的内容不会涉及Self-Attention等牛逼的创新设计,只讨论位置编码,希望对大家有所帮助。

xian0710830114的专栏 2万+

第10集:AIOps 平台架构设计!画出面试官最想看的系统全景图

本文介绍了如何将AIOps平台的六大功能模块整合为四层架构设计,并生成专业系统全景图。文章首先指出面试中架构设计能力的重要性,强调一张清晰的架构图能直观展现全局观。随后指导读者检查项目结构,准备绘图环境。核心部分详细拆解了四层架构:数据采集层(Prometheus、ELK等)、AI分析层(巡检、告警、预测等)、决策执行层(工作流引擎、自愈Agent)和展示交互层(API、控制台)。通过Python代码自动生成模块依赖关系图,并提供了面试讲解技巧。全文旨在帮助开发者在面试中系统性地展示项目架构设计能力。

qq_2937655951的博客 93

Transformer 结构详解:位置编码 | Transformer Architecture: The Positional Encoding

😎使用正弦函数为模型添加位置信息什么是位置编码?为什么我们需要位置编码。提出的方法The intuition其他细节相对位置FAQ为什么位置编码是和词嵌入相加而不是将二者拼接起来?位置信息层层传递之后不会消失吗?为什么同时使用正弦和余弦?总结原文信息References 使用正弦函数为模型添加位置信息 Transformer是只基于自注意力机制的序列到序列架构。因为并行计算能力以及高性能。使得它在NLP领域中大受欢迎。

我是菜鸡 1万+

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

孤独的单刀 5476

AMBA-CHI协议详解(一)

CHI体系结构是一种可扩展、一致性的集线器接口和片上互联,可由多个组件使用。CHI体系结构允许根据性能、功耗和面积系统要求灵活地进行组件连接拓扑。硬件一致性使系统组件能够共享内存,而无需维护软件缓存以保持一致性。如果两个组件对同一存储器位置的写入可被所有组件以相同的顺序观察到,则存储器区域是一致的。

Crazzy_M的博客 1万+

【NLP高频面题 - Transformer篇】Transformer的位置编码是如何计算的?

重要性:★★★介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验介绍:该仓库主要分享了数百本 AI 领域电子书介绍:该仓库一网打尽互联网大厂NLP算法面经,算法求职必备神器介绍:该仓库汇总了 NLP 算法工程师高频面题Transformer 位置编码矩阵究竟是如何计算的呢?posidmodel​:对于给定的句子 I am good 为例,嵌入维度为4,计算位置编码。

一个程序猿的AI转型之路 1586

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Transformer 位置编码

词的位置和顺序是任何语言的重要组成部分。它们决定着语法,因此也决定了句子的实际语义。卷积神经网络(CNN)使用卷积核来捕获单词之间的相对位置信息,但其仅能捕获固定大小的局部上下文信息。循环神经网络(RNN)在处理序列信息上会有更好的效果,其依靠循环结构,将序列信息逐步传递,这其中就引入了单词的位置和顺序信息。但随着序列长度的增加,RNN 会慢慢忘记早前的信息,这就导致了长期依赖问题。除此之外,循环结构也使得 RNN 无法并行计算,这使得 RNN 的训练速度十分缓慢。放弃了循环结构,而采用了自注意力机制。

小嗷犬的博客 5494

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

什么?是Transformer位置编码

作者:陈安东,中央民族大学,Datawhale成员过去的几年里,Transformer大放异彩,在各个领域疯狂上分。它究竟是做什么,面试常考的Transformer位置编码暗藏什么玄机?本...

Kaiyuan_sjtu的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Transformer中的位置编码:绝对位置编码、相对位置编码与旋转位置编码

位置编码是Transformer模型中至关重要的一部分,不同的编码方式适用于不同的任务和数据类型。本文详细介绍了绝对位置编码、相对位置编码和旋转位置编码的原理、实现及应用,通过具体的案例分析展示了它们在实际任务中的表现。随着NLP领域的不断发展,新的位置编码方法可能会不断涌现,进一步提升Transformer模型在复杂任务中的表现。了解并掌握这些位置编码方法,将有助于研究人员和工程师更好地应用Transformer模型,处理各种序列数据,提升模型的性能和应用效果。

python123456_的博客 2万+

Transformer模型——位置编码

最原始的正余弦位置编码是一种绝对位置编码,但从其原理中的正余弦的和差化积公式来看,引入的其实也是相对位置编码。优势:实现简单,可预先计算好,不用参与训练,速度快;劣势:没有外推性,即如果预训练最大长度为512的话,那么最多就只能够处理长度为512 的句子,再长的就处理不了。当然,也可以将超过512的位置向量随机初始化,然后继续微调。大模型的外推性问题是指大模型在训练时和预测时的输入长度不一致,导致模型的泛化能力下降问题。

cancer_s的博客 1586

【Transformer系列】深入浅出理解Positional Encoding位置编码

【Transformer系列】深入浅出理解Positional Encoding位置编码

IT菜鸟 4万+
上一篇: 大模型RAG实战|向量数据库:Elasticsearch实现混合检索(附完整代码)
下一篇: Transformer中深度学习技术前提的动态展示
爱喝白开水a
博客等级 码龄3年 6793粉丝 763原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值