首页 > 代码库 > Going deeper with convolutions(GoogLeNet、Inception)

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

 

 

 

 

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

Going deeper with convolutions(GoogLeNet、Inception)