Global Average Pooling对全连接层的可替代性分析
2017-08-24 15:54
330 查看
在NIN(Network in Network) 这篇论文中有很多的思想让人受益匪浅,其中之一就是全局平均池化(Global Average Pooling) 对于全连接层的替代性分析。刚开始由于觉得之后的研究不需要NIN,因此就没去看论文,看了一下其他人的博客,发现关于其原因讲得并不清楚,只说是那么用的。后来实在是受不了了,看了看论文,而且找到了一个较好的讲解,现在算是完全弄懂了。
首先我们来看一下全连接层的缺点:
在AlexNet及其之前的大抵上所有的基于神经网络的机器学习算法都要在卷积层之后添加上全连接层来进行特征的向量化,此外出于神经网络黑盒子的考虑,有时设计几个全连接网络还可以提升卷积神经网络的分类性能,一度成为神经网络使用的标配。
但是,我们同时也注意到,全连接层有一个非常致命的弱点就是参数量过大,特别是与最后一个卷积层相连的全连接层。一方面增加了Training以及testing的计算量,降低了速度;另外一方面参数量过大容易过拟合。虽然使用了类似dropout等手段去处理,但是毕竟dropout是hyper-parameter, 不够优美也不好实践。
那么我们有没有办法将其替代呢?当然有,就是GAP(Global Average Pooling)。
我们要明确以下,全连接层将卷积层展开成向量之后不还是要针对每个feature map进行分类吗,GAP的思路就是将上述两个过程合二为一,一起做了。如图所示:
由此就可以比较直观地说明了。这两者合二为一的过程我们可以探索到GAP的真正意义是:对整个网路在结构上做正则化防止过拟合。其直接剔除了全连接层中黑箱的特征,直接赋予了每个channel实际的内别意义。
实践证明其效果还是比较可观的,同时GAP可以实现任意图像大小的输入。但是值得我们注意的是,使用gap可能会造成收敛速度减慢。
参考资料:
Network In Network
Global average pooling
首先我们来看一下全连接层的缺点:
在AlexNet及其之前的大抵上所有的基于神经网络的机器学习算法都要在卷积层之后添加上全连接层来进行特征的向量化,此外出于神经网络黑盒子的考虑,有时设计几个全连接网络还可以提升卷积神经网络的分类性能,一度成为神经网络使用的标配。
但是,我们同时也注意到,全连接层有一个非常致命的弱点就是参数量过大,特别是与最后一个卷积层相连的全连接层。一方面增加了Training以及testing的计算量,降低了速度;另外一方面参数量过大容易过拟合。虽然使用了类似dropout等手段去处理,但是毕竟dropout是hyper-parameter, 不够优美也不好实践。
那么我们有没有办法将其替代呢?当然有,就是GAP(Global Average Pooling)。
我们要明确以下,全连接层将卷积层展开成向量之后不还是要针对每个feature map进行分类吗,GAP的思路就是将上述两个过程合二为一,一起做了。如图所示:
由此就可以比较直观地说明了。这两者合二为一的过程我们可以探索到GAP的真正意义是:对整个网路在结构上做正则化防止过拟合。其直接剔除了全连接层中黑箱的特征,直接赋予了每个channel实际的内别意义。
实践证明其效果还是比较可观的,同时GAP可以实现任意图像大小的输入。但是值得我们注意的是,使用gap可能会造成收敛速度减慢。
参考资料:
Network In Network
Global average pooling
相关文章推荐
- Global Average Pooling对全连接层的可替代性分析
- Global average Pooling
- Global average Pooling
- 深度卷积网络中的Global average Pooling 层
- 深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling
- global average pooling
- 深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling
- 深度学习名词3:global averagepooling&average pooling
- Global average Pooling
- 关于 global average pooling
- Global average Pooling
- 为什么在网络的最后用average pooling layer 代替FC
- C++卷积神经网络实例:tiny_cnn代码具体解释(6)——average_pooling_layer层结构类分析
- Metrics "Global Cache Average CR Get Time" is at 1.273(Unknown):from em 12c
- 图像分类中max-pooling和average-pooling之间的异同
- Torch SpatialAveragePooling 实例
- OpenCv实现卷积神经网络实例:tiny_cnn代码详解(6)——average_pooling_layer层结构类分析
- 未能加载 global.asax的类的解决方案
- leetcode编程记录13 #637 Average of Levels in Binary Tree
- 图像拼接 - Natural Image Stitching with the Global Similarity Prior