Network in Network 2

《Network in Network》论文笔记

1.综述

这篇文章有两个很重要的观点:

  1. 1×1卷积的使用 
    文中提出使用mlpconv网络层替代传统的convolution层。mlp层实际上是卷积加传统的mlp(多层感知器),因为convolution是线性的,而mlp是非线性的,后者能够得到更高的抽象,泛化能力更强。在跨通道(cross channel,cross feature map)情况下,mlpconv等价于卷积层+1×1卷积层,所以此时mlpconv层也叫cccp层(cascaded cross channel parametric pooling)。
  2. CNN网络中不使用FC层(全连接层) 
    文中提出使用Global Average Pooling取代最后的全连接层,因为全连接层参数多且易过拟合。做法即移除全连接层,在最后一层(文中使用mlpconv)层,后面加一层Average Pooling层。

以上两点,之所以重要,在于,其在较大程度上减少了参数个数,确能够得到一个较好的结果。而参数规模的减少,不仅有利用网络层数的加深(由于参数过多,网络规模过大,GPU显存等不够用而限制网络层数的增加,从而限制模型的泛化能力),而且在训练时间上也得到改进。

2.网络结构

  • 传统的convolution层 
  • 单通道mlpconv层 
  • 跨通道mlpconv层(cccp层) 
  • 由图可知,mlpconv=convolution+mlp(图中为2层的mlp)。
  • 在caffe中实现上,mlpconv=convolution+1×1convolution+1×1convolution(2层的mlp)

3.Caffe中的实现

原文3层mlpconv的完整网络结构 

Caffe中4层网络示意图(ImageNet) 

说明:

1.方框为网络层,椭圆为blob 
2.黄色pool4为Average Pooling

caffe网络数据数据如下(crop size=224)

Layer channels Filter size Filter stride Padding size Input size
conv1 96 11 4 - 224×224
cccp1 96 1 1 - 54×54
cccp2 96 1 1 - 54×54
pool1 96 3 2 - 54×54
conv2 256 5 1 2 27×27
cccp3 256 1 1 - 27×27
cccp4 256 1 1 - 27×27
pool2 256 3 2 - 27×27
conv3 384 3 1 1 13×13
cccp5 384 1 1 - 13×13
cccp6 384 1 1 - 13×13
pool3 384 3 2 - 13×13
conv4-1024 1024 3 1 1 6×6
cccp7-1024 1024 1 1 - 6×6
cccp8-1000 1000 1 1 - 6×6
pool4-ave 1000 6 1 - 6×6
accuracy 1000 - - - 1×1
  • 对于crop size = 227,则input size的变化为227, 55, 27, 13, 6, 1。

4. 1×1卷积的作用

以下内容摘抄自:http://www.caffecn.cn/?/question/136

问:发现很多网络使用了1X1卷积核,这能起到什么作用呢?另外我一直觉得,1X1卷积核就是对输入的一个比例缩放,因为1X1卷积核只有一个参数,这个核在输入上滑动,就相当于给输入数据乘以一个系数。不知道我理解的是否正确

答1: 
对于单通道的feature map和单个卷积核之间的卷积来说,题主的理解是对的,CNN里的卷积大都是多通道的feature map和多通道的卷积核之间的操作(输入的多通道的feature map和一组卷积核做卷积求和得到一个输出的feature map),如果使用1x1的卷积核,这个操作实现的就是多个feature map的线性组合,可以实现feature map在通道个数上的变化。接在普通的卷积层的后面,配合激活函数,就可以实现network in network的结构了(本内容作者仅授权给CaffeCN社区(caffecn.cn)使用,如需转载请附上内容来源说明。)

答2: 
我来说说我的理解,我认为1×1的卷积大概有两个方面的作用吧: 
1. 实现跨通道的交互和信息整合 
2. 进行卷积核通道数的降维和升维

下面详细解释一下: 
1. 这一点孙琳钧童鞋讲的很清楚。1×1的卷积层(可能)引起人们的重视是在NIN的结构中,论文中林敏师兄的想法是利用MLP代替传统的线性卷积核,从而提高网络的表达能力。文中同时利用了跨通道pooling的角度解释,认为文中提出的MLP其实等价于在传统卷积核后面接cccp层,从而实现多个feature map的线性组合,实现跨通道的信息整合。而cccp层是等价于1×1卷积的,因此细看NIN的caffe实现,就是在每个传统卷积层后面接了两个cccp层(其实就是接了两个1×1的卷积层)。 
2. 进行降维和升维引起人们重视的(可能)是在GoogLeNet里。对于每一个Inception模块(如下图),原始模块是左图,右图中是加入了1×1卷积进行降维的。虽然左图的卷积核都比较小,但是当输入和输出的通道数很大时,乘起来也会使得卷积核参数变的很大,而右图加入1×1卷积后可以降低输入的通道数,卷积核参数、运算复杂度也就跟着降下来了。以GoogLeNet的3a模块为例,输入的feature map是28×28×192,3a模块中1×1卷积通道为64,3×3卷积通道为128,5×5卷积通道为32,如果是左图结构,那么卷积核参数为1×1×192×64+3×3×192×128+5×5×192×32,而右图对3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),参数大约减少到原来的三分之一。同时在并行pooling层后面加入1×1卷积层后也可以降低输出的feature map数量,左图pooling后feature map是不变的,再加卷积层得到的feature map,会使输出的feature map扩大到416,如果每个模块都这样,网络的输出会越来越大。而右图在pooling后面加了通道为32的1×1卷积,使得输出的feature map数降到了256。GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层)。 

最近大热的MSRA的ResNet同样也利用了1×1卷积,并且是在3×3卷积层的前后都使用了,不仅进行了降维,还进行了升维,使得卷积层的输入和输出的通道数都减小,参数数量进一步减少,如下图的结构。(不然真不敢想象152层的网络要怎么跑起来TAT) 

[1]. https://gist.github.com/mavenlin/d802a5849de39225bcc6 
[2]. http://www.caffecn.cn/?/question/136

时间: 2024-11-08 05:16:13

Network in Network 2的相关文章

深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling

技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 最近接下来几篇博文会回到神经网络结构的讨论上来,前面我在"深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning"一文中介绍了经典的CNN网络结构模型,这些可以说已经是家喻户晓的网络结构,在那一文结尾,我提到"是时候动一动卷积计算的形式了",原因是很多工作证明了,在基本的CNN卷积计算模式之外,很多简

Linux: service network/Network/NetworkManager

Linux:service network/Network/NetworkManager start 这三种有什么不同? 1.network service的制御网络接口配置信息改动后,网络服务必须从新启动,来激活网络新配置的使得配置生效,这部分操作和从新启动系统时时一样的作用.制御(控制)是/etc/init.d/network这个文件,可以用这个文件后面加上下面的参数来操作网络服务.例如:/etc/init.d/networkrestart同样也可以用service这个命令来操作网络服务例如

论文笔记 《Maxout Networks》 && 《Network In Network》

论文笔记 <Maxout Networks> && <Network In Network> 发表于 2014-09-22   |   1条评论 出处 maxout:http://arxiv.org/pdf/1302.4389v4.pdfNIN:http://arxiv.org/abs/1312.4400 参考 maxout和NIN具体内容不作解释下,可以参考:Deep learning:四十五(maxout简单理解)Network In Network 各用一句话

Network in Network 笔记

传统CNN里的卷积核是一个generalized linear model(GLM)之后经过一个sigmoid(现在通常是ReLu)的非线性激励函数,假设卷积有K个filter,那么这K个filter代表的特征应该是可分的,或者说对属于同一个类别的不同变形具有不变性. 但是通过GLM来建模,也就是假设这些latent的filter是线性可分的,显然这样的假设并不总是成立,甚至通常都不成立. 传统的CNN为了解决这种不可分的问题,往往会选择比较多的filter个数,也就是比较大的K值,来保证所有的

Network In Network&mdash;&mdash;卷积神经网络的革新

Network In Network 是13年的一篇paper 引用:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013. 文章的新点: 1. 采用 mlpcon 的结构来代替 traditional 卷积层: 2. remove 卷积神经网络最后的 全连接层,采用 global average pooling 层代替: mplconv 结构的提出: conventional 的卷积层

1&#215;1卷积的用途(Network in Network)

1×1卷积,又称为Network in Network 如果卷积的输出输入都只是一个平面,那么1x1卷积核并没有什么意义,它是完全不考虑像素与周边其他像素关系. 但卷积的输出输入是长方体,所以1x1卷积实际上是对每个像素点,在不同的channels上进行线性组合(信息整合),且保留了图片的原有平面结构,调控depth,从而完成升维或降维的功能. 如下图所示,如果选择2个filters的1x1卷积层,那么数据就从原本的depth 3 降到了2.若用4个filters,则起到了升维的作用. 1. 相

Network 4: Network Layer

The primary tasks of a router lies in two aspects: (1) running routing protocols, and (2) forwarding datagrams. Some of the major routing protocols run on the Internet are as follow: Among broadcast routing algorithms, Reverse Path Forwarding is a co

Network In Network

传统的cnn过滤器是一个泛化的线性模型(GLM),我们认为这GLM的抽象能力是低级别的.把GLM替换为一个更有效的非线性函数近似能够提高抽象能力.当例子是线性可分时,GLM能实现很好的抽象.然而例子很多情况下是线性不可分的,输入的线性函数才能很好地表达.此网络没有采用传统的全连接层,而是采用全局平均池化层.一方面是因为全局平均池化层能很好解释特征映射和类别之间的联系.另一方面,全连接层由于参数太多容易过拟合并且高度依赖dropout regularization,但全局平均池化层本身就是一个结构

【CV论文阅读】Network in Network

目的: 通过用Mlpconv层来替代传统的conv层,可以学习到更加抽象的特征.传统卷积层通过将前一层进行了线性组合,然后经过非线性激活得到(GLM),作者认为传统卷积层的假设是基于特征的线性可分.而Mlpconv层使用多层感知机,是一个深层的网络结构,可以近似任何非线性的函数.在网络中高层的抽象特征代表它对于相同concept的不同表现具有不变性(By abstraction we mean that the feature is invariant to the variants of th