首页 理论教育 深入剖析GoogLeNet与Inception网络结构

深入剖析GoogLeNet与Inception网络结构

时间:2023-06-28 理论教育 版权反馈
【摘要】:来自谷歌的Christian Szegedy开始追求减少深度神经网络的计算开销,并设计出GoogLeNet——第一个Inception架构。他和他的团队提出了Inception模块。图A.9 Inception模块初看之下这不过是1×1、3×3、5×5卷积过滤器的并行组合。但是Inception的伟大思路是用1×1的卷积块在昂贵的并行模块之前减少特征的数量。GoogLeNet使用没有Inception模块的主干作为初始层,之后是与NiN相似的一个平均池化层加Softmax分类器。

深入剖析GoogLeNet与Inception网络结构

来自谷歌的Christian Szegedy开始追求减少深度神经网络的计算开销,并设计出GoogLeNet——第一个Inception架构(参见:Going Deeper with Convolutions)。

2014年秋季,深度学习模型在图像与视频帧的分类中变得非常有用。鉴于这些技术的用处,谷歌这样的互联网巨头非常有兴趣在他们的服务器上高效且大规模庞大地部署这些架构。

Christian考虑了很多关于在深度神经网络达到最高水平的性能(例如在ImageNet上)的同时减少其计算开销的方式;或者在能够保证同样的计算开销的前提下对性能有所改进。他和他的团队提出了Inception模块(见图A.9)。

图A.9 Inception模块

初看之下这不过是1×1、3×3、5×5卷积过滤器的并行组合。但是Inception的伟大思路是用1×1的卷积块(NiN)在昂贵的并行模块之前减少特征的数量。这一般被称为瓶颈(Bottleneck)。这部分内容将在下面的瓶颈层(Bottleneck Layer)部分来解释。

GoogLeNet使用没有Inception模块的主干作为初始层,之后是与NiN相似的一个平均池化层加Softmax分类器。这个分类器比AlexNet与VGG的分类器的运算数量少得多。

受到NiN的启发,Inception的瓶颈层(Bottleneck Layer)减少了每一层的特征的数量,并由此减少了运算的数量;所以可以保持较低的推理时间。在将数据通入昂贵的卷积模块之前,特征的数量会减少4倍。在计算成本上这是很大的节约,也是该架构的成功之处。

下面具体验证一下:现在有256个特征输入,256个特征输出,假定Inception层只能执行3×3的卷积,也就是总共要完成256×256×3×3的卷积(将近589000次乘积累加(MAC)运算)。这可能超出了计算预算,比如,在谷歌服务器上要以0.5 ms运行该层。作为替代,减少需要进行卷积运算的特征的数量,也就是64(即256/4)个。在这种情况下,首先进行256->641×1的卷积,然后在所有Inception的分支上进行64次卷积,接而再使用一个来自64->256的特征的1×1卷积,运算如下:(www.xing528.com)

256×64×1×1=16000s

64×64×3×3=36000s

64×256×1×1=16000s

相比于之前的60万,现在共有7万的计算量,几乎减少了近10倍。

而且,在获得了更好的运算的同时此层并没有损失其通用性(Generality)。事实证明,瓶颈层在ImageNet这样的数据集上已经表现出了顶尖水平,而且它也被用于接下来介绍的ResNet这样的架构中。

它之所以成功是因为输入特征是相关联的,因此可通过将它们与1×1卷积适当结合来减少冗余。然后,在小数量的特征进行卷积之后,它们能在下一层被再次扩展成有意义的结合。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈