当前位置:   article > 正文

深度学习之GoogLeNet论文以及模型解读_googlenet模型介绍

googlenet模型介绍

     始于LeNet-5,一个有着标准的堆叠式卷积层冰带有一个或多个全连接层的结构的卷积神经网络。通常使用dropout来针对过拟合问题。 
 为了提出一个更深的网络,GoogLeNet做到了22层,利用inception结构,这个结构很好地利用了网络中的计算资源,并且在不增加计算负载的情况下,增加网络的宽度和深度。同时,为了优化网络质量,采用了Hebbian原理和多尺度处理。GoogLeNet在分类和检测上都取得了不错的效果。 



一、 基本思想及过程(Motivation)

    深度学习以及神经网络快速发展,人们不再只关注更给力的硬件、更大的数据集、更大的模型,而是更在意新的idea、新的算法以及模型的改进。

 

    一般来说,提升网络性能最直接的方式就是加大神经网络

            1、增加神经网络的深度,也就是网络层数。

            2、增加神经网络的宽度,也就是每一层的神经元个数。

但是这个会带来两个严重的缺点:

            1、网络参数增多,网络会更加容易陷入过拟合。那这就又需要大量的训练数据,而且高质量的额训练数据的成本很高。

            2、盲目的增加网络大小之后,同时也会增加大量的计算成本。也易造成网络计算资源的浪费

 

        文章认为解决上述两个缺点的根本方法是将全连接甚至一般的卷积都转化为稀疏连接。一方面现实生物神经系统的连接也是稀疏的,另一方面有文献表明:对于大规模稀疏的神经网络,可以通过分析激活值的统计特性和对高度相关的输出进行聚类来逐层构建出一个最优网络。这点表明臃肿的稀疏网络可能被不失性能地简化。 虽然数学证明有着严格的条件限制,但Hebbian准则有力地支持了这一点:fire together,wire together

        总的来说就是, 将全连接的方式改为稀疏连接来解决这两个问题。

 

         inception架构的主要思想是建立在找到可以逼近的卷积视觉网络内的最优局部稀疏结构,并可以通过易实现的模块实现这种结构。

 

下面开始讨论几个问题:

 

二、 inception模块

 

明确目的:使用稀疏连接替代稠密结构。

理论依据(Arora):一个概率分布可以用一个大的稀疏的深度神经网络表示,最优的结构的构建通过分析上层的激活状态的统计相关性,并把输出高度相关的神经元聚合。这与生物学中Hebbian法则“有些神经元响应基本一致,即同时兴奋或抑制”一致。

存在问题:计算机的基础结构在遇到稀疏数据计算时会很不高效,使用稀疏矩阵会使得效率大大降低。

目标:设计一种既能利用稀疏性,又可以利用稠密计算的网络结构。

 

存在问题模型中是怎样利用稀疏性的呢?稀疏性之后的计算量依然增加怎么办呢??

 

       答: 某一层激活的神经元只向下一层中特定的几个神经元传递激活信号,而向其他神经元几乎不传递信息,即仅有少部分连接是真正有效的,这也是稀疏的含义。

        然而另一方面,现代计算架构对稀疏的计算非常低效,更适合的是密集的计算,这样便产生了矛盾。而Inception单元的提出就是为了用密集的结构来近似稀疏结构,在建模稀疏连接的同时又能利用密集计算的优势。

        总的来说就是, 在同一层利用了不同的核去对输入的feature进行卷积把,分散成几个小任务进行,然后再汇聚。 channel的意思其实就是神经元的个数,这里降维的意思其实就是减少神经元的个数,比如原先的28*28*512 在1*1*256 之后 就是28*28*256(stride为1的情况), 这样在整个网络结构这一层就降维了,原作者发现在没有1*1之前的参数空间存在很多稀疏的数据,这里降维之后,参数空间会更dense,这样就解决了文章说的痛点(也就是稀疏性增大计算困难的问题)

        这两个是最原始的模型。可以看出,因为卷积并不一定就改变大小,而通道数目由于分散的连接最终会增加,这样很容易造成参数个数的指数级别的上升。论文中使用了NIN网络中提到的利用1*1卷积核降维的作用,在卷积层处理前,先对特征图层进行降维(注意是通道的降维,不是空间的降维),例如原本是M通道,降维到P通道后,在通过汇聚变成了M通道,这时参数的个数并没有随着深度的加深而指数级的增长。

 

三、 Auxililary Classifier(辅助分类器)

        这里是本文的另一个贡献,将监督信息传入中间的feature map,构成一个整合loss,作者认为这样有助于浅层特征的学习。 即将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中。这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个Inception Net的训练很有裨益。 (在测试阶段去除这个AC层)

四、GoogleNet架构与CNN源码

        下面的表显示了GoogLeNet的整体架构,可以留意到Inception单元的堆叠和Channel数在子路径中的变化。NetScope可视化可参见GoogLeNet Vis。源文件位于awesome_cnn

参考网址;

https://blog.ddlee.cn/posts/6b8a6ed1/#Auxililary-Classifier 

https://blog.csdn.net/u012679707/article/details/80824889

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/255311
推荐阅读
相关标签
  

闽ICP备14008679号