马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

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

[复制链接]
查看2105 | 回复1 | 2019-10-12 10:23:36 | 显示全部楼层 |阅读模式

目录

  • 写在前面
  • mlpconv layer实现
  • Global Average Pooling
  • 网络布局
  • 参考

博客:blog.shinelee.me | 博客园 | CSDN

写在前面

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

102336ygtk9g9yab499yl4.jpg

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
  • \(1\times 1\) convolution:在mlpconv layer中初次利用了\(1\times 1\)卷积,\(1\times 1\)卷积可以在不改变尺寸的情况下,灵活调解feature map的channel数,广泛影响了后续网络的计划,如Inception系列等。

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

mlpconv layer实现

102336zj4q313jjpdz944f.jpg

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

102337qx799kxxxx9x928q.jpg

对于convolution layer,假设有N个kernel,每个kernel的尺寸为\(k \times k\),卷积操作将每个\(k \times k\)大小的local recptive field / local patch线性映射为N个输出,汇总全部local patch的卷积结果得到N个feature map。

对于mlpconv layer,利用micro network替换掉卷积,通过micro network将每个\(k \times k\)的local patch非线性映射为N个输出,汇总后仍得到N个feature map。文中说micro network为小的全毗连神经网络,但在实现时,这个全毗连神经网络却是通过几个卷积层实现的,为什么呢?因为全毗连可以转化成卷积

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

102337x3s26sfsubvs22bn.jpg

  1. <code>from mxnet import gluon, nd
  2. from mxnet.gluon import nn
  3. def nin_block(num_channels, kernel_size, strides, padding):
  4. blk = nn.Sequential()
  5. blk.add(nn.Conv2D(num_channels, kernel_size, strides, padding, ctivation=&#39;relu&#39;),
  6. nn.Conv2D(num_channels, kernel_size=1, activation=&#39;relu&#39;),
  7. nn.Conv2D(num_channels, kernel_size=1, activation=&#39;relu&#39;))
  8. return blk</code>
复制代码

一个NIN block通过1个卷积层和2个\(1 \times 1\)卷积层堆叠而成,这3个卷积层的输出channel数雷同。对于第1个卷积层,因为kernel_size与local patch大小雷同,以是对每一个local patch而言,这个卷积等价于全毗连,共num_channels个输出,每个输出与local patch全毗连的权重就是对应的整个卷积核,卷积核的数目也为num_channels。对于反面2个\(1\times 1\)的卷积层,输入都是num_channels维的向量,即num_channels个\(1\times 1\)的feature map,kernel_size与整个feature map的尺寸雷同,这个\(1\times 1\)的卷积也就相当于全毗连了。通过\(1\times 1\)的卷积实现了差异卷积核结果间的信息交流。

实际上,通过调解\(1\times 1\)卷积核的数目,可以在不改变输入feature map尺寸的情况,灵活地增加或减少feature map的channel数目,引入更多的非线性,表达本事更强,在实现feature map间信息交流的同时,获得信息的压缩或增广表示

Global Average Pooling

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

102337mlpdlp47umxkd5hq.jpg

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

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

102338ob82vh0muq2yruhh.jpg

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

102338z0666eaxqtk2lkyz.jpg

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

网络布局

论文中给出的团体网络布局如下,

102339lup7tgt2qkk7z7ju.jpg

论文中没有给出详细的参数配置,实际上,NIN还是在AlexNet根本上修改而来,相当于在AlexNet的每个卷积层后插入2个\(1\times 1\)卷积层,移除了Local Response Norm,同时用GAP替换掉全毗连层。在这里,mlpconv layer既可以看成是增强了原conv layer的表达本事,也可以看成增加了网络深度。

102339b7zjjih7oh9z7hnh.jpg

参考

  • arxiv: Network in Network
  • 7.3. Network in Network (NiN)
  • Review: NIN — Network In Network (Image Classification)
  • Network In Network architecture: The beginning of Inception






来源:https://www.cnblogs.com/shine-lee/p/11655836.html
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则