您的位置:首页 > 编程语言 > Go语言

【深度学习】Inception的前世今生(一)--GoogLeNet

2017-12-29 16:42 369 查看
论文名称《Going Deeper with Convolution》

论文链接:https://arxiv.org/abs/1409.4842

在2014年ILSVRC比赛上,GoogleNet 用了仅仅是AlexNet的12%的参数量,却拿到了分类top-5的第一名。在之前的深度学习网络的设计中,会存在两个重要缺陷:

1) 更深更宽的网络模型会产生巨量参数

2) 网络规模的加大会极大的增加计算量

解决这个两个缺陷的根本方法是将全连接甚至一般的卷积转换成稀疏连接。在现实中,生物的神经系统则是稀疏的,因此研究者认为大型神经网络的合理连接方式也应该是稀疏的。受生物学上的Hebbian定理的启发,《Provable Bounds for Learning Some Deep Representations》文章指出:如果数据集的概率分布可以被一个很大很稀疏的神经网络的神经网络所表达,那么构筑这个网络的最佳方法是逐层构筑网络:将上一层高度相关的结点聚类,并将聚类出来的每一个小簇连接到一起。

然而文章指出:今天的计算架构在计算非均匀稀疏数据的时候效率很低。尽管使用稀疏矩阵,并且将算术操作降低100倍,但是在计算的时候可能并不能得到pay off。原因是目前的CPU和GPU所使用的底层计算库更偏向于密集矩阵的高性能计算。

这样就提出了一个问题:是否有一种方法,既能保持网络结构的稀疏性质,又能利用密集矩阵的高计算性能。在这个问题上,google提出了Inception结构。

那么在介绍GoogLeNet之前,我们将上述描述总结一下,也就是GooLeNet结构的主要思想是如何找出最优的局部稀疏结构并将其覆盖为近似的稠密组件。以我的理解是:就是通过计算dense矩阵来approach最优的稀疏结构。(说句题外话,这个14年的想法,在17年的今天依旧非常流行。目前在移动端和主流的分类网络中应用的group convolution可能灵感来源于此)

GoogLeNet模型特点

GoogLeNet采用Inception结构,不仅进一步提升了预测分类的成功率,而且极大的减少了参数量,分析其原因有以下特点

采用了模块化的结果,方便增添和修改

网络最后用average pooling代替全连接层,将Top-1的成功率提高了0.6%

网络移除了全连接层,但保留了dropout层

网络增加了两个辅助的softmax用于向前传导梯度,避免梯度消失

GoogLeNet模块设计



根据这幅图我再解释一下GoogLeNet的核心思路:如何用dense计算来approach 稀疏结构。

在一般的计算中,layer by layer中,一般是

previous layer — conv —Next layer

在googleNet中

previous layer —{conv1x1, conv3x3, conv5x5 } —Next layer

将之前中间的密集的conv 构建成了 三种conv计算,并在最后concat起来。然而对于每个conv分支,依然是dense computing。这便是用dense approach sparsity。

那么为什么要选取卷积核为1x1,3x3, 5x5的三种卷积核呢?

一方面:只是为了块对齐方便。卷积核大小设置为1,3,5。在卷积步长为1时,要分别设定pad为0,1,2,则卷积后就可以得到相同维度的特征。

另一方面:根据hebbian原理,将相关性高的一簇神经元节点连接在一起。在普通数据集中,这可能需要对神经元节点聚类,但是在图片数据中,天然的就是临近区域的数据相关性高,因此相邻的像素点被卷积操作连接在一起。《Tensorflow实战》这本书在描述GoogLeNet的时候,指出:在同一个空间位置但在不同通道的卷积核输出结果相关性极高。因此,一个1x1的卷积就可以很自然地把这些相关性很高的、在同一个空间位置但是不同特征通道的特征连接在一起,而稍微大一点的尺寸的卷积,比如3x3,5x5的数据相关性也很高,因此可以适当增大卷积核来增加多样性。而网络越到后面,特征也越抽象,每个特征所涉及的感受野也更大。因此随着深度的增加,3x3和5x5的卷积比例也增加。但是5x5的卷积核仍然会带来巨大的计算量,必须采用1x1卷积核进行降维。因此结构也就成了下面这个样子。



最后附一个比较容易理解Inception结构的想法:

Angrew Ng在他的课上说:其实GoogleNet可以这么理解,当你不知道用1x1,3x3还是5x5的卷积核来调整网络哪个更好时,那么为什么不都尝试一下呢?那么这个就是Inception结构了

其他:

【深度学习】Inception的前世今生(三)–Inception V3

http://blog.csdn.net/shwan_ma/article/details/78326897

【深度学习】Inception的前世今生(四)–Inception V4,Inception-ResNet

http://blog.csdn.net/shwan_ma/article/details/78354073
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习