深度学习之基础模型-NIN

来源:互联网 发布:淘宝店铺购买平台 编辑:程序博客网 时间:2024/05/17 23:35

Network in Network 是google提出的一种在网络结构上非常具有创造性的文章。以前的深度学习结构,往往是CNN+FC之类的组合,这样在CNN与FC进行结合的过程中,则把两部分过程独立来开,CNN负责提取特征,FC负责特征分类。

而NIN则利用mlpconv和global average pooling将CNN和FC两部分有机的结合在一起,使得其可解释性更强。从而文章的创新点:

 *提出了mlpconv代替普通的卷积操作,从而来提升抽象能力 *提出了global average pooling,从而将CNN与FC有机的结合在一起,使得整个网络结构的可解释性更加强,效果也更佳

创新点一:mlpconv

首先,普通的卷积操作都是通过一个线性变换,然后后面跟着一个非线性激励函数

output(x)=f(wx+b)

其中,wx+b为线性变换,函数f为非线性激励函数,例如sigmoid,tanh,ReLU等,但是这种抽象能力比较弱,指出这种表达能力只能正线性行可分的情况比较适应,换句话说,该结构的非线性表达能力较弱。

这里写图片描述

作者比较了传统的conv和mlpconv之间的区别:

  • mlpconv在普通的卷积后面接了一个多层感知机MLP
  • 在conv与MLP之间的连接采用的是global average pooling的方法:使得conv后的每一层特征通过全局平均产生一个元素,形成一个向量,然后在进行MLP,从而这样形成的特征层可以表示为分类目标的置信层(confidence map)

创新点二:global average pooling

一般的卷积神经网络,又CNN+FC构成,FC负责分类,最终的分类目标有多少类,则最后的输出多少维的向量,对应类别信息。但是,在CNN最后的特征层到FC是一个全联接,导致这部分的参数占据了整个网络参数的大部分,而且全联接很容易导致过拟合(overfitting)。

作者提供了一种全新的从特征层到最终的分类目标–global average pooling。该方法使得最终的特征层的深度等于最终的分类目标的种类数,然后后面紧跟一个全局平均池化,从而可以将特征层转化为一个分类向量,和最终的分类结果产生了直接的联系。

 *该方法大大的减少了模型的参数,由于该连接方式没有参数,从而没有计算,大大减少了计算量,提高了计算速度 *该方法有效避免过拟合 *可解释性非常强,可以讲最终的feature map看作最终分类目标的confidence map

这里写图片描述
从上图中,可以看出最终的特征层与分类目标之间具有很强的相关性。

网络结构

这里写图片描述
论文中给出的结构如上图,作者将mlpconv作为一个最小单元,然后多个mlpconv叠加在一起,然后生成一个n(分类目标数量)层的特征层,最后通过global average pooling生成一个输出向量(n维,每一特征层生成一维)。

详细的结构可以参考下图:
这里写图片描述
【来源】

效果分析

首先作者在不同的数据集上进行了对比,发现该方法具有很好的效果:

这里写图片描述

 在cifar10数据集上,可以达到state-of-the-art的效果,而在cifar100,SVHN, MINST上面也达到了很好的效果

这里写图片描述
这里写图片描述
这里写图片描述

作者最后也进一步试验,强调了global average pooling和fc相似,都具有扮演着线性变换的作用,将特征图转化为特征向量,但前者相比较fc的方法效果更好
这里写图片描述

参考资料

https://arxiv.org/pdf/1312.4400.pdf
http://www.cnblogs.com/yinheyi/p/6978223.html
http://blog.csdn.net/hjimce/article/details/50458190

原创粉丝点击