Network In Network——卷积神经网络的革新

Network In Network 是13年的一篇papergit

引用:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013.github

 

文章的新点:

1. 采用 mlpcon 的结构来代替 traditional 卷积层;  网络

2. remove 卷积神经网络最后的 全链接层,采用 global average pooling 层代替;函数

 

mplconv 结构的提出:

conventional 的卷积层 能够认为是linear model , 为何呢,由于 局部接收域上的往往一个tile 与 卷积核进行加权求和,而后接一个激活函数;它的 abstraction 的能力不够, 对处理线性可分的的 concept 也许是能够的,可是更复杂的 concepts 它有能力有点不够了,因此呢,须要引入 more potent 的非线性函数;学习

基于此,提出了 mlpcon 结构,它用多层的感知器(其实就是多层的全链接层)来替代单纯的卷积神经网络中的 加 权求和; mlpcon 指的是: multilayer perceptron + convolution;ui

 

二者的结构以下所示:其中下图的 Mlpconv 的有两层的隐含层;.net

   image

说明:在mlpconv中的每一层的后面都跟着一个 ReLU激活函数;用于加入更多的nonlinearity;blog

 

global average pooling 结构:

卷积神经网络最后的全链接层能够说做为了一个分类器,或者做为了一个 feature  clustering.   它把卷积层学习到的特征进行最后的分类;   intuitively, 根本不了解它是怎么工做的, 它就像一个黑盒子同样,而且它也引入了不少的参数,会出现 overfitting 现象;   (我认为其实最后的 全接层就是一个分类器)图片

本文,remove掉了 全链接层, 使用 global average pooling 来代替; 举个例子更容易说明白: 假设分类的任务有100 classes,  因此设置网络的最后的 feature maps 的个数为 100, 把每个feature map 看做成 对应每一类的 几率的相关值 ,而后对每个 feature map 求平均值(即 global average pooling), 获得了 100维的向量, 把它直接给 softmax层,进行分类;(其实100个数中最大值对应的类别即为预测值, 之因此再送给 softmax层是为了求 loss,用于训练时求梯度)rem

 

网络的总体结构:

image

(原 paper 中的图)

image

(该图来自:http://blog.csdn.net/hjimce/article/details/50458190 ,加入了相关的参数。我怎么找到这个图呢???? 难道 楼主本身 根据 caffe 中的 .prototxt 文件的加上的??)

 

mlpconv 的细节:

输入为一个feature map, 输出为一个feature map 时:

image

输入为多个feature map, 输出为一个feature map 时:

image

输入为多个feature map, 输出为多个feature map 时:

image[49]

 

发现了什么 ?

在 卷积神经网络中,不管是输入仍是输出,不一样的 feature map 之间的卷积核是不相同的;

在mlpconv中,不一样的 feature map 之间的开头与能结尾之间的权值不同,而在 隐含层之间的权值是共享的;

 

另外:

全链接层之间能够看做一特殊的卷积层,其中卷积核的大小为 1*1, feature maps的 个数即为全链接层中的每一层的units的数目;

因此呢,假设上面的第三个图中的输入为2*(4 *4), 输出为2 * (3*3)时:

    第一层的卷积核大小为2*2, 步长为1, 输入为2*(4 *4), 输出为 4*(3*3);

    第二层的卷积核大小为1*1, 步长为1, 输入为4*(3 *3), 输出为 3*(3*3);

    第三层的卷积核大小为1*1, 步长为1, 输入为3*(3 *3), 输出为 2*(3*3);

 

global average pooling 的细节:

当分类的类别有4种时,则最后的 global average pooling 应该是这样的:

image

 

NIN结构的caffe实现:

由于咱们能够把全链接层看成为特殊的卷积层,因此呢, NIN在caffe中是很是 容易实现的:

https://github.com/BVLC/caffe/wiki/Model-Zoo#network-in-network-model

这是由BVLC(Berkeley Vision Learning Center)维护的一个caffe的各类model及训练好的参数权值,能够直接下载下来用的;

 

其它:

文中的观点:经过实验说明了 global average pooling 也能够起到很好的 regular的做用。

另外,一个比较有趣地地方就是:在 可视化最后一层 feature maps时,它的激活区域与原始图片中目标所在的区域居然类似;amazing!

 

补充:

文中大量用到了文献:Maxout networks.  (引用:Goodfellow I J, Warde-Farley D, Mirza M, et al. Maxout networks[J]. arXiv preprint arXiv:1302.4389, 2013.)

文中也说明了 NIN比 maxout networks 更 non-linearity;

后续颇有必要看一下 文献 maxout networks 这个paper, 它具备很好的价值;

 

参考文献:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013.

相关文章
相关标签/搜索