Global average pooling--<Network In Network>

Global average pooling--<Network In Network>

2014年NUS在《Network In Network》中提出了global average pooling的概念,用于卷积神经网络图像分类,现如今global average pooling的概念已成为众多深度学习package中的一个layer。文本挖掘方面,facebook的fasttext中也使用了global average pooling,能够在较短时间解决海量文本分类问题。


  1. Global average pooling是什么?

最早用于卷积神经网络中,global average pooling用于替代全连接层。Global average pooling就是平均所有的feature map,然后将平均后的feature map喂给softmax进行分类。


2. 为什么用来替代全连接层?有什么优势?

全连接层比较容易过拟合,影响整个模型的泛化能力,dropout的引入部分解决了dense layer的过拟合问题。global average pooling的优势在于只是平均,没有参数。其使用了卷积层+dense layer,很难解释从loss back-propagate回去的是什么,更像是一个黑盒子,而global average用简单的average建立起了feature map和category之间的联系,简单来说,以手写体识别的分类问题为例,就是每个类别仅仅对应一个feature map,每个feature map内部求平均,10个feature map就变成了一个10维向量,然后输入到softmax中。全连接层过于依赖dropout来避免过拟合,而global average pooling可以看做是一种结构化正则,即对多个feature map的空间平均(spatial average),能够应对输入的许多空间变化(翻转、平移等)。



只要是能减少模型参数的办法,都能降低过拟合。。。深度学习的打开方式也是狂加 参数+layer 来增强模型学习能力,让模型先过拟合,再加 正则+降参数 避免过拟合。。。


3. 注意一下global average pooling与 (local) average pooling之间的区别。对于10个6*6的feature map,global average pooling的输出是 10*1维的向量,average pooling的输出则是根据pool_size, strides, padding计算出来的10个feature map。某种程度上说,global average pooling只是average pooling的一个特例。


4. fasttext有global average pooling真的很快。。。效果也还可以。


5. 楼顶是男神 Richard Socher - Home Page


如果觉得文章对您有帮助,可以关注本人的微信公众号:机器学习小知识

编辑于 2019-02-14

文章被以下专栏收录

    用10-20分钟的时间,用“人话”介绍一个机器学习相关的小知识,内容包含深度学习模型,机器学习模型,自然语言处理等等。主要介绍核心思想,没有太多细节,希望大家了解模型核心,需要用的时候拿来用之。所有专栏的赞赏收入会捐赠公益事业(如果有的话)。