GoogLeNet网络

本篇文章是对“Going deeper with convolutions”这篇论文的读后总结。
文章作者说明了为什么网络的结构叫GoogLeNet,原文是这样说的:This name is an homage to Yann LeCuns pioneering LeNet 5 network. We also use GoogLeNet to refer to the particular incarnation of the Inception architecture used in our submission for the competition。

一、目的

1.1问题的提出

通常有两种方法来提升深度网络的性能:1、增加网络的深度(增大网络层数),2、增加网络的宽度(增加层的节点数)。
但是这样会带来两个问题:1、大的网络结构,也就意味着有大量的参数,这容易导致网络的过拟合,特别是训练集有限的情况下;2、大网络也意味着计算的巨大。

1.2问题的解决方法

解决1.1中两个问题的方法:将全连接转换成稀疏连接。这个的理论基础在论文中的参考文献【2】有给出:如果数据的概率分布可由一个大的,非常稀疏的深度网络来表示,则可通过分析上一层**值的统计相关性以及聚类高相关性的节点来逐层建立。当然严格的数学证明需要非常严格的前提条件,但是在实际应用中,条件要求可以不那么的严格。

二、Inception网络

2.1结构图

GoogLeNet网络
从上图看,Inception的结构和一般的卷积网络很不一样,常用的卷积网络是一个串行的网络,而Inception网络有并行的结构。为什么要设计这样的一个结构呢。

2.2网络结构的由来

当前计算架构在进行非均匀的稀疏数据计算时,其效率非常低:因为查表的天花板以及cache的击中率问题,导致稀疏矩阵的计算效率不高。而且,非均匀稀疏模型需要更为复杂的工程和计算结构。
曾经为了打破对称性和提高学习效率,卷积网络采用随机和稀疏链接表。但是现在卷积网络更趋向于采用全连接,因为这样可以更好的优化并行计算。
因此这就有一个问题:有没有一种结构,能利用稀疏性(即使是在filter层),但是能在当前硬件上运行稠密矩阵计算。
文献【3】表明将稀疏矩阵聚类成相对稠密的子矩阵有利于提升稀疏矩阵乘法的性能。
Inception结构就是这样的一种结构:用稠密矩阵组件来逼近稀疏矩阵。

三、GoogLeNet结构说明

3.1结构

GoogLeNet网络

3.2说明

googLeNet几点注意之处:
1)增加了Inception结构,但是与之前的Inception结构不同;
2)底层的几层与传统的一样,是从较高层开始采用Inception结构的叠加;
3)多了两个softmax层进行反向反馈。

1、新Inception

新Inception的结构如下
GoogLeNet网络
与旧Inception对比,新的Inception结构增加了几个1-1的卷积层。
由旧的Inception结构搭建的网络中,顶层的卷积层的filter数量会非常多,这会导致计算量的爆炸。
因此作者在计算量增加多的地方应用了降维和映射的方法。这个方法基础是嵌入的成功应用:低维嵌入也包含了很多大图像块的信息。
因此采用了1-1卷积层来降低计算量。

2、底层的几层

底层采用传统的卷积层并不是必须要严格遵守的,只是这样做的效果似乎比较好。

3、多个softmax层

增加softmax层主要是和较深的网络训练有关。作者发现网络中间层的特征具有很强的可分性。在中间层增加分类器,并将梯度信号反馈回去,提供额外的正则化。
在训练阶段,把这些分类器的损失与一个系数加权增到到总的损失中。在测试的时候,这些辅助的分类器就不用了。