您的位置:首页 > 房产 > 建筑 > 服务网站建设方案_短网址转换器_百度竞价推广流程_seo关键词布局技巧

服务网站建设方案_短网址转换器_百度竞价推广流程_seo关键词布局技巧

2025/1/4 7:53:34 来源:https://blog.csdn.net/yuanl15/article/details/144687917  浏览:    关键词:服务网站建设方案_短网址转换器_百度竞价推广流程_seo关键词布局技巧
服务网站建设方案_短网址转换器_百度竞价推广流程_seo关键词布局技巧

背景

由于Transformer的self-attention无法捕捉token的位置顺序,所以需要对token的位置进行编码。如果直接将位置信息融入输入中,这就是绝对位置编码的一般做法,如果调整attention让他有能力辨别不同位置的token,这就是相对位置编码的一般做法。

绝对位置编码

一般来说,绝对位置编码会加入到输入中,在输入的第k个向量x_{k}中加入位置向量p_{k}作为自注意力的输入。

Learnable Position Embeddings

最朴素的做法就是直接将位置编码作为一个可学习的向量learnable embeddings(如随机初始化一个512token长度x768特征维度),BERT中用的就是这种。但是这种方法的缺点是没有外推性,如果token长度变化则无法处理了。

三角式(Sinusoidal Positional Encoding)

Transformer原文中使用的就是这种位置编码方式:

k是token位置,p_{k,2i}p_{k,2i+1}是token特征维度上第2i和2i+1位置,d是token向量总长度。在做self-attention的时候,token之间做点积,相邻的维度乘加间可以通过三角函数公式p_{k,2i}\cdot p_{k+t,2i}+p_{k,2i+1}\cdot p_{k+t,2i+1}=sin(\frac{k}{10000^{2i/d}})sin(\frac{k+t}{10000^{2i/d}}) + cos(\frac{k}{10000^{2i/d}})cos(\frac{k+t}{10000^{2i/d}})=cos(\frac{t}{10000^{2i/d}})转化为了token相对位置t的函数,从而注入了相对位置信息。

相对位置编码

相对位置编码没有完整建模每个输入的位置信息,而在算attention的时候考虑当前位置。

RoPE(Rotary Position Embedding)

RoPE的思路就是直接在q,k添加绝对位置信息,在self-attention内积后将结果变为相对位置的函数。即找到函数f(x)令内积为

这里我们省去推理过程,直接把RoPE的结果拿上来,他的f(x)函数如下:

将复数用实矩阵表达可以转换成如下矩阵:

将情况推演至任意偶数维的RoPE可以为如下公式:

,即给位置为m的Query乘上位置编码矩阵Rm,给位置为n的Key乘上位置编码矩阵Rn,用变换后的序列做self-attention就包含了相对位置信息:

在实际代码中,Rm是稀疏矩阵,一般使用如下方式实现RoPE:

其中,和Sinusoidal的位置编码类似。

M-RoPE

在图像领域使用ViT时,如果将patch展开使用1维的位置编码,就会有一些位置编码上的不自然,如(x+1,y)(x,y+1)对于(x,y)来说应该都是相邻的位置,但是展开为1维这两个位置对于(x,y)来说并不是相邻的。这里引入一个2维的RoPE:

其与1维的区别是,RoPE-1D是特征两两一组,而RoPE-2D是四个一组,每组去乘Rx,y矩阵。

那么同样,RoPE也可以拓展到3维,这就是Qwen2-VL中使用的了,只不过这里变成了6个一组,其3个维度分别为time,height,width,如下图所示进行编码,图像则time维度数值固定,文本则time、height、width都相同。

参考资料

Transformer升级之路:2、博采众长的旋转式位置编码 - 科学空间|Scientific Spaces

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com