首先文章作者把传统CNN网络看成一个广义的线性模型GLM(generalized linear model)后面跟一个非线性激活函数(现在多用ReLU),而假设特征能够被GLM抽象即线性可分,那么对它的抽象程度是不够的(level of abstraction is low),或者说我们要假设特征是线性可分的(这是个强假设)。如果我们用一个非线性的模型代替GLM,无疑会提高整个模型对特征的抽象程度,而且不必有强假设的依赖(事实上大部分机器学习任务是线性不可分的)。
传统的CNN为解决这种不可分问题,会选择多个filter,即增加k的个数,来保证所有的变形都被分到正确的concept里,但是这样会造成两个问题 :1)首先随着k值增加,参数的个数随之急剧增加 2)k值较大对于下一层的学习也造成了影响,因为对于当前这一层当中相同概念的不同变形的filter,下一层必须要能够有一定的抽象处理。
MLP层(即文章中的micro network)解决了这两个问题,这也是文章主要的两个创新点(MLP convolutional layer、Global Average Pooling)之一.下面我们分别讲述这两个方面。
(1)MLP convolutional layer
相比于传统CNN卷积做法,multilayer perceptron的卷积核,实际相当于先做一个一般的卷积,再做几个1*1的卷积(只改变filter的个数,不改变feature map的大小),这一点与GoogleNet顺序相反,GoogleNet在inception v1结构里先做1*1的卷积,目的是减少参数量。
MLP的优点:
- 非常有效的通用函数近似器
- 可用BP算法训练,可以完美地融合进CNN
- 其本身也是一种深度模型,可以特征再利用
Global average pooling的合理性在于,经过了一个多层的复杂的网络之后,每一个filter代表的都是high-level的信息,而不是low-level的像一些曲线或者纹理之类的信息。对于这种high-level的信息,对整个feature map做pooling相当于检测这个map中有没有这个filter要检测的concept,这个pooling的结果已经可以很好地用来做分类或者检测之类的工作,不需要fully connected之后再训练分类器。
采用了NIN改进CNN后,我们增强了局部模型的表达能力,这样我们可以在分类层对特征图进行全局平均池化,这种方式更有意义和容易解释(可将最后一层输出的特征图的空间平均值解释为相应类别的置信度!为什么可以这样解释呢?因为在采用了微神经网络后,让局部模型有更强的抽象能力,从而让全局平均池化能具有特征图与类别之间的一致性),所以MLP可以看做是Global average pooling的前提工作。
全局平均池化的优势:
- 通过加强特征图与类别的一致性,让卷积结构更简单
- 大大减少参数,避免了全连接层的参数优化,所以这一层可以避免过拟合(因为全局平均池化本身就是一种结构性的规则项)
- 它对空间信息进行了求和,因而对输入的空间变换更具有稳定性
总结:NIN的主要贡献我认为是MLP卷积层,这与VGG net、GoogleNet的增加网络深度思想是相通的,我理解增加网络的深度会提高对特征的抽象程度所以得到更好结果。
参考博客:
http://www.cnblogs.com/anyview/p/5105181.html
http://blog.youkuaiyun.com/hiterdu/article/details/45418545