Global Average Pooling

Golbal Average Pooling 第一次出现在论文Network in Network[1]中,后来又很多工作延续使用了GAP,实验证明:Global Average Pooling确实可以提高CNN效果。

在常见的卷积神经网络中,全连接层之前的卷积层负责对图像进行特征提取,在获取特征后,传统的方法是送入全连接层进行分类,而GAP的思路是使用GAP来替代该全连接层(即使用池化层的方式来降维)。相比于全连接层,GAP有以下优点:

  1. 参数量少。以往网络的参数几乎全部集中于全连接层,使用mlpconv搭配GAP可以在不降低性能的同时极大地减少参数量。
  2. 可解释性强。使用GAP可以显式强制最后一个mlpconv输出的feature map成为分类的confidence map。相比于以往在卷积层之后加入全连接层,很难解释最后一层的feature map有什么意义。相比之下,通过可视化可以发现,在真实分类的confidence map内,可以看到最大的激活区域出现在与原物体相同的区域。
  3. 不容易过拟合。全连接层很容易发生过拟合,因此非常依赖于使用dropout进行正则化。而GAP就是简单地把最后一层的feature map做了空域的平均值然后送入softmax分类器。GAP没有参数,不容易使网络发生过拟合。并且通过实验可以证明,GAP本身就是一种结构化的正则器。

image-20200628150712960

假设卷积层的最后输出是h×w×dh\times w\times d的三维特征图,,经过GAP转换后,变成了大小为1×1×d1\times 1\times d的输出值,也就是每一层h×wh\times w会被平均化成一个值。实验证明,这种方法是非常有效的。这样做还有另外一个好处:不用在乎网络输入的图像尺寸。同时需要注意的是,使用GAP也有可能造成收敛变慢。


  1. Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013. ↩︎