> Photo by Pietro Jeng on Unsplash
技术说明,花点时间了解彻底改变深度学习方法的琐碎技术和神经网络架构
AlexNet卷积神经网络(CNN)于2012年问世。从那时起,深度卷积神经网络的使用猛增到了一些机器学习解决方案都利用深度CNN的地步。
本文将介绍引入AlexNet体系结构的研究论文的基本发现和要点。
在本文中,您可以期待找到以下内容:
· 介绍AlexNet的研究论文的细目
· AlexNet体系结构的插图
· AlexNet的内层组成表
· 各种技术的解释,例如辍学,数据增强,规范化等等。
各个级别的机器学习和深度学习从业人员都可以遵循本文介绍的内容。
介绍
AlexNet卷积神经网络架构在论文"使用深度卷积神经网络进行ImageNet分类"中进行了介绍。 该论文由Ilya Sutskever的Alex Krizhevsky和深度学习的教父Geoffery Hinton撰写。
> left: Alex Krizhevsky, Middle: Ilya Sutskever, Right: Geoffery Hinton
该论文的作者旨在展示图像分类的琐碎任务,可以使用深度卷积神经网络,高效的计算资源和通用的CNN实现技术来解决。
本文证明了由5个卷积层和3个完全连接的层组成的深度卷积神经网络可以有效,准确地对图像进行分类。
深度卷积神经网络称为AlexNet,并在ImageNet大规模视觉识别挑战赛(ILSVRC 2012竞赛)中引入,它为深度学习领域开创了先例。
好时机
在引入AlexNet之前,许多传统的神经网络和卷积神经网络在解决诸如MNIST手写字符数据集之类的数据集上的图像分类方面表现良好。 但是,为了解决日常生活中物体的一般图像分类问题,需要更大的数据集以解决图像中出现的物体的巨大差异。
> MNIST Dataset illustration
通过引入大型数据集(如ImageNet)解决了健壮数据集的不足,该大型数据集包含1500万张高分辨率图像中的22,000个类。
引入AlexNet之前的另一个限制是计算机资源。
增加网络的容量意味着增加网络中的层和神经元的数量。
当时,用于训练这样的网络的计算资源十分匮乏。 但是,引入优化的GPU使得训练深层常规神经网络成为可能。 用于训练AlexNet CNN架构的特定GPU是NVIDIA GTX 580 3GB GPU。
> Nvidia GTX 580
AlexNet架构的独特特征
整流线性单位(ReLU)
为了训练神经网络内的神经元,利用Tanh或S形非线性已成为标准做法,这是goto激活函数,可用来对CNN内的内部神经元激活进行建模。
AlexNet继续使用整流线性单位,简称ReLU。 ReLU由Vinod Nair和Geoffrey E.Hinton在2010年推出。
ReLu可以描述为对先前卷积层的输出执行的传递函数运算。 ReLu的利用可确保神经元内的值保持为正值,但对于负值,则将其限制为零。
使用ReLu的好处是,与其他标准非线性技术相比,由于梯度下降优化以更快的速度发生,因此可以加快训练过程。
ReLu层的另一个好处是它在网络内引入了非线性。 它还消除了连续卷积的关联性。
GPU
在介绍AlexNet神经网络架构的原始研究论文中,模型的训练是利用两个具有3GB内存的GTX 580 GPU进行的。
GPU并行化和分布式训练是当今非常常用的技术。
根据研究论文提供的信息,该模型在两个GPU上进行了训练,其中一半神经元位于一个GPU上,另一半则在另一个GPU的内存中。 GPU彼此通信,而无需通过主机。 GPU之间的通信基于层进行限制; 因此,只有特定的层可以相互通信。
例如,AlexNet网络第四层的输入是从当前GPU上第三层特征图的一半中获得的,而另一半的其余部分则是从第二GPU中获得的。 本文后面将对此进行更好地说明。
本地响应规范化
规范化采用一组数据点,并将它们放置在可比较的基础或规模上(这是过于简单的描述)。
CNN中的批次归一化(BN)是通过将一批输入数据转换为平均值为零且标准偏差为1来标准化和归一化输入的技术。
许多人熟悉批处理规范化,但是AlexNet体系结构在网络中使用了另一种规范化方法:本地响应规范化(LRN)。
undefined
在现代CNN架构中,LRN并未得到广泛利用,因为还有其他更有效的标准化方法。 虽然,仍可以在某些标准的机器学习库和框架中找到LRN实现,因此请随时进行实验。
重叠池
CNN中的池化层实质上将信息封装在特征图中的一组像素或值内,并将它们投影到较小尺寸的网格中,同时反映来自原始像素组的一般信息。
下图提供了池化的示例,更具体地说是最大池化。 最大池化是子采样的一种变体,其中子像素的最大像素值落在池化窗口的接收范围内。
> Max Pooling Illustration by Justin Francis at Oriely
在介绍AlexNet CNN架构的论文中,引入并利用了一种不同的合并方法。 重叠池。 在传统的池化技术中,从池化窗口的一个中心到另一个中心的跨度被定位为确保来自一个池化窗口的值不在后续池化窗口之内。
与传统的池化方法相比,重叠池使用的步幅小于池化窗口的尺寸。 这意味着后续合并窗口的输出封装了已被合并多次的像素/值中的信息。 很难看出这样做的好处,但是根据论文的发现,重叠池降低了模型在训练期间过拟合的能力。
数据扩充
减少过度适应网络机会的另一种标准方法是通过数据增强。 通过人为地扩充数据集,您可以增加训练数据的数量,从而增加了网络在训练阶段所暴露的数据量。
图像的增强通常以变换,平移,缩放,裁剪,翻转等形式出现。
在训练阶段,人为地放大了AlexNet原始论文中用于训练网络的图像。 所使用的增强技术是裁剪和更改图像中像素的强度。
将训练集中的图像从其256 x 256维度中随机裁剪,以获得新的224 x 224裁剪图像。
增强为何起作用?
事实证明,随机执行对训练集的扩充可以显着降低训练期间网络过度拟合的可能性。
增强图像只是从原始训练图像的内容中得出的,那么增强为何如此有效?
简单来说,数据扩充可增加数据集中的不变性,而无需采购新数据。 网络能够很好地泛化到看不见的数据集的能力也有所提高。
让我们举一个非常真实的例子; "生产"环境中的图像可能并不完美,有些图像可能倾斜,模糊或仅包含一些基本特征。 因此,针对包括训练数据的更健壮变化的数据集训练网络将使训练后的网络在生产环境中能够更成功地对图像进行分类。
Dropout
Dropout是许多深度学习从业人员熟悉的术语。 Dropout是一种用于减少模型过拟合潜力的技术。
Dropout技术是通过向CNN层内的神经元激活添加概率因子来实现的。 该概率因子向神经元指示了在当前前馈步骤期间以及在反向传播过程中被激活的机会。
Dropout是有用的,因为它使神经元能够减少对相邻神经元的依赖。 因此,每个神经元都会学习更多有用的功能。
在AlexNet架构中,前两个完全连接的层使用了dropout技术。
使用丢失技术的缺点之一是,它增加了网络收敛所需的时间。
虽然,利用Dropout的优势远远超过了它的劣势。
AlexNet体系结构
在本节中,我们将了解AlexNet网络的内部组成。 我们将重点关注与图层相关的信息,并细分每个重要图层的内部属性。
AlexNet CNN体系结构由8层组成,其中包括5个conv层和3个完全连接的层。 卷积层中的一些是卷积层,池化层和规范化层的组合。
AlexNet是第一个采用具有连续卷积层(转换层3、4和5)的体系结构。
网络中的最终完全连接层包含softmax激活函数,该函数提供一个向量,表示1000个类别上的概率分布。
Softmax激活功能
利用Softmax激活来得出输入向量内一组数字的概率分布。 softmax激活函数的输出是一个向量,其中它的一组值表示发生类或事件的概率。 向量中的值总计为1。
除了最后一个完全连接的层之外,ReLU激活功能还应用于网络中包含的其余层。
> Simplified AlexNet Neural Network Multi GPU Architecture
由于该模型是在两个GTX 580 GPU上训练的,因此上面的AlexNet网络的图示分为两个分区。 尽管网络跨两个GPU进行了划分,但是从图中可以看出,在conv3,FC6,FC7和FC8层中可以看到一些交叉的GPU通信。
下表是网络中各层的某些特征和属性的细分。
> AlexNet architecture properties table
在原始纸张中,输入层的尺寸据说为224 x 224 x 3,但是在上方的表格中,输入层的输入尺寸为227 x 227 x 3,差异是由于存在一些 在实际的网络培训期间发生的未提及的填充,未包含在发表的论文中。
结论
AlexNet的引入和成功改变了深度学习的格局。 在ILSVRC第12届竞赛中取得了骄人的成绩之后,接下来几年获奖的体系结构都是深度卷积神经网络。
AlexNet的一种变体以不同的超参数赢得了ILSVRC'13竞赛。 2014年,2015年和2016年获奖的架构是用更深的网络和更小的卷积内核/过滤器构建的。
了解AlexNet的体系结构非常容易,而且实现起来也更加容易,尤其是使用PyTorch和TensorFlow之类的工具,这些工具在其库和框架中都包含该体系结构的模块。
在以后的文章中,我将展示如何使用TensorFlow来实现和利用本文介绍的AlexNet架构。
(本文翻译自Richmond Alake的文章《What AlexNet Brought To The World Of Deep Learning》,参考:https://towardsdatascience.com/what-alexnet-brought-to-the-world-of-deep-learning-46c7974b46fc)