Going deeper with convolutions(GoogLeNet、Inception)
从LeNet-5开始,cnn就有了标准的结构:stacked convolutional layers are followed by one or more fully-connected layers。对于Imagenet这种大的数据集,趋势是增加层数和层的大小,用dropout解决过拟合。
1×1卷积核在Inception中大量使用,两个作用:dimension reduction and rectified linear activation(即增加非线性)(维度降低减少参数;并增加模型深度,提升模型表征能力;促进不同层之间的信息交流)
提升深度神经网络的最直接方式是increasing their size,这个size包含两个方面含义,depth和width。但这个方式也有两个主要的缺点:
1.bigger size就会有更多的参数,容易造成过拟合,特别是在训练数据有限的情况下。
2.使用大量的计算资源
最基本解决这两个问题的方式是将全连接改为稀疏连接。
Inception的主要思想是在卷积网络中找到一个局部最优稀疏结构,然后稀疏地重复这个结构。
对于naive版本的Inception,因为所有的卷积核都在上一层的所有输出上来做,那5×5的卷积核所需的计算量就太大了(参数太多)。当pooling单元加入之后这个问题更加明显:输出滤波器的数量等于前一步中滤波器的数量(这句话就说明了多通道的池化在每个通道进行池化,经过池化后并不会改变通道数量),pooling层的输出和卷积层的输出融合会导致输出数量逐步增长。即使这个架构可能包含了最优的稀疏结构,还是会非常没有效率,导致计算没经过几步就崩溃。因而,可以采用NIN中的方法对上一层的输出进行合并(使用1×1卷积核进行特征降维)。这样就衍生出了真正可用的Inception。
Inception网络符合直觉:visual information should be processed at various scales and then aggregated so that th next stage can abstract features from different scals simultaneously
特征降维:192个feature map可以理解为192维的特征,使用1x1把192个feature map转化为96个feature map,相当于进行特征降维
https://baijiahao.baidu.com/po/feed/share?wfr=spider&for=pc&context=%7B%22sourceFrom%22%3A%22bjh%22%2C%22nid%22%3A%22news_3570975145242505168%22%7D
1*1如何降低参数数量http://www.jianshu.com/p/ba51f8c6e348