AI-经典深度神经网络总结

从以下三个方面把握:

1)网络整体结构是怎样的?

2)创新点是什么?(包含网络结构的创新和比较新颖的激活函数等方法)

3)创新点可以带来什么好效果?为什么?

主要讨论CNN的发展,将按下图的CNN发展史进行描述:

                                   

  • LeNet-5

                             

池化层使用avg pooling ,激活函数使用sigmoid 函数和tanh函数,层与层稀疏连接减少计算复杂度,LeNet网络在池化层之后再进行非线性处理(即激活函数),现在的操作是经过卷积之后就经过非线性处理(激活函数),然后再进行池化操作

1、C1层是一个卷积层(通过卷积运算,提取局部特征)

第一层使用5*5大小的过滤器6个,步长s = 1,padding = 0。即:由6个特征图Feature Map构成,特征图中每个神经元与输入中5*5的邻域相连,输出得到的特征图大小为28*28*6。C1有156个可训练参数(每个滤波器5*5=25个unit参数和一个bias参数,一共6个滤波器,共(5*5+1)*6=156个参数),共156*(28*28)=122,304个连接。

2、S2层是一个下采样层(平均池化层)(降低图像维度)。

第二层使用2*2大小的过滤器,步长s = 2,padding = 0。即:特征图中的每个单元与C1中相对应特征图的2*2邻域相连接,有6个14*14的特征图,输出得到的特征图大小为14*14*6。池化层只有一组超参数 f 和 s,没有需要学习的参数。 

3、C3层是一个卷积层

第三层使用5*5大小的过滤器16个,步长s = 1,padding = 0。即:由16个特征图Feature Map构成,特征图中每个神经元与输入中5*5的邻域相连,输出得到的特征图大小为10*10*16。C3有416个可训练参数(每个滤波器5*5=25个unit参数和一个bias参数,一共16个滤波器,共(5*5+1)*16=416个参数)。

4、S4层是一个下采样层(平均池化层)

第四层使用2*2大小的过滤器,步长s = 2,padding = 0。即:特征图中的每个单元与C3中相对应特征图的2*2邻域相连接,有16个5*5的特征图,输出得到的特征图大小为5*5*16。没有需要学习的参数。 

5、F5层是一个全连接层

有120个单元。每个单元与S4层的全部400个单元之间进行全连接。F5层有120*(400+1)=48120个可训练参数。如同经典神经网络,F5层计算输入向量和权重向量之间的点积,再加上一个偏置。

6、F6层是一个全连接层

有84个单元。每个单元与F5层的全部120个单元之间进行全连接。F6层有84*(120+1)=10164个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。

7、Output输出层

输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。 换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧式距离。输入离参数向量越远,RBF输出的越大。用概率术语来说,RBF输出可以被理解为F6层配置空间的高斯分布的负log-likelihood。给定一个输式,损失函数应能使得F6的配置与RBF参数向量(即模式的期望分类)足够接近。

                                                 

  •  AlexNet

AlexNet总结:

输入尺寸:227*227*3

卷积层:5个

降采样层(池化层):3个

全连接层:2个

输出层:1个。1000个类别

                                         

                                              

 NORM1=NORM2:local_size=5

输入图像:227x227x3的RGB图像(实际上原文中使用的图像是224x224x3,推导的时候使用227x227x3会好一点)

Filter1:11x11,stride=4,得到Conv1:55x55x96

Max-POOL1:3x3,stride=2,得到Conv2:27x27x96

Filter2: 5x5,padding=same,得到Conv3: 27x27x256

Max-Pool2: 3x3,stride=2,得到Conv4: 13x13x256

Filter3: 3x3,padding=same,得到Conv5: 13x13x384

Filter4: 3x3,padding=same,得到Conv6: 13x13x384

Filter5: 3x3,padding=same,得到Conv6: 13x13x256

Max-Pool3: 3x3,stride=2,得到Conv7: 6x6x256

然后将Conv7展开,得到一个长度为6x6x256=9216的向量,经过第一个全连接层,得到FC1: 4096,经过第二个全连接层

得到FC2: 4096,最后使用softmax函数输出识别的结果。

AlexNet包含大约6000万个参数。AlexNet使用了ReLU激活函数;AlexNet也使用了LRN层(Local Response Normalization,局部响应归一化层),但是由于LRN可能作用并不大,应用的比较少。

 AlexNet新特点:

(1)第一次使用ReLU作为CNN激活函数,解决了Sigmoid在网络较深的时候梯度弥散的问题,加快了训练速度。

(2)训练时使用Dropout,避免过拟合。AlexNet主要在最后全连接层使用了Dropout。

(3)在CNN使用了重叠的最大池化,避免了平均池化的模糊化效果。并提出了让步长比池化核的尺寸小,这样池化层输出之间有重叠,提升了特征的丰富性。

(4)提出了LRN层,对局部神经元的活动创建了竞争机制,使得其中响应比较大的值变得相对更大,并抑制了其他反馈较小的神经元,增强了模型的泛化能力。减少高激活神经元数量,提高训练速度,抑制过拟合。

(5)使用CUDA加速深度卷积网络训练,利用GPU强大的并行计算能力。

(6)数据增强,随机从原始图像截取224*224大小区域以及水平翻转镜像。预测的时候,取图片的四个角加中间共5个位置,左右翻转,一共获得10张图片,预测对10次结果求平均值。

(7)batch size 128  SGD Momentum 0.9  learning rate 1e-2  L2 weight decay 5e-4

(8)CNN ensemble:18.2%->15.4%

                                                

  • ZFNet 

                              

基于AlexNet进行微调(AlexNet使用了两块GPU稀疏连接结构,ZFNet用了一块GPU的稠密连接结构;改变了AlexNet第一层:滤波器大小从11*11变成了7*7,步长变成了2),Top5错误率11.2%,使用ReLU激活函数和交叉熵损失函数

特点:(1)使用反卷积,可视化feature map。前面层是物理轮廓、边缘、颜色、纹理等,后面的层学习是与类别相关的抽象特征。

           (2)使用了更小的卷积核和步长,保留了更多的特征

           (3)通过遮挡,找出了决定图像类别的关键部位。通过实验,说明了深度增加,网络可以学习到更具有区分特征

           (4)网络训练时,低层参数收敛快,越到高层,需要越长时间训练才能收敛

 

  •  VGG Net

                                      

VGG Net最突出的特征是大量的使用 3x3 (部分架构中还采用了 1x1 )的小卷积核,并且采用 same padding 来维持卷积前后的 w 和 h,Feature map 的缩放完全交给 2x2 的 max pooling 层来完成,此后基本上所有的卷积神经网络的卷积核都采用 3x3 的尺寸。也正因为采用这个简单的、小的卷积核结构,才使得 VGG 成为同时代网络中最经典的深度神经网络。

在深度神经网络中采用小卷积核的原因:小卷积核通过多层叠加后可以在输入层取得与大卷积核同等规模的感受野,三层的3x3 conv 的感受野相当于一层的7x7的conv的感受野。且由于网络层次的增加会同步增加网络的容量 model capacity 和复杂度 model complexity,进一步地,通过叠加多个层次的卷积核还可以减少模型的参数:例如对于通道数为 C 的输入和输出来说,采用 7x7 的卷积核需要的参数是 7x7xCxC = 49C2 个,而通过叠加 3 层 3x3 的卷积核所需要的参数数量为 3 x [3x3xCxC] = 27C2 个。

在 VGG 的架构中,作者采用 1x1 卷积的主要目的在于增加网络中的非线性,采用与原有输入特征相同通道数量的 1x1 的卷积结构,执行卷积前后不改变特征的表达的数量,但根据作者的经验在同等架构下带有 1x1 结构的网络表现不如 3x3 的网络,因此在后续广为沿用的 VGG 架构都是单纯的 3x3 网络。

一个值得注意的细节是,为了使得网络具有缩放不变性,作者在训练时先将全部图片缩放至 384x384 的尺寸,在此基础上随机裁剪 224x224 的图片区域作为网络的输入,最后再用经过在指定范围内进行尺寸缩放的图片进行微调。另一个细节是作者在测试时采用了很多比较高明的技巧如 Ensemble 和 multi-crop 等方法使得测试的结果得到了一定的提升,不过这些提升一般只在竞赛中有意义,在真实的生产环境中应用很少。

                                      

 

VGG成功的原因 :更深的卷积神经网络,更多的卷积层和非线性激活函数,提升分类准确率;使用规律的多层小卷积替代大卷积,减少参数数量,提高训练收敛速度;部分网络层参数的预初始化,提高训练收敛速度 

  • GoogleNet 

Inception的作用:代替人工确定卷积层中的过滤器类型或者确定是否需要创建卷积层和池化层,即:不需要人为的决定使用哪个过滤器,是否需要池化层等,由网络自行决定这些参数,可以给网络添加所有可能值,将输出连接起来,网络自己学习它需要什么样的参数。

(1)显然GoogLeNet采用了Inception模块化(9个)的结构,共22层,方便增添和修改; 
(2)网络最后采用了average pooling来代替全连接层,想法来自NIN,参数量仅为AlexNet的1/12,性能优于AlexNet,事实证明可以将TOP1 accuracy提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便finetune; 
(3)虽然移除了全连接,但是网络中依然使用了Dropout ; 
(4)为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度,相当于模型融合,防止梯度消失。此外,实际测试的时候,这两个额外的softmax会被去掉。

                               

                                                

 

Inception网络的缺陷:计算成本,为减少计算成本,采用1x1卷积核来进行降维,得到最终版本的Inception模块,Inception V1结构。

                                          

• 如果你在构建神经网络层的时候,不想决定池化 层是使用1×1,3×3还是5×5的过滤器,那么 Inception模块就是最好的选择

• 通过使用1×1卷积来构建瓶颈层,从而大大降低 计算成本。 

                                          

(1)BN-Inception : 学习VGG,用2层3×3卷积替代一层5×5卷积;在每个卷积层后、激活函数之前,引入BN

(2) 

                                                 

(3) 

                                                      

 

  • ResNet 

 ResNet由残差块(Residual block)组成:

                                                  

                                     

Shortcut使得我们很容易得出a[l+2]=a[l],这意味着即使给神经网络增加了这两层,它的效率也并不逊色于更简单的神经网络。因为只要使得新添加的两层的权重和偏置为0,那么新网络就跟原始网络效果是一样的。但是如果新添加的这些隐层单元学到一些有用信息,那么它可能比学习恒等函数表现更好。

                                                        

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值