实验分析非常精彩 | Transformer中的位置嵌入到底改如何看待?(二)

简介: 实验分析非常精彩 | Transformer中的位置嵌入到底改如何看待?(二)

4本文方法


这里,首先回顾以往的相对位置编码方法,并分析它们之间的差异。在此基础上,提出了4种用于Vision Transformer的新方法,并对其进行了有效的实现。

4.1 先前的相对位置编码方法

1、Shaw’s RPE

Shaw等人提出了Self-Attention的相对位置编码。输入Token被建模为一个有向和全连接图。任意位置i和j之间的每条边由一个可学习的向量表示,即相对位置编码。此外,作者认为精确的相对位置信息在超过一定距离后就没有用处了,因此引入了clip函数来减少参数的数量。编码形式为:

image.png

其中和分别为value和key的相对位置编码的可训练权值。 ,其中。标量k是最大相对距离。

2、RPE in Transformer-XL

Dai等人为query引入了额外的偏置项,并使用正弦公式进行相对位置编码,其表达式为:

image.png

其中是2个可学习的向量。

正弦编码矢量提供了相对位置的先验值。是一个可训练矩阵,它可以将投射到一个基于位置的关键向量中。

3、Huang’s RPE

Huang等人提出了一种同时考虑query、key和相对位置交互的新方法。方程如下所示:

image.png

其中是query和key共享的相对位置编码。

4、RPE in SASA

以上3种方法都是针对语言建模中的一维词序列而设计的。Ramachandran等人提出了一种二维图像编码方法。这个想法很简单。它将二维相对编码分为水平方向和垂直方向,使得每个方向都可以通过一维编码进行建模。方法公式如下所示:

image.png

其中,和表示x轴和y轴上的相对位置,图像的坐标分别和是可学习的向量, concat操作连接2个编码形式最终相对编码和的长度。

image.png

换句话说,x轴或y轴上相同的偏移量共享相同的相对位置编码,因此这种方法可以减少可学习参数的数量和计算成本。但是,编码只应用于key。在实验中观察到对key、query和value同时施加RPE是最有效的,如表4和表5所示。

image.png

5、RPE in Axial-Deeplab

Wang等人引入了一种位置敏感方法,将qkv依赖的位置偏差加入到Self-Attention中。位置灵敏度应用于沿高度轴和宽度轴依次传播信息的轴向注意。然而,当相对距离大于一个阈值时,编码设置为零。作者观察到远程相对位置信息是有用的,如表6所示。

image.png

在标准的Self-Attention基础上,这种位置敏感性可能具有竞争性。如果采用所提出的分段函数,它可以进一步改进,更有效地建模长期依赖关系。

4.2 提出新的相对位置编码

作者设计了自己的图像RPE(iRPE)方法来分析几个在以前的工作中没有很好研究的因素。首先,为了研究编码是否可以独立于输入嵌入,作者引入了2种相对位置模式:偏差模式上下文模式

作者提出了一个分段函数来映射相对位置到编码,这与传统的clip函数不同。然后,为了研究方向性的重要性,作者设计了2种无向和2有向方法。

1、偏差模式和上下文模式

以前的相对位置编码方法都依赖于输入Embedding。它带来了一个问题,即编码是否可以独立于输入?

作者引入相对位置编码的偏差模式和上下文模式来研究这一问题。前者独立于输入Embedding,而后者考虑与query、key或value的交互。更具体地说,作者引入一个统一的公式为:

image.png

其中为二维相对位置编码,定义偏差或上下文模式。

对于偏差模式:

image.png

偏差模式

image.png

其中是一个可学习的标量,表示位置和之间的相对位置权值。

对于上下文模式:

image.png

上下文模式

image.png

其中是一个可训练的向量,与query嵌入交互。在上下文模式下,有多种变体。例如,在query和key上操作的相对位置编码可以表示为:

image.png

其中都是可学习的向量。

此外,上下文模式也可以应用于value Embedding,

image.png

其中。相对位置权值可以用同样的方法构造。对于一个统一的表示,在下面的讨论中使用来表示偏差模式和上下文模式。

2、分段索引函数

在描述二维相对位置权值之前,首先引入多对一函数,将有限集中的相对距离映射为一个整数,然后可以用这个整数作为索引,并在不同的关系位置之间共享约束。这种索引函数可以大大减少长序列(如高分辨率图像)的计算成本和参数数量。

虽然有学者使用的clip函数也降低了成本,但相对距离大于β的位置被赋给相同的编码。这种方法不可避免地忽略了长期相对位置的上下文信息。预适作者引入了一个分段函数来索引到相应编码的相对距离。这个函数是基于一个假设,即更近的邻居比更远的邻居更重要,并根据相对距离分配注意力。它被描述为:

image.png

其中[·]是一个舍入运算,sign()确定数字的符号,即输入为正返回1,输入为负返回-1,输入为负返回0。α决定分段点,β控制输出在[−β,β]范围内, γ调整对数部分的曲率。

作者比较分段函数g(x)与clip函数,如图2,clip函数h(x)分布均匀的注意力,忽略了长距离的位置,但分段函数g(x)通过相对距离分布不同的注意力水平。假设需要保留远程位置的潜在信息,特别是对于高分辨率图像或需要远程特征依赖的任务,因此选择g(x)来构建映射方法。

3、二维相对位置计算

为了计算二维图像平面上的相对位置和定义相对权重,作者提出了2种无向映射方法,即欧式映射量化映射,以及2种有向映射方法,即交叉映射乘积映射

欧式映射

在图像平面上,相对位置为二维坐标。计算2个位置之间的欧氏距离,并将距离映射到相应的编码中。该方法是无向的,数学表达为:

其中为偏置模式下的可学习标量或上下文模式下的向量。这里将看作一个存储相对位置权值的桶。桶的数量为。

量化映射

在上述欧式映射方法中,相对距离不同的2个近邻可以映射到同一个索引,例如二维相对位置(1,0)和(1,1)都映射到索引1。则认为近邻应该分开。因此,对欧氏距离进行量化,即不同的实数映射为不同的整数。I(I,j)修正为:

操作将一组实数量化为整数集合,这个方法也是无向的。

交叉映射

像素的位置方向对图像也很重要,因此提出了有向映射方法。这种方法称为交叉法,它分别计算水平和垂直方向上的编码,然后对它们进行总结。方法如下:

image.png

其中,和都是偏置模式下的可学习标量,或上下文模式下的可学习向量。

类似于SASA中的编码,x轴或y轴上相同的偏移量共享相同的编码,但主要的区别是这里使用了一个分段函数来根据相对距离分配注意力。桶的数量是。

乘积映射

交叉映射将不同的相对位置编码为相同的嵌入,如果在一个方向上的距离是相同的,无论是水平的还是垂直的。

此外,加法运算带来了额外的计算成本。为了提高效率和包含更多的方向性信息,作者设计了乘积映射,公式如下:

image.png

方程的右侧为偏置模式下的可训练标量,或上下文模式下的可训练向量。

二维相对位置映射实验

image.png

分析
  • 直接 vs 间接:如表所示,有向方法(交叉和乘积)总体上优于无向方法(欧几里得和量化)。这一现象说明方向性对于vision transformer是重要的,因为图像像素是高度结构化的和语义相关的
  • 偏置 vs 上下文:从表可以看出,无论采用哪种方法,上下文模式的表现都优于偏置模式。潜在的原因可能是上下文模式用输入特征改变编码,而偏置模式保持不变

image.png

  • 共享 vs 不共享:Self-attention包含多个Head。相对位置编码可以在不同的head共享或不共享。分别在表2中展示了这2种方案在偏置和上下文模式下的效果。对于偏置模式,当在head共享编码时,准确率显著下降。相比之下,在上下文模式下,2个方案之间的性能差距可以忽略不计。两者的平均准确率均为80.9%。作者推测不同的head需要不同的相对位置编码来获取不同的信息。在上下文模式下,每个head可以计算出自己的RPE,而在偏置模式下,共享的RPE则迫使所有head对patch给予同样的关注。为了节省参数,在最终的方法中采用了共享方案

image.png

  • 分段 vs Clip:作者比较了分段函数g(x)与clip函数h(x)的效果。在图像分类任务中,这2种功能之间的性能差距很小,甚至可以忽略不计。然而,在目标检测任务中,clip函数比表6所示的分段函数差。潜在的原因当序列长度较短时,这两个函数非常相似。分段函数是有效的,特别是当序列的大小远远大于桶的数量时。与分类相比,目标检测使用更高的分辨率输入,导致输入序列更长。因此,作者推测,当输入序列较长时,由于分段函数能够将不同的Attention分散到距离相对较大的位置,所以应该使用分段函数,而当相对距离大于β时,Clip函数可以分配相同的编码;
  • 桶的数量:桶的数量在很大程度上影响模型参数、计算复杂性和性能。为了找到一个平衡,作者探索了不同桶的数量对上下文方法的影响。图3显示了top-1精度随桶数的变化情况。在50桶之前,精度从79.9提高到80.9。在那之后,没有显著的改善。结果表明,对于DeiT-S中14×14的特征图,桶数50可以很好地平衡计算代价和精度。

image.png

  • 特定组件分析:这里主要是研究不同的位置编码对vision transformer模型的影响。选择DeiT-S模型作为基线,只改变了位置编码方法。原始模型采用了可学习的绝对位置编码。用上下文产品法计算了50个桶的相对位置编码。

image.png

从表中得到如下结论:

  1. 从原始DeiT-S中去除绝对位置编码会导致Top-1的精度从79.9下降到77.6(#1 vs . #2);
  2. 仅采用相对位置编码的模型优于仅采用绝对位置编码的模型(#3-5 vs . #1)。结果表明,相对位置编码比绝对位置编码效果好;
  3. 当配置相对位置编码时,绝对编码不带来任何增益(#3-5 vs . #8-10)。在分类任务中,作者认为局部信息比全局信息更重要;
  4. query或key的相对位置编码比value带来更多的收益(#3,4 vs . #5);
  5. 对query、key和value的编码组合可以带来了进一步的提升(#6、7、11、12 vs . others)。
  • 复杂度分析:作者评估了所提出的方法在不同输入分辨率下的计算成本。baseline模型为DeiT-S,仅采用绝对位置编码。采用We adopt contextual product shared-head relative position encoding to the baseline with 50 buckets。图4显示了我们的方法在有效实现的情况下最多需要1%的额外计算成本。

image.png


5实验


ImageNet

COCO


6参考


[1].Rethinking and Improving Relative Position Encoding for Vision Transformer

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
一文尽览 | 开放世界目标检测的近期工作及简析!(基于Captioning/CLIP/伪标签/Prompt)(上)
人类通过自然监督,即探索视觉世界和倾听他人描述情况,学会了毫不费力地识别和定位物体。我们人类对视觉模式的终身学习,并将其与口语词汇联系起来,从而形成了丰富的视觉和语义词汇,不仅可以用于检测物体,还可以用于其他任务,如描述物体和推理其属性和可见性。人类的这种学习模式为我们实现开放世界的目标检测提供了一个可以学习的角度。
一文尽览 | 开放世界目标检测的近期工作及简析!(基于Captioning/CLIP/伪标签/Prompt)(上)
|
3月前
|
存储 C语言
【C深度解剖】计算机数据下载和删除原理
【C深度解剖】计算机数据下载和删除原理
|
自然语言处理 数据建模 计算机视觉
实验分析非常精彩 | Transformer中的位置嵌入到底改如何看待?(一)
实验分析非常精彩 | Transformer中的位置嵌入到底改如何看待?(一)
244 0
|
机器学习/深度学习 自然语言处理 算法
收藏!编码器中如何融入结构信息?这几篇论文一定不要错过
收藏!编码器中如何融入结构信息?这几篇论文一定不要错过
|
机器学习/深度学习 自然语言处理 算法
清北微软深挖GPT,把上下文学习整明白了!和微调基本一致,只是参数没变而已
清北微软深挖GPT,把上下文学习整明白了!和微调基本一致,只是参数没变而已
191 0
|
机器学习/深度学习 并行计算 算法
像Transformer一样思考!DeepMind发布全新模型设计工具Tracr:从可解释逻辑反向搭建模型
像Transformer一样思考!DeepMind发布全新模型设计工具Tracr:从可解释逻辑反向搭建模型
196 0
|
机器学习/深度学习 测试技术 异构计算
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
|
机器学习/深度学习 数据挖掘 PyTorch
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
|
机器学习/深度学习 算法 测试技术
手撕Resnet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕Resnet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕Resnet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
|
机器学习/深度学习 人工智能 自动驾驶
一文尽览 | 开放世界目标检测的近期工作及简析!(基于Captioning/CLIP/伪标签/Prompt)(下)
人类通过自然监督,即探索视觉世界和倾听他人描述情况,学会了毫不费力地识别和定位物体。我们人类对视觉模式的终身学习,并将其与口语词汇联系起来,从而形成了丰富的视觉和语义词汇,不仅可以用于检测物体,还可以用于其他任务,如描述物体和推理其属性和可见性。人类的这种学习模式为我们实现开放世界的目标检测提供了一个可以学习的角度。
一文尽览 | 开放世界目标检测的近期工作及简析!(基于Captioning/CLIP/伪标签/Prompt)(下)