【论文阅读】Network In Network

俗话说得好,三十天打鱼二十九天晒网(误)。前几天觉着曼昆的那个《经济学原理》好好看就去看闲书去了。这几天突然心生愧疚就赶紧来弥补一下。

今天看的是Network In Network,是在读inception v1的论文时遇见的。

论文地址:https://arxiv.org/abs/1312.4400

以下是正文:

我觉着摘要就写得很明白了,这是摘要一部分的原文:

“The conventional convolutional layer uses linear filters followed by a nonlinear activation function to scan the input. Instead, we build micro neural networks with more complex structures to abstract the data within the receptive field. We instantiate the micro neural network with a multilayer perceptron, which is a potent function approximator. The feature maps are obtained by sliding the micro networks over the input in a similar manner as CNN; they are then fed into the next layer. Deep NIN can be implemented by stacking mutiple of the above described structure.

大致的意思是,作者将一般的CNN网络的卷积操作改成了多层感知机,这个多层感知机在二维输入上进行滑动计算出输出,整个网络由很多个这样的层堆叠而成,这就是NIN的结构。


引言

引言部分,作者概述了两个他们对CNN的改进:

1.将卷积操作改成了多层感知机。

        为什么要进行这样的改进呢?作者提出,卷积操作其实可以看做一个广义线性模型(GLM),因为其在进行特征提取的时候只有线性操作。

        我刚开始还迷糊了一会,不是有激活函数吗?后来才想明白,激活函数只能说是为了分割不同卷积层防止其能合在一起,并不能算是卷积提取特征里的非线性。

        既然一般的卷积只是个线性模型,那它提取特征的能力就受限了。如果把这个特征提取得过程理解成在输入空间里进行分割,举个例子就是,比如卷积的感受野是个3*3的区域,那么输入空间就是9维的,卷积提取特征会对这个9维空间进行分割,这一部分输出1,那一部分输出2,等等(这是我自己理解的啊,可能是错的),这个分割超平面就只能是线性的,表达能力就受到限制。

        因此作者提出用一个非线性的特征提取器替代这个线性的特征提取器,作者这里以多层感知机为例(意思是也可以用其他种的),多层感知机之间有非线性的激活函数,因此这个多层感知机整体就是非线性的。这里作者没有详细解释怎么进行计算,我写一下我的理解啊:将感受野内的二维输入(算上通道就是三维)展平成一维的,送进多层感知机进行特征提取的,多层感知机的输出也是一维向量,这个一维向量就作为输出的一个位置的不同通道处的值,然后滑动这个多层感知机到下一个区域进行计算......这样就得到一个三维输出(C*W*H)。作者将每一个这样的层称之为“mlpconv layer”。

2.将全连接部分改成global average pooling(GAP)

        作者认为,计算机视觉中的分类用CNN中最后的全连接部分,是一个从特征信息到类别信息过渡的一个黑盒子,很难解释到底干了什么。因此作者直接把全连接部分改成一个称之为global average pooling的操作(不会翻译)。具体的做法是,将最后一个mlpconv layer的输出的每个通道的二维值进行一个平均,得到与通道数一样多的一维向量,之后进行softmax计算。

        这里其实作者还没详细说明,我是从Global average pooling (GAP) - 简书 (jianshu.com)这里看的,里面有个图很合适,我贴在这:

        作者提到,这样的改变一方面增加了可解释性,因为作者认为global average pooling这个操作保证了特征与类别之间的相关性,翻译一下,“类别信息是各处特征的平均,很合理”,大概这个意思?(不过我觉着如果事实真的是这样的话,那全连接也可以学习到这个平均操作的吧,我还是持保留意见吧)。

        另一方面,这个改变防止了过拟合。因为全连接参数很多,容易过拟合,所以一般和dropout一起用。而这个global average pooling就不用担心过拟合的问题了,因为根本没有参数。

写完才发现这只是引言,感觉已经说完了所有内容了...


CNN

这一部分作者拿CNN和maxout与NIN进行比较。

作者认为,只有当输入空间是线性可分时,CNN才能进行较好的特征表示与提取(原因如上);而只有当输入空间是凸集合可分的时(原文是“However, maxout network imposes the prior that instances of a latent concept lie within a convex set in the input space, which does not necessarily hold”,我也不清楚能不能简称为“凸集合可分”),maxout才能进行较好的特征表示与提取。而NIN的优势就是他可以表示任何的输入空间划分情况,因为多层感知机可以近似任何的函数(万能近似定理)。

我也是因为NIN的作者后面经常拿NIN与maxout进行比较才去看的maxout论文,贴一下我自己的笔记【论文阅读】Maxout Networks_野生的野蛮人的博客-CSDN博客


Network In Network

作者这里又介绍了一遍NIN的两个结构:“MLP Convolution Layers”与“Global Average Pooling”,以及NIN的整体架构。相比引言里的介绍,这里补充了几点:

1.径向基函数网络(Radial basis network)与多层感知机一样都是很好的函数近似器。作者选择多层感知机有两个原因:一是MLP可以用反向传播进行学习,二是MLP和“特征重利用”的思想一致(这一点我不太理解,原文是“Second, multilayer perceptron can be a deep model itself, which is consistent with the spirit of feature re-use”,我抽时间去看看这里引用的文献)。

2.作者提出,MLP的计算也可以看成一种级联的跨通道带参数的池化(“...is equivalent to cascaded cross channel parametric pooling on a normal convolution layer”),而每个这样的池化又可以看成进行1*1卷积。具体这么看有什么好处,我也不太懂,可能是便于理解吧(不过我是没怎么理解)。

3.Global Average Pooling实际上是对每一个类别分别生成一个特征图(或者叫特征表示,“feature map”),就是对应一个通道的二维图(假设进行的是分类任务)。意思是。当分类任务的类别数确定时,那么最后一个mlpconv层输出的通道数也是确定的,等于类别数。作者相信,通过一层接一层的学习,最终的特征图的每个通道就代表着对应类别的置信度。

4.Global Average Pooling可以视为一份结构化正则化器。原因在下面的实验里阐述。

5.NIN的还可以在mlpconv层之间加上一些下采样层,,这点和CNN以及maxout一样。

NIN的整体结构图示如下:


实验

作者首先在CIFAR-10、CIFAR-100、Street View House Numbers、MNIST数据集上进行实验与结果比较,数据什么的就不展示了。

之后做实验来观察Global Average Pooling的正则化效果。第一个实验是将NIN的最后的Global Average Pooling改回全连接层,比较测试误差,如下:

 结果表明,GAP有正则化效果。

第二个实验是,将普通的CNN网络的全连接层改成GAP。结果表明,测试误差比单纯的全连接要小,但是比带dropout的全连接大。与上一个实验进行比较,可以得出GAP最好还是和mlpconv这种表达能力强的特征提取器一起用才行,单纯的CNN是广义线性模型(GLM),表达能力不强,用GAP的正则化效果也不好。

最后,作者对NIN进行GAP之前的最后一个特征图进行了可视化,图如下:

 这应该是将每个通道当做灰度图进行的可视化。可以看到,标签对应通道的强度最高,即证明了作者的想法:可以将类别信息视为特征信息的平均,通过GAP连接两种不同层次的信息。

作者还提到,观察上图中特征图的形状,可以发现,强度较高的区域(即白色区域)的形状位置大致和原图中物体形状位置一致,意味着NIN也有扩展到目标检测任务的可能性与潜力。


总结

滴滴滴,不写啦


贴一下不懂得地方:

1.引言里这一句话读不懂:

 2.第三部分Network In Network讲MLP Convolution Layers时,提到选择多层感知机的第二个原因不懂:

3.还有就是径向基函数网络还不太懂,以后有时间就去看!

 感谢作者!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野生的野蛮人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值