最近在做多模态,发现基于 transformer 的多模态,position embedding 是一个非常重要的内容,而且还没有统一方案,先暂做记录,几篇还不错的博客:
Transformer学习笔记一:Positional Encoding(位置编码)
十分钟读懂旋转编码(RoPE)
图解RoPE旋转位置编码及其特性
一文读懂Transformer模型的位置编码
旋转式位置编码 (RoPE) 知识总结
怎么设计位置编码
因此,我们需要这样一种位置表示方式,满足于:
(1)它能用来表示一个token在序列中的绝对位置
(2)在序列长度不同的情况下,不同序列中token的相对位置/距离也要保持一致
(3)可以用来表示模型在训练过程中从来没有看到过的句子长度。

补充:


固定 i ,单从每个 PE(p, i) 看,沿着 i 轴,t 变化,是不断循环的三角函数,像这样:



最终,


下图是一串序列长度为50,位置编码维度为128的位置编码可视化结果:
注意,纵向轴是位置 t,横向轴是 i,那么,可以发现,由于sin/cos函数的性质,位置向量的每一个值都位于[-1, 1]之间。同时,纵向来看,图的右半边几乎都是蓝色的,这是因为越往后的位置,频率越小,波长越长,所以不同的t对最终的结果影响不大。而越往左边走,颜色交替的频率越频繁。

![[c语言日寄MAX]深度解析:大小端字节序](https://i-blog.csdnimg.cn/direct/dc637f4668dc46f7b9120cb7acb14bd1.png)














![[深度学习]图像分类项目-食物分类](https://i-blog.csdnimg.cn/img_convert/53754bd697dd505ef90003a2a331dbb1.png)


