计算机视觉中的注意力机制

计算机视觉中的注意力机制

注意力机制(Attention Mechanism)源于对人类视觉的研究。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。上述机制通常被称为注意力机制。人类视网膜不同的部位具有不同程度的信息处理能力,即敏锐度(Acuity),只有视网膜中央凹部位具有最强的敏锐度。为了合理利用有限的视觉信息处理资源,人类需要选择视觉区域中的特定部分,然后集中关注它。例如,人们在阅读时,通常只有少量要被读取的词会被关注和处理。综上,注意力机制主要有两个方面:

  • 决定需要关注输入的哪部分;
  • 分配有限的信息处理资源给重要的部分。

在计算机视觉领域,注意力机制被引入来进行视觉信息处理。注意力是一种机制,或者方法论,并没有严格的数学定义。比如,传统的局部图像特征提取、显著性检测、滑动窗口方法等都可以看作一种注意力机制。在神经网络中,注意力模块通常是一个额外的神经网络,能够硬性选择输入的某些部分,或者给输入的不同部分分配不同的权重。本文的注意力机制主要指代神经网络中的注意力机制。

注意力机制可以分为四类:基于输入项的柔性注意力(Item-wise Soft Attention)、基于输入项的硬性注意力(Item-wise Hard Attention)、基于位置的柔性注意力(Location-wise Soft Attention)、基于位置的硬性注意力(Location-wise Hard Attention)。

对于基于项的注意力和基于位置的注意力,它们的输入形式是不同的。基于项的注意力的输入需要是包含明确的项的序列,或者需要额外的预处理步骤来生成包含明确的项的序列(这里的项可以是一个向量、矩阵,甚至一个特征图)。而基于位置的注意力则是针对输入为一个单独的特征图设计的,所有的目标可以通过位置指定。

如前面所说,基于项的注意力在项的层面操作。原始输入经过神经网络处理后,如RNN或CNN,形成了一个每一项具有一个单独编码的序列。基于项的柔性注意力为每一个编码,即每一项,计算一个权重,然后对所有项进行线性加权合并。合并后的编码就是注意力机制操作后的特征,用于做预测。而基于项的硬性注意力的不同在于它会做出硬性的选择,而不是线性加权。具体就是根据注意力的权重随机地选取若干(通常是一个)编码作为最终的特征。

基于位置的注意力直接在一个单独的特征图上进行操作。基于位置的硬性注意力从输入的特征图中离散地选取一个子区域,作为最终的特征。选取的位置是由注意力模块计算出来的。而基于位置的柔性注意力则对整个特征图做一个变换,使得感兴趣的部分能够突出出来。

关于模型优化,注意力机制通常由一个连接在原神经网络之后的额外的神经网络实现,整个模型仍然是端对端的,因此注意力模块能够和原模型一起同步训练。对于柔性注意力,注意力模块对其输入是可微的,所以整个模型仍可用梯度方法来优化。而硬性注意力机制要做出硬性的决定,离散地选择其输入的一部分,这样整个系统对于输入不再是可微的。所以强化学习中的一些技术被用来优化包含硬性注意力的模型。

总之,注意力机制能够帮助模型选择更好的中间特征,表给出了这里介绍的注意力机制的四种类型。

注意力机制的四种类型

注意力机制全集:


参考文献:

Wang F, Tax D M J. Survey on the attention based RNN model and its applications in computer vision[J]. arXiv preprint arXiv:1601.06823, 2016.

编辑于 2018-10-06

文章被以下专栏收录