GAP代替FC层

首先我们来看一下全连接层的缺点:

在AlexNet及其之前的大抵上所有的基于神经网络的机器学习算法都要在卷积层之后添加上全连接层来进行特征的向量化,此外出于神经网络黑盒子的考虑,有时设计几个全连接网络还可以提升卷积神经网络的分类性能,一度成为神经网络使用的标配。

但是,我们同时也注意到,全连接层有一个非常致命的弱点就是参数量过大,特别是与最后一个卷积层相连的全连接层。一方面增加了Training以及testing的计算量,降低了速度;另外一方面参数量过大容易过拟合。虽然使用了类似dropout等手段去处理,但是毕竟dropout是hyper-parameter, 不够优美也不好实践。

那么我们有没有办法将其替代呢?当然有,就是GAP(Global Average Pooling)。

我们要明确以下,全连接层将卷积层展开成向量之后不还是要针对每个feature map进行分类吗,GAP的思路就是将上述两个过程合二为一,一起做了。如图所示:
在这里插入图片描述
在这里插入图片描述
由此就可以比较直观地说明了。这两者合二为一的过程我们可以探索到GAP的真正意义是:对整个网路在结构上做正则化防止过拟合。其直接剔除了全连接层中黑箱的特征,直接赋予了每个channel实际的类别意义。做法是在最后卷积层输出多少类别就多少map,然后直接分别对map进行平均值计算得到结果最后用softmax进行分类。
(举个例子
假如,最后的一层的数据是10个6x6的特征图,global average pooling是将每一张特征图计算所有像素点的均值,输出一个数据值。这样10 个特征图就会输出10个数据点,将这些数据点组成一个1x10的向量的话,就成为一个特征向量,就可以送入到softmax的分类中计算了)

GAP特点

  • 一是GAP在特征图与最终的分类间转换更加简单自然;
  • 二是不像FC层需要大量训练调优的参数,降低了空间参数会使模型更加健壮,抗过拟合效果更佳
  • 实践证明其效果还是比较可观的,
  • 同时GAP可以实现任意图像大小的输入。
  • 但是值得我们注意的是,使用gap可能会造成收敛速度减慢

深度学习基础系列(十)| Global Average Pooling是否可以替代全连接层?

在keras发布的经典模型中,可以看到不少模型甚至抛弃了全连接层,转而使用GAP,而在支持迁移学习方面,各个模型几乎都支持使用Global Average Pooling和Global Max Pooling(GMP)。 然而,GAP是否真的可以取代全连接层?其背后的原理何在呢?本文来一探究竟。

本文在数据集有限的情况下,用keras对GAP VS GMP VS FC进行啦比较。具体代码见原博文。

结论:从本实验看出,在数据集有限的情况下,采用经典模型进行迁移学习时,GMP表现不太稳定,FC层由于训练参数过多,更易导致过拟合现象的发生,而GAP则表现稳定,优于FC层。当然具体情况具体分析,我们拿到数据集后,可以在几种方式中多训练测试,以寻求最优解决方案。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值