admin管理员组文章数量:1612065
前言
刚开始学习Transformer / ViT的时候会发现为什么作者会将Position Encoding直接和Feature Embedding相加?当时的第一反应是,为什么不是concat,因为两者分明是两种异构的信息,为什么能放在一起相加呢?不应该concat才合理么?最近对一些工作做收尾的时候发现了这个后来被我遗漏的问题。(如果不知道Position Encoding是啥的建议先去阅读一下原论文)
问题
从向量空间的角度来看,我原本有一个Feature Embedding向量矩阵,我再加上一个Position Encoding,那不就意味着我原本的Feature Embedding向量的大小和方向都发生了变化么?而Positon Encoding代表的是Feature Embedding中的每个feature的相对/绝对位置,直觉上来讲,在通道维上concat是一个符合深度学习逻辑的操作,那么为什么原文作者最后选择了直接对两者做相加呢?
推理
以语句为例,首先,我们先尝试用concat的方法。我们给原始输入向量的每个位置 concat上一个代表位置信息的向量 (N代表共有N个位置)形成,它也可以表示为这个形式。
接着,对这个新形成的向量做变化,比如linear projection。
记变换矩阵 , 就是需要变换到的维度(这里为了方便,直接假设原输入的维度与嵌入维度一致,都是),它也可以表示为,其中。
现在进行变换:
其中,就是对原始输入做了嵌入之后的向量,而就是对位置向量做了嵌入之后的表示。即 Feature Embedding 和 Position Encoding。
于是,由变换结果可知,在原始向量上concat一个代表位置信息的向量,再经过变换,最终的效果等价于:先对原始输入向量做变换,然后再加上位置嵌入。
另一方面,concat会使网络进入深层之后参数量剧增,这是很不划算的。
本文标签: PositionViTTransformerEmbeddingfeature
版权声明:本文标题:为什么TransformerViT 中的Position Encoding能和Feature Embedding直接相加? 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728604132a1165237.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论