self-attention本身是对tokens的顺序是不敏感的,所以如果没有位置编码,那么transformer就只能依靠patches之间的纯语义来建模,这就相当于模型自己要学会“拼图”,或者类似一个“词袋模型”。从ViT的实验看,去掉position embedding后,性能会下降3个点以上,对结果还是影响比较大的。另外图像任务比如分割和检测大部分都是可变输入的,固定的PE对此并不友好,需要finetune。
目前的研究如CPVT和CvT可以在transformer引入卷积来隐式地编码位置信息,这就避免了直接使用PE,从结果上看,效果也和采用PE类似。
另外MoCo v3中也提到了PE的问题,发现去掉PE,对ViT进行无监督训练,性能下降只有不到2%。He神更倾向认为就算加了PE,可能模型也没有充分利用好位置信息。这个问题还需要进一步研究。
我个人认为文本和图像还是差异比较大的,图像毕竟属于一个高维连续空间。PE可能对文本建模影响比较大,但是对图像可能影响没那么大。ViT模型完全只依靠一堆无序的patches就能够学习得足够好。