Advertisement

卷积神经网络CNN_综述一

阅读量:

CNN卷积神经网络架构综述

深度学习算法如今正日益受到重视和广泛应用作为强大的工具,在这一领域中,深度学习或深度神经网络的成功主要归功于不断涌现的新颖神经网络架构。本文回顾了作者从1998年开始对深度神经网络架构演变历程的研究

在图中可见横轴代表操作复杂度而纵轴则表示精确度。初期阶段当模型权重增加时模型规模也随之扩大相应地精确度也随之提升。随后出现了一系列如ResNet GoogleNet和Inception等著名网络架构它们能够在获得相同甚至更高的精确度的同时显著降低了参数数量。值得注意的是这并不意味着右侧数值越大运行时间越长因为文中并未涉及时间方面的统计分析而是主要从模型参数和网络性能两个维度进行了比较分析。

一些网络作者普遍认为这些内容都是必学的经典内容:包括AlexNet、LeNet、GoogLeNet、VGG-16以及NiN。

如需深入探讨深度神经网络架构及其应用领域,请参考这篇综述文献:An Analysis of Deep Neural Network Models for Practical Applications.


网络架构

LeNet5

1998年时著名的乐春大神发布了[...]网络架构.
该技术开创性地揭示了深度学习领域的奥秘.
自那时起直至现在为止, 在各个研究领域中都逐渐为人所知.
这也是得益于该创新技术所带来的深远影响.
鉴于其开创性, 为何将其命名为Lenet-5而非其他版本呢?
这是因为Yann LeCun通过持续进行多次实验得出的结果.
同时这也与拥有五个卷积层有关的原因.

LeNet-5架构被认为是开创性的工作。这是因为其在处理复杂任务时展现出强大的性能特点:它通过卷积操作,在多个相同参数位置提取相似特征的方法是一种高效的技术手段。回归至1998年时计算资源相对有限,在面对复杂任务时效率依然不高。相比之下,在使用每像素独立作为输入的情况下构建多层神经网络不仅效率低下而且会导致冗余参数。然而Lenet-5论文指出, 将全卷积结构放置于第一层并非最佳选择, 因为由于自然图像具有高度的空间相关性, 仅将每个像素视为独立特征会忽略这种内在联系。基于此,CNN体系 emerged with three key characteristics: 1) local sensitivity; 2) downsampling; and 3) weight sharing

LeNet5小结:

  • 卷积神经网络由三层结构构成:卷积层、下采样层和激活函数层。
    • 通过卷积操作提取图像的空间特征。
    • 利用图像的平均稀疏特性进行下采样。
    • 激活层采用双曲 tangent 或 sigmoid 函数作为激活函数。
    • 其中多层感知机(MLP)被用作最终的分类模型。
    • 各层之间采用稀疏连接矩阵以降低计算开销。

作为里程碑式的技术,LeNet5架构开创了人工智能领域的先河,值得我们致敬。自2010年以来,在过去几年中神经网络架构经过近十年的发展成熟,并主要由其三大关键特性支撑。

作为里程碑式的技术, LeNet5架构开创了人工智能领域的先河,值得我们致敬.自2010年以来,在过去的几年中神经网络架构经过近十年的发展成熟,并主要由其三大关键特性支撑.

GAP

在1998年至2010年间(即自1998年至2010年间),神经网络的发展相对缓慢。值得注意的是,在这一时间段内,人工智能领域的顶尖专家吴恩达教授在其2003年的公开课程中仅用两节课就较为详细地讲解了SVM原理;而相比之下,在同一领域内的coresea在其新的人工智能公开课程上则用不足一节课的时间重点讲解了SVM相关内容;与此同时,在同一课程中神经网络相关内容却被用两节课的时间进行了深入讲解。随着计算机处理能力和图形处理器性能的不断提升之下(亦即随着CPU和GPU速度的不断提高),带来了算法性能上的显著提升以及存储资源上的大幅扩展;这使得深度神经网络的应用更加便捷可行。因此从2010年开始逐渐开启了深度学习这一研究与应用的新纪元

Dan Ciresan Net

在2010年,Dan Claudiu Ciresan与Jurgen Schmidhuber共同发布了一篇关于GPU神经网络的研究论文。该论文证实,在采用NVIDIA GTX 280显卡后能够有效处理较为复杂的九层神经网络架构。

从此之后,Nvidia公司的股价持续上涨;深度学习逐渐被更多人所了解。

AlexNet

2012年, Alex Krizhevsky发布了AlexNet. 相比而言, AlexNet在网络层次上更为突出, 其层数较之于LeNet的5层有所增加, 达到了7层. 不仅如此, AlexNet在神经网络层数上更为突出, 在深度上有更大的提升, 并且能够提取更为复杂的图像高维特征.

AlexNet小结:

  • 采用ReLU函数作为激活函数,在应用Sigmoid类函数时计算量得到了减少。
  • 通过dropout技术,在训练阶段随机移除部分神经元以防止模型过拟合。
  • 采用最大值池化技术进行处理。
  • 借助双NVIDIA GTX 580显卡并行计算减少了训练时间。

随着GPU性能的持续提升,并使训练规模可扩展至10倍以上的时间间隔逐渐缩短,在处理大型图像和海量数据方面取得了显著进展。伴随着技术变革的推进,在深度学习领域掀起了一场技术革命,在这一过程中卷积神经网络(CNN)已成为深度学习的核心技术。有人认为随着网络复杂度的提升,其处理能力也随之增强。

Network-in-network

2013年末时,Min Lin在其研究工作中首次提出了一种独特的设计思路:在标准的二维可逆变换操作之后紧跟一个1×1尺寸的小尺寸深度可分离卷积操作,这种创新设计成为NiNet体系中的关键创新点所在。在此方案中, NiNet模块每完成一次标准的二维可逆变换操作后会紧接着执行一次深度可分离卷积操作,其主要目标在于整合更多元化的特征信息以提升模型性能。值得注意的是,尽管这一设计与经典的CNN架构理念相悖(即浅层神经网络通常采用较大的滤波器尺寸来捕捉空间信息),但这种做法却成功地整合了多样化的特征表示,从而达到了降低整体模型参数量的同时实现了更大规模网络结构的可行性

根据Min Lin在其《神经形态网络》(NiN)论文中指出,在深度学习领域"网络架构"(Network in Network, NIN)设计能够显著增强Convolutional Neural Networks(CNN)对局部感受野(Local Receptive Field)的感受能力。对比于未采用NiN时的情况:3x3步长为2、通道数为256的操作序列直接接续MaxPooling层;而当引入NiN后的情况则表现为:先执行3x3步长为2、通道数保持不变的操作层后紧接着进行1x1、通道数仍为256的一维线性变换操作再接续MaxPooling层。

MLP在多层感知机中的核心优势在于它能够将多种卷积特征融合在一起形成一个更为复杂和高效的特征提取机制。这一概念将在后续章节中得到进一步发展和应用。

VGG

2014年是个绽放年,出了两篇重要的论文:VGG、GoogLeNet。

来自牛津大学的研究人员提出了VGG网络模型,在其设计中采用了独特的策略:在每个Convolution层中应用较小尺寸(如3 \times 3)的小型滤波器,并将这些小型滤波器串联成一个连续的滤波器序列以构成整个网络架构。为了便于理解这一技术细节,《通俗解释》将其描述为:首先对原始图像执行一次3 \times 3的空间采样运算(即第一次Convolution),随后继续对该结果图像施加同样的操作(第二次Convolution),如此反复应用小型滤波器直至完成整个网络的所有过滤步骤。

Perhaps many readers might feel puzzled about why such a small convolution kernel is used for image convolution, especially when employing consecutive small kernels. Interestingly, VGG's initial design approach contradicts LeNet's principles because LeNet believes that large convolution kernels can effectively capture similar features within an image (weight sharing). In AlexNet's architecture, 9×9 and 11×11 convolution kernels were employed early on in the shallow layers, with the aim of avoiding the use of 1×1 kernels at this stage. But what makes VGG truly remarkable is its ability to simulate the functionality of larger convolution kernels using multiple 3×3 ones, effectively capturing local features within an image. This foundational concept was later expanded upon by networks like GoogleNet and ResNet, which incorporated similar ideas into their architectures.

从下图可以看出,VGG基于多个3×3卷积层提取高维特征。若采用较大的滤波器尺寸(如7×7),计算量和资源消耗将显著上升。传统的深度学习架构往往难以有效管理如此之多的可训练参数。未采用有效的机制来控制模型复杂度(即防止过拟合或减少冗余计算),大型网络结构的学习效率大为下降。

VGG认为采用较大的卷积核会导致显著的时间浪费然而通过减小卷积核数量可以降低模型参数规模并优化计算效率尽管训练所需时间有所增加但整体上预测时间和参数规模均有所下降

GoogLeNet

于2014年,在Google工作的Christian Szegedy被用于寻找一种深度神经网络结构能够有效地减少计算资源,并发现了能够在降低计算资源需求方面表现出色的深度神经网络架构(也被称作Inception V1)。

自2014年底以来,在图像内容分类与视频分类两个领域内深度学习模型得到了广泛的应用。在此之前的很长一段时间内, 很多人尽管对深度学习及神经网络持有保留态度, 但如今纷纷加入这一领域, 其主要原因很简单, 因为depth learning 已经不再是空谈, 而是真正变得接地气了. 即使像Google这样的互联网巨头都已经斥资布局该领域, 成立了众多人工智能实验室.

Christian致力于探索一种能够在不显著增加计算复杂度的情况下显著提升深度神经网络性能的新框架设计。尽管完全实现这一目标可能存在挑战,但接受一定性能上的妥协并能在相同的计算成本下实现更好的性能提升同样具有价值。随后,Christian和他的团队在Google开发出了这一模型

其外观上几乎等同于将1×1、3×3以及5×5大小的卷积核进行并行整合。然而,在这种情况下最为关键的是采用了NiN结构(即1×1卷积层)以降低后续并行操作中特征的数量。这一概念如今被称为瓶颈层(bottleneck layer)。

Bottleneck layer

基于NiN的设计理念,在GoogleNet中引入了Bottleneck layer结构,在降低每层操作复杂度的同时实现了显著提升推理速度。在传递至下一层卷积操作前仅需减少约4个单位的特征数量。这一架构因其在大幅减少计算开销方面取得显著成效而闻名

我们对Bottleneck层进行了深入研究。当输入端提供256个feature map时,在输出端仍然保持为256个feature map。值得注意的是,在Inception层仅通过3×3卷积操作即可完成这一计算单元(约为(256×256) × (3×3)= 491, 76 计算次数)。进一步研究表明,在Google服务器上完成这一过程所需的时间约为0.5毫秒(ms),由此产生的计算开销非常显著。基于此观察,Bottleneck层的核心思想在于先通过减少特征数量来优化性能,A first step是将256个特征映射缩减至64个,随后在所有Bottleneck层分支中对这些缩减后的feature map进行卷积操作,最终再通过1×1卷积将结果恢复至与初始输入相当的规模(即从64扩展回256)。该过程的具体运算量如下:

  • 256×64 × 1×1 = 16,000s
  • 64×64 × 3×3 = 36,000s
  • 64×256 × 1×1 = 16,000s

总共约70,000,而我们以前有近600,000。几乎减少10倍的操作!

尽管我们进行的操作数量有限,但我们依然保持了这一层特征。实际上,在ImageNet数据集上,Bottleneck layer已经展现了卓越的性能,并且将在后续的架构设计中得到应用。

由于输入特征之间的相关性得以实现后,在适当的方式下结合1x1卷积操作能够有效地消除冗余信息;接着,在卷积神经网络中神经元数目减少到较低水平后会呈现出更强的表现能力,并且能够在后续层中发挥出对输入数据的进一步影响。

Inception V3

Christian's team demonstrated exceptional prowess, having published a groundbreaking article in February 2015 that introduced a Batch-normalized layer into the GoogleNet architecture. The Batch-normalized layer achieves standardization of the layer's output features by computing and applying the mean and standard deviation values across all feature maps, effectively normalizing the layer's responses. This approach is particularly effective in 'whitening' data, ensuring that all subsequent neural layers operate with normalized responses centered at zero with uniform variance. This has significant implications for training neural networks, as it eliminates the need for lower layers to learn input biases and instead allows them to focus on optimizing feature combinations.

2015年12月,他们推出了一个更新版的GoogleNet(Inception-V3)模块及其相关架构,并且同时更加清晰地阐述了原有的GoogleNet架构的基本概念。

  • 设计一种平衡深度与宽度结构以优化信息流动效率,在池化层之前提升特征图数量。
  • 随着网络层数递增其对应的特征数量及各层宽度也会相应提升。
  • 每一层采用宽窄结合策略以增强后续各层之间的特征融合效果。
  • 完全避免使用更大尺寸的空间卷积核仅依赖于3x3大小的操作。

因此最后的模型就变成这样了:

总结

我们再次回顾开篇对比图中所展示的内容。从图中可以看出,在未考虑过多权重参数的情况下(即像AlexNet这类模型),网络架构显得相对较为宽泛(规模较大)。最初提出AlexNet时的目标是利用深度网络来捕捉图像中的高维特征(即寻找更多图像空间中的复杂模式),但随着网络架构逐渐深化(即增加层数),计算所需的参数量也随之大幅增加。由于硬件设施往往难以跟上软件算法的发展步伐(即硬件性能无法满足日益复杂的计算需求),因此当尝试进一步加深网络时(即增大模型深度),会导致GPU内存不足(即硬件资源限制了深度学习的发展)。为了突破这一瓶颈并提升网络性能(即提高模型精度和泛化能力),研究者们不断探索新的解决方案:通过采用小尺寸卷积核替代大尺寸卷积核的方式,在不显著增加参数量的前提下显著提升了模型精度(同时大幅降低了整体计算复杂度)。这样一来就彻底打破了之前因硬件限制而制约的网络深度发展瓶颈。

然而另一方面随着网络深度逐渐加深计算速度逐渐减缓这也确实让人头疼不已因为无法同时达到理想的效果

全部评论 (0)

还没有任何评论哟~