众所周知,self-attention是不考虑输入序列的位置的,要解决这个问题就得靠Position Encoding了,在attention is All You Need中就提出了这个方法,在每个输入中都加上了位置编码,如下图红框所示:

v2-07c7347767bf85cc35270db730cc7237_b.jpg

然后在论文3.5部分给出了以下PE公式,一个sin函数和一个cos函数,为每个position计算一个值:

v2-e52159bc18c3d961ea4e096e9f5122b2_b.jpg

说实话,看到这里时晴反正是没看懂,公式是初中生都看的懂,d_model表示输入的维度,pos表示单词的索引,i表示向量中索引,用sin,cos计算出对应值,但是为什么可以这样加到input上达到位置编码的效果呢?这时候我们看看bert就是非常直观的绝对位置动态编码,就直观很多,每个位置就是固定的embedding:

v2-0522116994c345de51ac9aa8dfd701bd_b.jpg

让我们看看原文作者是怎么解释的:

v2-3a39c61707855b18a49186a671c6993f_b.jpg

对于任何偏移量k,对pos+k的编码都可以是pos编码线形变换.先来看看可视化结果:

v2-3d86e1bcf49023efe3c69e751c5ed940_b.jpg

值得注意的是,每个向量第0和第1的位置,第0的位置对应于PE公式的sin式,第1的位置对应于PE公式的cos式子,但是他们的2i都是0,所以会有下式:

v2-7883d2b757f5c2650676c017952da3b8_b.jpg

所以每个输入向量的第0个和第1个位置的位置编码只和向量所处的pos有关.但是第3个位置后就受d_model影响了,一旦d_model变小,sin/cos函数就会有“拉伸”感,如下图所示:

v2-d6289bd6e5c6a152bf1456fd46894f37_b.jpg

对于长度为20的input,维度是50,我们可以画出一下PE值:

v2-b47332380ddca06473787581ab09253f_b.jpg

我们发现,越小的pos受影响的i就越少,i如果很大,PE值就会在0和1进行变换.从上图中,我们看到30~50列值基本没有变化.为啥上图这种编码就能学到位置信息?其实有种非常直观的解释方式,比如让你对数字进行编码,最直观的想法就是二进制编码,如下图所示:

v2-5f6bfe5c6c7e00e9911b9f05a0a8a63c_b.jpg

PE方法就可以简单的理解为上述版本的float编码.

PE的方法有很多,但是有很多实验表明,这些PE方法最终结果都很类似,本文讨论的PE方法优势在于可以支持更长的序列长度.

v2-19331dd2db92194859144e48bb05e711_b.jpg

Transformers中的位置编码到底是什么?相关推荐

  1. 【Transformer】Transformer 中的位置编码 -- ICLR 2021

    引言 Transformer是近年来非常流行的处理序列到序列问题的架构,其self-attention机制允许了长距离的词直接联系,可以使模型更容易学习序列的长距离依赖.由于其优良的可并行性以及可观的 ...

  2. 深入理解transformer中的位置编码

    文章目录 总览 问题1 问题2 问题3 问题4 问题5 问题6 总览 我们今天需要讲解transformer中的位置编码,这其实属于进阶内容.既然你会到这里,我默认你已经看过了transformer的 ...

  3. 举例理解transformer中的位置编码

    文章目录 1. transformer结构图 2. 位置编码的作用 3. 位置编码的计算 1. transformer结构图 ​ 在transformer的结构图中,由一个"Position ...

  4. ICCV2021 | Vision Transformer中相对位置编码的反思与改进

    前言  在计算机视觉中,相对位置编码的有效性还没有得到很好的研究,甚至仍然存在争议,本文分析了相对位置编码中的几个关键因素,提出了一种新的针对2D图像的相对位置编码方法,称为图像RPE(IRPE). ...

  5. TUPE :重新思考语言预训练中的位置编码

    作者 | sliderSun 知乎专栏 | 优选读.BERT巨人肩膀 整理 | NewBeeNLP 一篇来自微软关于Transformer中位置编码的文章,关于位置编码,我们之前也有讨论过,参见: T ...

  6. Transformer | DETR目标检测中的位置编码position_encoding代码详解

    本文主要描述的是DETR论文中的position_encoding,详细DETR论文解析可参考 论文篇 | 2020-Facebook-DETR :利用Transformers端到端的目标检测=> ...

  7. Transformer中的位置编码(PE,position)

    参考链接 [1]https://blog.csdn.net/qq_34771726/article/details/102918440?utm_medium=distribute.pc_relevan ...

  8. transformer中相对位置编码理解

    对于一副图像,位置信息占有非常重要的地位,ViT中用了绝对位置编码,Swin中用到了相对位置编码.看了Swin的源码,参考了https://blog.csdn.net/qq_37541097/arti ...

  9. 透彻分析Transformer中的位置编码(positional enconding)

    一.Transformer中为什么要使用位置编码positional encoding 在<Attention Is All You Need>这篇论文中首次提到了transformer模 ...

最新文章

  1. ViewGroup1——自定义布局
  2. 外媒评李开复的《AI·未来》:四大浪潮正在席卷全球
  3. 编译安装mysql5.6.16_CentOS 6.4下编译安装MySQL 5.6.16
  4. 《JavaScript 高级程序设计》笔记 第1~5章
  5. LeetCode 1894. 找到需要补充粉笔的学生编号
  6. PNG免扣(抠)素材,直接应用才是设计师友好的帮助图片
  7. 【Q】【POJ 2560】【POJ 2031】
  8. 自然语言处理之TF-IDF
  9. java中的命名空间_XPath与Java中的命名空间
  10. 既然有http 请求,为什么还要用rpc调用?
  11. 杂谈 之 闲来无事(三)
  12. Qualcomm笔记
  13. [AAM-GCN Neurocomputing2021] Attention adjacency matrix based graph convolutional networks for skele
  14. App预览制作,看我就够了
  15. 写论文自动生成参考文献的方法
  16. 阿里云Linux服务器新手入门(2核4G)
  17. 1000套微信小程序源码源代码带后台带运行截图预览图学习资料网盘下载
  18. 微信小程序开发之——用户登录-登录流程(1)
  19. # **从GIS到桌面出版 ——基于Adobe Illustrator+MAPublisher的空间数据库制图技术路线浅淡*
  20. 手机异步发送短信验证码解决方案-Celery+redis

热门文章

  1. ASP.NET Page执行顺序如:OnPreInit()、OnInit()
  2. ROBOT STUDIO 学习笔记
  3. c 调用易语言dll字节集,总结VC与易语言DLL互相调用的方法
  4. 机器人学习--智能移动机器人的有关技术演讲(浙大-熊蓉教授-2021年)
  5. C语言 | C语言实现高精度加法——数组加法(附源代码)
  6. java 定义一组常量用什么最好_Java语言中定义常量注意事项解析
  7. 矩阵sum_推荐系统——从协同过滤到矩阵分解
  8. 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
  9. php拍视频上传,php视频拍照上传头像功能实现代码分享
  10. java zookeeper 使用场景_java架构之路-(分布式zookeeper)zookeeper真实使用场景