Network in Network - ICLR 2014

NIN是2014 ICLR的一篇论文,你会发现很多论文都会引用到该论文,可见该论文是牛逼的。

之所以想看这篇,是因为自己想弄到object classification & detection的经典的network architecture的脉络(说白了,笔者菜鸟一个, 哭去,连这篇论文都没看过),这里可以推荐各位看官看下这篇 Neural Network Architectureshttp://linkis.com/github.io/kDnqR)。


入正题,废话少说。

1 要理解两个概念:micro neural networks( with more complex structures to abstract the data within the receptive field)。在论文中,micro neural networks由MLP(multi-layer perceptron)构成,其要点在于,更加抽象出感受野的特征。这里的感受野对于MLP中得每层来说,就是该层的卷积核大小。对于整个MLP来说,应该说的是输入图像的感受野大小。和cross channel parametric pooling,这个就是1*1的卷积操作,其参数可以学习,仅此而已。


另外论文里面由一处说的比较玄的:latent concept。可以看下面的解释,来理解。

一般来说,如果我们要提取的一些潜在的特征是线性可分的话,那么对于线性的卷积运算来说这是足够了。然而一般来说我们所要提取的特征一般是高度非线性的。在传统的CNN中,也许我们可以用超完备的滤波器,来提取各种潜在的特征。比如我们要提取某个特征,于是我就用了一大堆的滤波器,把所有可能的提取出来,这样就可以把我想要提取的特征也覆盖到,然而这样存在一个缺点,那就是网络太恐怖了,参数太多了。

我们知道CNN高层特征其实是低层特征通过某种运算的组合。于是作者就根据这个想法,提出在每个局部感受野中进行更加复杂的运算,提出了对卷积层的改进算法:MLP卷积层。另一方面,传统的CNN最后一层都是全连接层,参数个数非常之多,容易引起过拟合(如Alexnet),一个CNN模型,大部分的参数都被全连接层给占用了,故这篇paper提出采用了:全局均值池化,替代全连接层。因此后面主要从这两个创新点进行讲解。” 来自hjimce的Network In Network学习笔记

---

2 linear conv layer与mlp-conv layer的比较:


linear conv layer就是目前cnn里所用的conv layer,实际上是感受野里的特征和卷积核之间的内积操作。

mlp-conv layer则是对应的感受野不是作为卷积核的输入,而是作为一个micro neural network的输入,而这个micro neural network是一个multi-layers perceptron(MLP,多层感知机),即多个全连接层构成的子网络。

它们都是将输入的局部感受野作为输入,然后输出特征向量。为了提高泛化能力和非线性拟合能力,其后往往会接非线性的激活函数,如ReLU,Tanh,和Sigmoid等。为了减少网络参数,它们都以共享的方式来滑动窗口。

ps:由于全卷积FCN和全连接是等价的(这个可以看FCN这篇论文),即可以用和输入特征图大小一样的卷积核的卷积层来替代对应的连接层,其参数都是一样多。为了近似全连接层而且减少参数大小,往往用卷积核为1*1的卷积层来替代。

之所以选用multi-layer perceptron,是基于以下两点:

    1 兼容与CNN这样的网络架构,换句话说,就是可以嵌入到CNN中,并且可以通过反向传播的方式来学习;

    2 本身是一个deep model;

论文中用mlp-conv layers来实现multi-layer perceptron,其中在patches上,参数是共享的。公式如下:


---

3 framework:

从这图可看出,NIN其实就是有三个卷积层,每个卷积层后接一个MLP,和一个全局的平均池化层(global average pooling layer),池化层后接softmax层构成。(directly output the spatial average of the feature maps from the last mlpconv layer as the confidence of categories via a global average pooling layer, and then the resulting vector is fed into the softmax layer. 


之所以用全局的平均池化层:

    1 对于以往的CNN来说,来自于目标函数损失层的类别级别的标签信息,是通过full connected layers传递到conv layers,而full connected layers是一个黑盒子,很难理解到类别标签的信息是怎样作用到conv layers上的;

    2 full connecte layers参数多,容易过拟合,因此会过分依赖dropout这样的正则化操作(regularization);

    3 这里的全局平均池化层直接连接了conv layer和softmax layer,使得更加容易理解类别标签信息如何作用到conv layers上的,以及全局平均池化操作,相对来说也是一个无参数的stuctural regularizer,可以防止网络过拟合;

    4 全局平均池化操作是一个global上的,带有semantic info,这样更适合连接基于local patch的micro neural network;


整体上,该框架就是由卷积层,MLP,全局平均池化层,和softmax层构成,其中卷积层或者MLP后可接ReLU layer/pooling layer/dropout layer。具体可以看参考的第二个(NIN的pt文件),非常容易理解。


至于实验结果,这里就不说了,大家都懂的。


---

4 可参考:

a)Network In Network学习笔记(http://blog.csdn.net/hjimce/article/details/50458190)

b)NIN的pt文件 (https://gist.github.com/mavenlin/d802a5849de39225bcc6


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值