01 简 介
在计算机视觉模型中,Self-Attention已经成为一种普遍模块。尽管它取得了显著的成就,但对Self-Attention的理解仍然有限。它的优点之一是克服了空间距离对依赖性建模的限制。
与LSTM和门控RNN相比,Self-Attention源于自然语言处理,在不考虑序列中单词之间距离的情况下对远距离依赖关系进行建模。
在应用于视觉模型时,Self-Attention将像素或Patch之间的全局信息聚集起来。同样,与传统的卷积相比,通过Self-Attention提取的特征不再受局部邻域的约束。
而LTSA作者认为,Self-Attention中的全局聚合也会带来问题,因为聚合的特征不能清楚地区分local cues和contextual cues。
作者从条件随机场(CRF)的角度来研究这个问题,并将其分解为local term和context term。而unary term(Local)和binary term(Context)则基于相同的query、key和value构建块,并使用相同的投影矩阵计算。
假设,使用相同的构建模块的local term和context term将导致问题,这与Dong等人指出的Self-Attention映射的弱点有关。
他们从理论上证明了连续Self-Attention的输出会以双指数形式收敛到一个秩1矩阵,并从经验上验证了这种退化。他们还声称skip connection可以部分解决排序崩溃问题。
在作者的CRF分析中,skip connection创建了最简单的local term,这相当于标识映射。虽然skip connection缓解了这个问题,但作者认为仍然需要设计一个具有更强表示能力的Local term。
02 本文方法
对于提升Local Term的表征能力,作者受全连接条件随机场(CRF)的启发,将自注意力分解为Local term和Context term。它们对应于CRF中的unary term和binary term,并由投影矩阵的注意力机制实现。
作者发现,unary term对输出的贡献很小,而标准的CNN仅依赖于unary term,在各种任务上都取得了很好的性能。
因此,作者提出了局部增强的自注意力机制(LESA),它通过将unary term与卷积结合来增强unary term,并利用融合模块动态耦合unary和binary运算。
1.分解Self-Attention
可以将Self-Attention分解为Local term和Context term。
具体来说,可以将Self-Attention的公式写成:
对于空间位置(i,j),第一个Local term通过观察自身来计算激活,而第二个Context term通过观察他人来计算激活,然后由softmax来生成贡献权重。
因此,输出混合了局部和上下文特征。
作者进行消融实验研究,以调查这两个term的贡献。具体来说,采用ResNet50,并将其最后两个阶段的卷积层替换为Self-Attention。
可以看到,Self-Attention主要是由Binary运算贡献的,但Unary也很重要。虽然Unary项的权值只取小于2%,去除它会导致7.56%的准确率下降或35%的错误率相对增加。
通过这种分解方法分析Self-Attention时,Unary项起着重要作用,但大部分的计算和重点都集中在Binary运算上。
2. 局部增强Self-Attention
添加Unary项和Binary项是一种静态的方法,可以用相等的权重合并这两个项。更灵活的策略是在不同的情况下给两者分配权重。
例如,在目标检测中,当检测图像中的多个小目标时,像素依赖的局部性比上下文更重要。
具体来说,和Sigmoid一起可以将pipeline表示为F+Sigmoid(BN - ReLU - FC - BN - ReLU - FC - BN - Sigmoid)。为简单起见,在公式中省略了位置嵌入。
在设计中,w根据Unary项和Binary项的内容,在不同的空间位置和不同的特征通道中控制它们的相对权重。
3.Unary和Binary Terms的动态融合
添加Unary项和Binary项是合并具有相等权重的2个项的静态方式。更灵活的策略是在不同情况下按需分配权重。例如,在目标检测中,当检测图像中的多个小目标时,像素依赖的局部性比上下文更重要。
这里作者通过将Binary项乘以并自适应调整这2项的相对权重,如下式所示:
具体来说,和Sigmoid可以表示为:
在设计中,ω取决于Unary项和Binary项的内容,并控制它们在不同空间位置和不同特征通道中的相对权重。这是融合Unary项和Binary项的主要方式。
03 实验
1.图像分类
结果如表所示。准确度top-1和top-5中,LESA都超过了卷积和Self-Attention的Baseline。
动态融合模块使用等式中的w来控制Binary项。则Unary项和Binary项的权值分别为1+w和w/1+w。由于w依赖于输入、空间位置和特征通道,在记录中对它们的权重进行平均。
在自注意中,通过表1中使用的softmax操作计算权重。研究发现,Self-Attention中权重分布是不平衡的。Unary项的权重百分比小于3%,比Binary项的权重百分比小32倍以上。
而对于LESA,它们的权重百分比分别为67%和33%。在局部线索尤为重要的目标检测任务中,LESA表现出了更好的提高,如表3和表4所示。
2.目标检测与实例分割
结果如表3和表4所示。对val2017和test-dev2017使用相同的测试。与所有场景中的卷积、Self-Attention和DCN Baseline相比,LESA为所有小、中、大目标提供了最好的BBox mAP和Mask mAP。
3.结果对比
通过上图可以看出,LESA的效果明显优于CNN和Self-Attention。
04 总结
这项工作主要启发点是来自于条件随机场,从CRF的角度将Self-Attention分解为一阶和二阶项,也就是文中所谓的Unary Term和Binary Term。
对于局部信息和全局信息所对应的Local Feature和Global Feature的关注在之前的各种工作中都没有得到很好的平衡;
因此作者针对于这一点提出了自己的观点设计了全新的局部信息增强模块,也就是LESA注意力机制,首先是通过Unary Term与卷积相结合来增强模型局部信息的表达能力,
其次,提出了动态化的融合Unary Term和Binary Term,进而可以更好的让该模块适配于不同的下游任务,比如说针对检测任务,尤其是其中的小目标,这时的局部信息就显得格外的重要,而针对于分类任务,可能全局信息更为重要,可见动态融合这方面还是一个不错的Trick的。
但是LESA与标准的Self-Attention一样,都具有会消耗大量内存的问题。因为这些计算量都是由于query与key计算相似度矩阵多带来了。目前也有很多工作在尝试解决这个问题。