深度学习三人行(第11期)----CNN经典网络之GoogLeNet

原创
2018/12/03 08:00
阅读数 45

上一期,我们一起学习了深度学习卷积神经网络中的经典网络之LeNet-5和AlexNet,

深度学习三人行(第10期)----CNN经典网络之LeNet-5和AlexNet

接下来我们一起学习下关于CNN中的另一个比较经典的网络GoogLeNet的相关知识,学习的路上我们多多交流,共同进步。本期主要内容如下:

  • Inception Module

  • GoogLeNet 构成

  • 小结

GoogLeNet网络是由Christian Szegedy在Google Research中发展起来的,该网络赢得2014年ILSVRC的冠军,成功的把top-5的错误率降到了7%,很大一个原因就是因为这个网络比之前介绍的CNN有更深的层。虽然层数更深,但是权重参数却是更少,比前面学的AlexNet网络要少上10倍。为什么呢?



一. Inception Module

那是因为该网络中有很大一部分的子网络是由如下图的Inception Module组成,我们来看一下下面的这个Inception Module:

其中表示“3x3+1(S)”表示该层的卷积核大小为3x3,stride为1,S means SAME padding。从上面的网络可以看出,首先输入信号被copy并输入到四个不同的层中,所有的卷积层都用ReLU激活函数。注意到上面的卷积层用的分别用1x1, 3x3, 5x5的卷积核,这样有助于捕捉到不同尺度的pattern。还有每个层都用了SAME padding,这就意味着,输入图像的宽高和输出的宽高是一致的,这就能够使得最终的Depth Concat能够实现(不同size的图像无法叠加)。在TensorFlow中,Depth Concat的实现是由concat()函数实现的,将其中的参数axis设为3.

我们可能已经发现,为什么会有一些卷积核的size是1x1呢?由于只有一颗像素,所以这些卷积层其实是无法获取任何特征的。事实上,这种层有两个目的:

  • 首先就是降维,这些层的作用是使得输出的深度比输入的低,所以又称为瓶颈层,这样就达到一个降维的目的。这个效果在3x3和5x5的卷积层之前就特别有效,大大降低了训练权重的数量。

  • 还有就是每一对([1x1,3x3]和[1x1,5x5])的卷积层,像一个强大的卷积层,能够捕获更为复杂的pattern.事实上确实如此,一个单层的卷积层就像是一个简单的线性分类器滑过图像,而该组合相当于是两层神经网络滑过图像。

每一个卷积层中卷积核的数量都是一个超参数,这就意味着一个Inception Module就有6个超参数需要调节。



二. GoogLeNet 构成

来我们一起看下GoogLeNet的构成,如下图。图中包含有9个inception module(图中带有螺旋形的标识)。inception module上的6个数字分别对应上图中每一个卷积层的输出个数。并且图中所有的卷积层都使用ReLU激活函数。

我们来一起看下这个网络:

  • 为了降低计算负载,前两层的stride=2,意味着将图像的宽高分别除以4,面积缩小到之前的1/16。

  • 为了使前面的层能够学到更多的特征,接着用了局部响应正则化(上期一起学过的)。

  • 再接下来就是两个卷积层,类似一个瓶颈层,可以看做是一个智能卷积层。

  • 下面又是一个局部响应正则化的层,来保证能够学到更多的特征。

  • 接着用一个stride为2的最大值池化层来降低计算负载。

  • 接着就是9个inception module,中间插了两个最大值池化层,来降维加速 。

  • 接下来用了一个均值池化层,并且VALID padding。输出图像的size为1x1,这种策略称为全局均值池化。该策略能够很好的强迫之前的层输出更为有效的特征,因为其他特征将会被均值被过滤掉。这样就使得后面的全连接层比较少,没有必要像AlexNet那样有好几个全连接层。

  • 最后就不说了,一个Dropout正则化,一个全连接层和softmax激活函数来获取输出结果。

上面的这个图相对来说更简单一些,原始的GoogLeNet在第三个和第六个inception module顶端还包含了两个辅助的分类器,他们都是由一个均值池化层,一个卷积层,两个全连接层和一个softmax激活层组成。在训练期间,他们损失的70%被加到网络整体损失中,这样做是为了防止梯度消失,并且正则化网络。然而,效果却相对较小。



三. 小结

今天,我们一起学习了卷积神经网络的经典框架GoogLeNet网络的组成,以及其原理,希望其组成能够对我们构建网络有所启发,在学习的路上,我们共同进步,多谢有你。

(如需更好的了解相关知识,欢迎加入智能算法社区,在“智能算法”公众号发送“社区”,即可加入算法微信群和QQ群)



本文分享自微信公众号 - 智能算法(AI_Algorithm)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部