深度学习里的注意力机制初探

最近几年,深度学习相比传统模型而言可以更好地解决很多计算机视觉的问题。这主要是得益于ImageNet这样的百万量级图片数据库极大地方便了深度神经网络的训练。在这样大的数据库上,传统模型里人为设计的特征过于浅显,不一定能把整个数据库进行有效的分类。然而,深度神经网络可以根据图像的类别针对这个数据库学习到风格迥异的特征,从而用于分类等视觉任务。为更好的学习到具有针对性的特征,我们需要把把目光聚焦在我们对数据库感兴趣的地方。别高估我的能力,我当然不能浏览世界上的每一张图片并且做出标记。不过我们可以让深度学习模型主动去关注感兴趣的地方。这就是我今天要介绍的注意力机制。

注意力机制其实很简单,我们来做一个测试,比如下面这张图:

我第一眼注意到的就是图中间的一棵树,然后注意到图片上方的文字。之所以会注意到这棵树,主要是因为这棵树相比起草地,海洋和天空有更加丰富的信息。注意力机制自动带着我们的眼睛朝着这棵树的位置看过去。具体地说,注意力机制主要有两个因素,一个是“内容”,另一个是“位置”。在上面这张图上,我们主要看到了“一棵树”,位置在图片正中间稍稍偏下的地方。

在深度学习里,也有很多注意力机制的描述。我最近读到一篇发表在今年ECCV会议上的论文“CBAM: Convolutional Block Attention Module”。这篇文章主要提出了一个非常简单有效的模块,把注意力机制里的两个主题"what"和"where"完美地运用进去。接下来,让我来详细描述这是如何做到的。我们先看下面这个图:

这张图描述的是输入特征变得更好的过程。假设我们用深度学习模型的网络提取到相应的特征,我们可以对每一层提取到的特征进行改良。

如上图所示,我们可以先把每一层网络里不同的通道的特征进行改良,具体的做法就是对每个通道里的特征(一个通道对应一个矩阵)计算一些简单的统计特性,比如平均值和最大值。平均值对应的就是均值采样,最大值对应的就是最大采样。具体做法就是对每个通道里的特征矩阵计算一个平均值和一个最大值。把所有通道里的特征矩阵计算得到的结果再输入到一个多层感知器(MLP)里,进行训练,最后融合均值和最大值得到了解决“内容”的注意力机制。也就是说,这个机制强化了输入特征中的内容信息。具体过程如下图所示:

解决了“内容”特征的改良后,我们可以继续解决“位置”特征的改良。如下图所示:

我们可以计算每个特征矩阵里每个像素位置上所有通道元素的平均值和最大值,这样就可以得到两个矩阵特征,相当于有两个通道的位置特征。但是这两个特征层如何融合呢?作者在这里设计了一个卷基层,通过训练参数得到这两个矩阵的最佳融合方式,也就是说我不管你们怎么融合,只要最后效果好,你们就那样融合。这样就解决了“位置”特征的改良。

经过了这两种改良方式,深度神经网络学习到的特征已经有了很大的提升,那么我们怎么把这两个改良融进已有的神经网络里呢?见下图:

我们可以把“内容”和“位置”特征的改良无缝地嵌入到现有的主流网络里,比如残差网路。

这种机制的的确确能带来很大的好处。作者通过大量的分类实验证实了其有效性。

先验证“内容”特征的有效性:

我们可以看到,在每个通道里,只用均值采样或者最大值采样,网络的效果都能得到一定程度的提升。其中均值采样把误差率从24.56%下降到23.14%,最大值采样把误差率从24.56%下降到23.20%。如果这两个采样都采用的话,会进一步得到分类误差率的下降(从24.56%降到22.80%)。

接着验证“位置”特征的有效性:

在“内容”特征得到提升的基础上,我们进行“位置”特征的提升。从上表中看到,最终我们可以把误差率从23.14%下降到22.66%。

那么如何确定“内容”特征和“位置”特征改良的顺序呢?也就是说,是先“内容”后“位置”还是先“位置”后“内容”呢?不用担心,作者也做了相应的实验,见下表:

可以看到,先改良“内容”特征后改良“位置”特征,对误差率的下降最有帮助。

文章还把这个机制用到了当前最先进的各种网络里,在ImageNet数据集上进行了分类误差率的对比,发现各种网络都因为这些特征改良的机制得到了更低的误差率:

最后作者还展示了,这些“内容”特征和“位置”特征的改良到底在底层的图像上发生了什么(如下图所示)。通过对比ResNet50和ResNet50+CBAM这两行图像,我们可以看到这些特征上改良的确让深度学习模型更加注意图像里的重要物体和重要的位置。

作者大概觉得只做分类还不足以说明问题,最后还在MS COCO和VOC2007两个数据库上做了物体检测的实验。

我们先看在MS COCO上的实验结果,如下图所示,我们看到在引入了“内容”特征和“位置”特征的改良后,对比ResNet和ResNet+CBAM两行数据结果,深度网络检测到的效果的确有了一定程度的提升。

同样的结论可以在VOC2007数据库上得到验证:

这篇文章通过简单有效的设计和大量的实验验证证实了运用注意力机制改良“内容”特征和“位置”特征在图像分类、物体检测领域里可以得到更好的分类、检测效果。这个设计可以无缝嵌入到现有的主流网络里。

后记:这篇文章只是我对注意力机制的初步接触。我目前也在把注意力机制用在计算机视觉里的一些问题里,下次我会继续介绍这里面的好文章。敬请期待。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181020G1DLUT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券