前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Network in Network(2013),1x1卷积与Global Average Pooling

Network in Network(2013),1x1卷积与Global Average Pooling

作者头像
李拜六不开鑫
修改2020-04-26 16:08:40
9260
修改2020-04-26 16:08:40
举报
文章被收录于专栏:本立2道生本立2道生

写在前面

《Network in Network》简称NIN,出自颜水成老师团队,首次发表在arxiv的时间为2013年12月,至20190921引用量为2871(google scholar)。

citations
citations

NIN的网络结构仍是在AlexNet基础上修改而来,其主要创新点如下:

  • 提出了mlpconv layer:mlpconv layer中使用小的多层全连接神经网络(multilayer perceptron, MLP)“micro network”替换掉卷积操作,micro network的权重被该层输入feature map的所有local patch共享。卷积操作可以看成线性变换,而micro network可以拟合更复杂的变换,相当于增强了conv layer的能力。多个mlpconv layer堆叠构成整个网络,这也是Network in Network名称的由来。
  • 提出了global average pooling(GAP)NIN不再使用全连接层,最后一层mlpconv layer输出的feature map数与类别数相同,GAP对每个feature map求全图均值,结果直接通过softmax得到每个类别的概率。GAP在减少参数量的同时,强行引导网络把最后的feature map学习成对应类别的confidence map

本文将依次介绍上面的创新点,同时顺带介绍 全连接 与 卷积的关系、全连接与GAP的关系,最后给出NIN的网络结构。

mlpconv layer实现

mlpconv
mlpconv

论文中讲,mlpconv layer使用一个小的全连接神经网络替换掉卷积,convolution layer与mlpconv layer对比示意图如下,

Comparison of linear convolution layer and mlpconv layer
Comparison of linear convolution layer and mlpconv layer

下面为《Dive into Deep Learning》中提供一个NIN block(mlpconv layer)的mxnet实现,

NIN block
NIN block
代码语言:javascript
复制
from mxnet import gluon, nd
from mxnet.gluon import nn

def nin_block(num_channels, kernel_size, strides, padding):
    blk = nn.Sequential()
    blk.add(nn.Conv2D(num_channels, kernel_size, strides, padding, ctivation='relu'),
            nn.Conv2D(num_channels, kernel_size=1, activation='relu'),
            nn.Conv2D(num_channels, kernel_size=1, activation='relu'))
    return blk

Global Average Pooling

卷积神经网络的经典做法是 数个卷积层+几个全连接层,典型视角是将前面的卷积层视为特征提取器,将全连接层视为分类器。卷积层的计算量高但参数少,全连接层的计算量少但参数多,一种观点认为全连接层大量的参数会导致过拟合。作者提出了Global Average Pooling(GAP),取代全连接层,最后一层mlpconv layer输出的feature map数与类别数相同,对每一个feature map取平均,全连接层与GAP的对比如下图所示,图片来自Review: NIN — Network In Network (Image Classification),GAP的结果直接输给softmax得到每个类别的概率。

FC vs GAP
FC vs GAP

去掉全连接的GAP强制将feature map与对应的类别建立起对应关系,softmax相当于分数的归一化,GAP的输出可以看成是与每个类别相似程度的某种度量,GAP的输入feature map可以解释为每个类别的置信度图(confidence map)——每个位置为与该类别的某种相似度,GAP操作可以看成是求取每个类别全图置信度的期望。因为只有卷积层,很好地保留了空间信息,增加了可解释性,没有全连接层,减少了参数量,一定程度上降低了过拟合。

最后一层mlpconv layer输出的feature map如下,可以看到图片label对应的feature map响应最强,强响应基本分布在目标主体所在的位置。

Visualization of the feature maps from the last mlpconv layer
Visualization of the feature maps from the last mlpconv layer

此外,作者还做将GAP与全连接层、全连接+dropout对比,在CIFAR-10库上的测试结果如下,

GAP comparison
GAP comparison

GAP可以看成是一种正则,全连接层的参数是学习到的,GAP可以看成是权值固定的全连接层。上面的实验说明,这种正则对改善性能是有效的。

网络结构

论文中给出的整体网络结构如下,

NIN architecture
NIN architecture

论文中没有给出具体的参数配置,实际上,NIN仍是在AlexNet基础上修改而来,相当于在AlexNet的每个卷积层后插入2个

(1times 1)

卷积层,移除了Local Response Norm,同时用GAP替换掉全连接层。在这里,mlpconv layer既可以看成是增强了原conv layer的表达能力,也可以看成增加了网络深度。

NIN architecture in d2l
NIN architecture in d2l

参考

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • mlpconv layer实现
  • Global Average Pooling
  • 网络结构
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com