深度学习之GoogleNet and ResNet

来源:互联网 发布:淘宝上比较好的女装 编辑:程序博客网 时间:2024/05/22 02:29

GoogleNet

最近上讨论课,看了Googlenet和Resnet两篇论文,知道大概的神经网络框架,都是在Alexnet(论文:ImageNet Classification with Deep Convolutional Neural Networks)的基础上来进行修改,层数的增加,使得过拟合的问题更加严重,所以Googlenet想到通过计算稀疏结构来一定量减少过拟合的问题,即图1。其中1*1,3*3,5*5卷积最后一起求和就是为了计算稀疏结构。
图1

图1 inception结构

由于稀疏结构的计算量大的问题,所以采用1*1的卷积来减少参数的计算,其中1x1 卷积解释为:
在3X3和5X5层前,各自增加一个1X1的卷积操作。1X1的卷积(或者网络层中的网络),提供了一个减少维度的方法。比如,我们假设你拥有一个输入层,体积是100x100x60(这并不定是图像的三个维度,只是网络中每一层的输入)。增加20个1X1的卷积滤波器,会让你把输入的体积减小到100X100X20。这意味着,3X3层和5X5层不需要处理输入层那么大的体积。这可以被认为是“池特征”(pooling of feature),因为我们正在减少体积的高度,这和使用常用的最大池化层(maxpooling layers)减少宽度和长度类似。另一个需要注意的是,这些1X1的卷积层后面跟着的是ReLU 单元,这肯定不会有害。
有了下面的这种结构形式,叫inception:这个inception模型由一个网络层中的网络、一个中等大小的过滤卷积、一个大型的过滤卷积、一个操作池(pooling operation)组成。网络卷积层中的网络能够提取输入体积中的每一个细节中的信息,同时 5x5 的滤波器也能够覆盖大部分接受层的的输入,进而能提起其中的信息。你也可以进行一个池操作,以减少空间大小,降低过度拟合。在这些层之上,你在每一个卷积层后都有一个ReLU,这能改进网络的非线性特征。基本上,网络在执行这些基本的功能时,还能同时考虑计算的能力。这篇论文还提供了更高级别的推理,包括的主题有稀疏和紧密联结,即图2。
图2

图2 inception结构(加上1x1卷积)

上图参数亮的减少就是依靠1*1卷积的通道数来减少参数量。如下图3多通道卷积过程。
图3

图3 多通道卷积过程

上图输入为7*7*3,其中7代表图片的尺寸,填0的作为是为了控制维数,在inception中,各个过程(1*1,3*3,5*5)卷积之后维数不同,通过填0来控制维数相同,下面会解释。其中3代表一幅图片的RGB3通道,同样的对应三个通道的卷积核,其中通道数一定与输入通道数一致,其中的数值是先初始化任意数值,通过BP过程修改其中的权值,最后得到一个好的卷积模版,过程是如上图,对应通道用对应的卷积核卷积得到的值,三个通道相加起来最后加上偏置项,从而得到绿色方框中对应位置的值,这样就得到一个特征图(feature map),w0,w1分别代表两种卷积核,也就是说这里的例子又两个卷积核,两个卷积核的通道数都与输入图像通道数相同,如上图对应蓝框与红框加权求和结果分别为(2*1)+(2*1+1*1+2*1)+(0)+1=8。这里的两个绿框就代表两个特征图,下一层的输入也就是这两个特征图了。其中特征图的尺寸由((输入图像尺寸(填0前,也就是原始大小)-卷积核尺寸+2*填0单位长度)/卷积核移动步长)+1得到,由于向两边填0,所以这里乘以2,这里也就是((5-3+2*1)/2)+1=3,注意这里能看出步长为2。这里填0圈数,以及步长的设置就可以决定输出的维数,所以达到控制维数大小的作用。
然后解释下inception中如何利用1*1卷积减少参数计算:像我们一般的想法,卷积就是用卷积核来进行加权求和,1*1不就只能达到改变灰度值,缩放的这么一个作用吗?但是这只是针对单通道,但是卷积神经网络中的卷积大多都是多通道的如图3所示。在图一中,假设1*1,3*3,5*5的通道数分别为64,128,32,图像的大小为28*28,通道数为192,所以计算量为1*1*192*64+3*3*192*128+5*5*192*32=387072(不懂为什么这里卷积的通道数之和不等于输入的通道数),在图二中,加入了1*1卷积核,在3*3,5*5,pooling加入的1*1卷积核的通道数分别为96,16,32(不明白为什么同样卷积核通道数之和不为输入的通道数,这样怎么具体计算呢,按照图三的过程?)计算量为1*1*192*64+1*1*192*96+3*3*96*128+1*1*192*16+5*5*16*32+1*1*192*32=163328,故387072/163328=2.37,减少了两倍多的参数量计算。参考博客
最后贴一下googlenet的网络框架来总体理解。
图四

图4 GoogleNet

ResNet

ResNet就是利用图下的结构。
Resnet

图5 残差结构

图左说明的是一个残差网的基本概念,即卷积的结果在额外加上输入的x然后在到下一层计算的这个过程,能完全解决梯度消失/爆炸的问题,所以也用不着googlenet中的incetion结构来计算稀疏(防止过拟合)的这么一个过程了,但是这样做的计算量也是非常大的,所以利用googlenet中提出的1*1卷积的这么一个概念,道理同上来减少参数量的计算,具体这个结构怎么解决梯度消失/爆炸,等我在研究研究再来补充,这里只说个大概的思路。下面贴一下Resnet的网络结构。
这里写图片描述

图6 ResNet

1 0
原创粉丝点击