卷积神经网络AlexNet和ResNet比较[2021论文]

      本文是一篇人工智能前沿算法课设小论文,主要内容是对于经典模型AlexNetResNet的比较。整体上比较完整,由于是从文档上搬上来,所以在排版上有一些不规范,需要完整论文或者参考文献私信可免费提供。

文章目录

  • 摘要
  • 1第一章 CNN经典模型-AlexNet
    • 1.1 AlexNet背景介绍
    • 1.2AlexNet的模型结构
      • 1.2.1总体概述
      • 1.2.2各层描述
    • 1.3Relu激活函数
    • 1.4多GPU并行
    • 1.5最大池化
    • 1.6减少过渡拟合
      • 1.6.1数据增强
      • 1.6.2 Dropout方法
  • 2第二章 CNN经典模型-ResNet
    • 2.1ResNet的提出背景
    • 2.2过拟合和退化问题
    • 2.3深层残差网络结构
      • 2.3.1残差单元和恒等映射
      • 2.3.2瓶颈(BottleNeck)模块
      • 2.3.3 ResNet的框架结构
  • 3致谢
  • 4参考文献
  • 总结

摘要

      卷积神经网络(Convolutional Neural Network,CNN)最初是为解决图像识别等问题设计的,当然其现在的应用不仅限于图像和视频。经典的卷积网络LeNet5 诞生于1994年是最早的深层卷积神经网络之一,并且推动了深度学习的发展。在接下来的领域发展中,出现了更多的经典卷积神经网络结构,AlexNet、VGGNet、Google Inception Net和ResNet,这4种网络依照出现的先后顺序排列,深度和复杂度也依次递进。

      本文选择个人认为最具代表性的AlexNet和ResNet进行着重介绍。AlexNet可以说是神经网络在低谷期后的第一次发声,是现代深度CNN的奠基之作,它的AlexNet中包含了几个比较新的技术点,例如成功使用ReLU作为CNN的激活函数,Dropout防止过拟合,使用重叠的最大池化代替平均池化,提出了LRN层,利用GPU强大的并行计算能力,数据增强等等新的技术点。

      ResNet在ILSVRC 2015比赛中获得了冠军,取得3.57%的top-5错误率,准确率提高非常显著。ResNet的提出意义是层数超过了百层同时引入残差单元来解决退化问题,绝对是深度学习发展历程上里程碑式的事件。

1第一章 CNN经典模型-AlexNet

1.1 AlexNet背景介绍

    AlexNet是现代深度CNN的奠基之作。2012年,Hinton的学生Alex Krizhevsky提出了深度卷积神经网络模型AlexNet,它可以算是LeNet的一种更深更宽的版本。AlexNet中包含了几个比较新的技术点,也首次在CNN中成功应用了ReLU、Dropout和LRN等Trick。同时AlexNet也使用了GPU进行运算加速,作者开源了他们在GPU上训练卷积神经网络的CUDA代码。

    AlexNet包含了6亿3000万个连接,6000万个参数和65万个神经元,拥有5个卷积层,其中3个卷积层后面连接了最大池化层,最后还有3个全连接层。AlexNet以显著的优势赢得了竞争激烈的ILSVRC 2012比赛,top-5的错误率降低至了16.4%,相比第二名的成绩26.2%错误率有了巨大的提升。

    AlexNet可以说是神经网络在低谷期后的第一次发声,确立了深度学习(深度卷积网络)在计算机视觉的统治地位,同时也推动了深度学习在语音识别、自然语言处理、强化学习等领域的拓展。

1.2AlexNet的模型结构

卷积神经网络AlexNet和ResNet比较[2021论文]_第1张图片

1.2.1总体概述

  1. 考虑后面的全连接层,AlexNet为8层结构,其中前5层为卷积层,后面3层为全连接层;学习的参数有6千万个,神经元个数650000个。
  2. lexNet在两个GPU上运算。
  3. AlexNet在第2,4,5层均是前一层自己GPU内连接,第3层是与前面两层全连接,全连接是2个GPU全连接。
  4. ReLU在每个卷积层以及全连接层后。

1.2.2各层描述

1 第一层结构
      输入的原始图像是224×224×3的图像,为了后续处理进行padding填充为227×227×3的图像。这个图像被11×11×3的卷积核进行卷积操作(其中3表示深度或者说通道数)。卷积核的步长为4,朝着横向和纵向两个方向进行卷积。因此生成的像素为[(224+(1+2)-11)/4+1]=55,由于有96个卷积核,所以会形成55×55×96个像素层,系统采用的是双GPU处理,因此分为2组数据:55×55×48。

      重叠pool池化层:这些像素层还需要经过pool运算(池化运算)的处理,池化运算的尺度由预先设定为33,运算的步长为2,则池化后的图像的尺寸为:(55-3)/2+1=27。即经过池化处理过的规模为2727*96。

      局部响应归一化层(LRN):最后经过局部响应归一化处理,归一化运算的尺度为55;第一层卷积层结束后形成的图像层的规模为2727*96.分别由96个卷积核对应生成,这96层数据氛围2组,每组48个像素层,每组在独立的GPU下运算。

2第二层结构

      输入数据为第一层输出的272796的像素层(为方便后续处理,这对每幅像素层进行像素填充),分为2组像素数据,两组像素数据分别在两个不同的GPU中进行运算。每组像素数据被5548的卷积核进行卷积运算,同理按照第一层的方式进行:(27-5+22)/1+1=27个像素,一共有256个卷积核,这样也就有了2727*128两组像素层。

      重叠pool池化层:同样经过池化运算,池化后的图像尺寸为(27-3)/2+1=13,即池化后像素的规模为2组1313128的像素层。

      局部响应归一化层(LRN):最后经过归一化处理,分别对应2组128个卷积核所运算形成。每组在一个GPU上进行运算。即共256个卷积核,共2个GPU进行运算。

3第三层结构

      输入数据为第二层输出的两组1313128的像素层(为方便后续处理,这对每幅像素层进行像素填充),分为2组像素数据,两组像素数据分别在两个不同的GPU中进行运算。每组像素数据被33128的卷积核(两组,一共也就有33256)进行卷积运算,同理按照第一层的方式进行:(13-3+12)/1+1=13个像素,一共有384个卷积核,这样也就有了1313*192两组像素层。

4第四层结构

      输入数据为第三层输出的两组1313192的像素层(为方便后续处理,这对每幅像素层进行像素填充),分为2组像素数据,两组像素数据分别在两个不同的GPU中进行运算。每组像素数据被33192的卷积核进行卷积运算,同理按照第一层的方式进行:(13-3+12)/1+1=13个像素,一共有384个卷积核,这样也就有了1313*192两组像素层。

5第五层结构

      输入数据为第四层输出的两组1313192的像素层(为方便后续处理,这对每幅像素层进行像素填充),分为2组像素数据,两组像素数据分别在两个不同的GPU中进行运算。每组像素数据被33192的卷积核进行卷积运算,同理按照第一层的方式进行:(13-3+12)/1+1=13个像素,一共有256个卷积核,这样也就有了1313*128两组像素层。

      重叠pool池化层:进过池化运算,池化后像素的尺寸为(13-3)/2+1=6,即池化后像素的规模变成了两组66128的像素层,共66256规模的像素层。

6第六层结构

      第6层输入数据的尺寸是66256,采用66256尺寸的滤波器对第六层的输入数据进行卷积运算;每个66256尺寸的滤波器对第六层的输入数据进行卷积运算生成一个运算结果,通过一个神经元输出这个运算结果;共有4096个66256尺寸的滤波器对输入数据进行卷积,通过4096个神经元的输出运算结果;然后通过ReLU激活函数以及dropout运算输出4096个本层的输出结果值。

很明显在第6层中,采用的滤波器的尺寸(66256)和待处理的feature map的尺寸(66256)相同,即滤波器中的每个系数只与feature map中的一个像素值相乘;而采用的滤波器的尺寸和待处理的feature map的尺寸不相同,每个滤波器的系数都会与多个feature map中像素相乘。因此第6层被称为全连接层。

7第七层结构

      第6层输出的4096个数据与第7层的4096个神经元进行全连接,然后经由ReLU和Dropout进行处理后生成4096个数据。

8第八层结构

      第7层输入的4096个数据与第8层的1000个神经元进行全连接,经过训练后输出被训练的数值。
为了方便对比,我们将各层的细节展示在如下表格:

卷积神经网络AlexNet和ResNet比较[2021论文]_第2张图片

      此时我们用caffe 自带的绘图工具绘制的网络结构图如下图:
卷积神经网络AlexNet和ResNet比较[2021论文]_第3张图片

1.3Relu激活函数

      AlexNet成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题,并且减少了复杂的运算。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。
用python绘制下图,分别展示的是ReLU和Sigmoid函数

卷积神经网络AlexNet和ResNet比较[2021论文]_第4张图片
卷积神经网络AlexNet和ResNet比较[2021论文]_第5张图片
卷积神经网络AlexNet和ResNet比较[2021论文]_第6张图片

下图分别展示的是ReLU和Sigmoid的导数
卷积神经网络AlexNet和ResNet比较[2021论文]_第7张图片
卷积神经网络AlexNet和ResNet比较[2021论文]_第8张图片
卷积神经网络AlexNet和ResNet比较[2021论文]_第9张图片

      从图像中我们也可以得到结论如下三点结论。

      首先sigmoid的导数只有在0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,这也是它为什么会造成梯度弥散的原因,而relu函数在大于0的部分梯度为常数,所以不会产生梯度弥散现象。

      其次relu函数在负半区的导数为0 ,所以一旦神经元激活值进入负半区,那么梯度就会为0,也就是说这个神经元不会经历训练,即所谓的稀疏性。

      最后relu函数的导数计算更快,程序实现就是一个if-else语句,而sigmoid函数要进行浮点四则运算。

      这也就是在AlexNet模型中使用relu激活函数的几点原因。

1.4多GPU并行

      为提高运行速度和提高网络运行规模,作者采用双GPU的设计模式。并且规定GPU只能在特定的层进行通信交流。其实就是每一个GPU负责一半的运算处理。作者的实验数据表示,two-GPU方案会比只用one-GPU跑半个上面大小网络的方案,在准确度上提高了1.7%的top-1和1.2%的top-5。值得注意的是,虽然one-GPU网络规模只有two-GPU的一半,但其实这两个网络其实并非等价的。

1.5最大池化

      此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。最后实验结果在top-1和top-5上分别提高了0.4%和0.3%,在训练阶段有避免过拟合的作用。

1.6减少过渡拟合

1.6.1数据增强

      AlexNet用到的数据增强方式是:随机地从256256的原始图像中截取224224大小的区域(以及水平翻转的镜像),相当于增加了2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。
卷积神经网络AlexNet和ResNet比较[2021论文]_第10张图片

1.6.2 Dropout方法

      结合多个模型的预测值是减少错误的有效方法,但是对于训练时间用好几天的大型神经网络太耗费时间。Dropout是有效的模型集成学习方法,具有0.5的概率讲隐藏神经元设置输出为0。运用了这种机制的神经元不会干扰前向传递也不影响后续操作。因此当有输入的时候,神经网络采样不用的结构,但是这些结构都共享一个权重。这就减少了神经元适应的复杂性。测试时,用0.5的概率随机失活神经元。dropout减少了过拟合,也使收敛迭代次数增加一倍。

      换一个更容易理解的方式就是我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多线索中学习一些公共的特征。

卷积神经网络AlexNet和ResNet比较[2021论文]_第11张图片

2第二章 CNN经典模型-ResNet

2.1ResNet的提出背景

      2015年时,还在MSRA的何恺明祭出了ResNet这个“必杀技”,在ISLVRC和COCO上“横扫”了所有的对手,除了取得了辉煌的成绩之外,更重要的意义是启发了对神经网络的更多的思考。可以说深度残差网络(Deep residual network, ResNet)的提出是CNN图像史上的一件里程碑事件。

      ResNet之所以有如此优异的表现是因为ResNet是解决了深度CNN模型难训练的问题,我们知道2014年的VGG才19层,而15年的ResNet多达152层,这在网络深度完全不是一个量级上,所以如果是第一眼看到这个层数的话,肯定会觉得ResNet是靠深度取胜。事实当然是这样,但是ResNet还有架构上的trick,这才使得网络的深度发挥出作用,这个trick就是残差学习(Residual learning)[2]。

2.2过拟合和退化问题

      过拟合就是模型在训练数据上的损失不断减小,在测试数据上的损失先减小再增大,这才是过拟合现象。

      而在常规的CNN网络过分加深网络层数会带来分类准确率的降低的实验中可以看出:56层的网络比20层网络在训练数据上的损失还要大。这可以肯定不会是过拟合问题。因此,我们把这种问题称之为网络退化问题(Degradation problem)。

卷积神经网络AlexNet和ResNet比较[2021论文]_第12张图片

2.3深层残差网络结构

2.3.1残差单元和恒等映射

       残差学习来解决退化问题。对于一个堆积层结构(几层堆积而成)当输入为x时其学习到的特征记为H(x),现在我们希望其可以学习到残差
在这里插入图片描述

     这样其实原始的学习特征是H(x)。之所以这样是因为残差学习相比原始特征直接学习更容易。当残差为F(x) = 0时,此时堆积层仅仅做了恒等映射,实际上残差不会为0,这也会使得堆积层在输入特征基础上学习到新的特征,从而拥有更好的性能。残差学习的结构如下图所示。也称为短路连接(shortcut connection)。

卷积神经网络AlexNet和ResNet比较[2021论文]_第13张图片

它有两层,如下表达式,其中代表非线性函数RelU
(6)

然后通过一个shortcut,和第2个ReLU,获得输出H(x)
在这里插入图片描述

当需要对输入和输出维数进行变化时(如改变通道数目),可以在shortcut时对x做一个线性变换Ws,如下式,然而实验证明x已经足够了,不需要再搞个维度变换,除非需求是某个特定维度的输出。
在这里插入图片描述

残差网络的确解决了退化的问题,在训练集和校验集上,都证明了的更深的网络错误率越小。

2.3.2瓶颈(BottleNeck)模块

      如下图所示,左图是一个很原始的常规模块,实际使用的时候,残差模块和Inception模块一样希望能够降低计算消耗。所以论文中又进一步提出了“瓶颈(BottleNeck)”模块,思路和Inception一样,通过使用1x1 conv来巧妙地缩减或扩张feature map维度从而使得我们的3x3 conv的filters数目不受外界即上一层输入的影响,自然它的输出也不会影响到下一层module。不过它纯是为了节省计算时间进而缩小整个模型训练所需的时间而设计的,对最终的模型精度并无影响。

卷积神经网络AlexNet和ResNet比较[2021论文]_第14张图片

当输入维度一致时,参数计算如下,我们可以很明显地看出参数数量的下降。
卷积神经网络AlexNet和ResNet比较[2021论文]_第15张图片

2.3.3 ResNet的框架结构

卷积神经网络AlexNet和ResNet比较[2021论文]_第16张图片

      首先我们看一下表2,上面一共提出了5中深度的ResNet,分别是18,34,50,101和152,首先看最左侧,我们发现所有的网络都分成5部分,分别是:conv1,conv2_x,conv3_x,conv4_x,conv5_x。接下来我们对各层进行概括解释:

  1. Conv1: 包括一个7×7的卷积层
  2. Conv2:和3×3的max_pool(最大池化),以及一系列残差结构,各个
  3. Conv3:一系列残差结构
  4. Conv4:一系列残差结构
  5. Conv5:一系列残差结构,average_pool(平均池化),全连接,softmax最大概率分布统计。

卷积神经网络AlexNet和ResNet比较[2021论文]_第17张图片

       需要注意的是带虚线和不带虚线的残差结构如下

卷积神经网络AlexNet和ResNet比较[2021论文]_第18张图片

      实线的残差结构输入的shape和输出的shape一致,而带虚线的残差结构输入的shape和输出的shape不一致,在主分支通过修改stride(步长)为2从而缩小的长和宽,修改卷积核的数目改变了深度;而在分支结构中直接通过1×1的结构修改维度,stride=2修改了长和宽。

      所以我们可以看出conv3_1,conv4_1,conv5_1的第一个残差结构都是带虚线的,这个在原论文中有说明。

3致谢

      时光茬蒋,不知不觉间,一学期的学习己经接近尾声。“诚以待人,毅以处 世”。的集大精神也已经铭刻于心。 在这里,我要特别感谢我的指导老师张东晓,在这篇论文中给了我很多指导。 张东晓老师学识渊博、学术水平精湛,同时为人和善幽默又不失严禁的态度。 在我看来这门人工智能课其实很有意义,最主要的是理论加实践的学习模式,真正地做到了学以致用。 论文的完成过程收获是丰富的,经典的卷积神经网络模型可以应用实践在比赛和学习中。尽管因为掌握的知识有限, 论文必然存在缺陷,但是我相信后期的学习一定可以把这部分完善起来。 最后再次诚挚地感谢张东晓老师一学期的辛苦付出。

4参考文献

[1]Technicolor T , Related S , Technicolor T , et al. ImageNet Classification with Deep Convolutional Neural Networks [50].
[2][1]Deep Residual Learning for Image Recognition[C]// IEEE Conference on Computer Vision & Pattern Recognition. IEEE Computer Society, 2016.

总结

如有错误,欢迎评论或私信指出,需要帮助可私信。

在这里插入图片描述

你可能感兴趣的:(机器学习笔记,人工智能学习笔记,课设汇总,人工智能,卷积神经网络,alexnet模型,Resnet)