AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks

AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks

文章目录

    • AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks
  • 前言
  • 一、研究背景
  • 二、结构
  • 三、网络结构
  • 四、训练技巧
  • 五、实验结果分析
  • 总结


前言

最近复习了经典论文AlexNet,想和大家分享我的学习心得。话不多说,现在开始!!

关键词:图像分类、纯监督学习

一、研究背景

当前的目标识别方法基本上都使用了机器学习方法。为了提高目标识别的性能,我们可以收集更大的数据集,学习更强大的模型,使用更好的技术来防止过拟合。直到最近,标注图像的数据集都相对较小–在几万张图像的数量级上(例如,NORB[16],Caltech-101/256 [8, 9]和CIFAR-10/100 [12])。简单的识别任务在这样大小的数据集上可以被解决的相当好,尤其是如果通过标签保留变换进行数据增强的情况下。例如,目前在MNIST数字识别任务上(<0.3%)的最好准确率已经接近了人类水平[4]。但真实环境中的对象表现出了相当大的可变性,因此为了学习识别它们,有必要使用更大的训练数据集。实际上,小图像数据集的缺点已经被广泛认识到(例如,Pinto et al. [21]),但收集上百万图像的标注数据仅在最近才变得的可能。新的更大的数据集包括LabelMe [23],它包含了数十万张完全分割的图像,ImageNet[6],它包含了22000个类别上的超过1500万张标注的高分辨率的图像。

为了从数百万张图像中学习几千个对象,我们需要一个有很强学习能力的模型。然而对象识别任务的巨大复杂性意味着这个问题不能被指定,即使通过像ImageNet这样的大数据集,因此我们的模型应该也有许多先验知识来补偿我们所没有的数据。卷积神经网络(CNNs)构成了一个这样的模型[16, 11, 13, 18, 15, 22, 26]。它们的能力可以通过改变它们的广度和深度来控制,它们也可以对图像的本质进行强大且通常正确的假设(也就是说,统计的稳定性和像素依赖的局部性)。因此,与具有层次大小相似的标准前馈神经网络,CNNs有更少的连接和参数,因此它们更容易训练,而它们理论上的最佳性能可能仅比标准前馈神经网络差一点。

尽管CNN具有引人注目的质量,尽管它们的局部架构相当有效,但将它们大规模的应用到到高分辨率图像中仍然是极其昂贵的。幸运的是,目前的GPU,搭配了高度优化的2D卷积实现,强大到足够促进有趣地大量CNN的训练,最近的数据集例如ImageNet包含足够的标注样本来训练这样的模型而没有严重的过拟合。

二、结构

AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第1张图片
该网络输入的是150,528(2242243)维,网络剩余层中的神经元数量由253,440-186,624-64,896-64,896-43264-4096-4096-1000给出。 最后一个完全连接层的输出被馈送到1000路Softmax,它在1000个类标签上产生一个分布。 我们的网络最大限度地利用多项Logistic回归目标,这相当于在预测分布下,正确标签的对数概率在训练情况下的平均值最大化。 第二、第四和第五卷积层的内核只连接到位于同一GPU上的前一层中的内核映射。第三卷积层的核连接到第二层中的所有核映射。 完全连接层中的神经元连接到上一层中的所有神经元。 响应归一化层遵循第一和第二卷积层。 最大池层,如3.4节所述,遵循响应归一化层和第五卷积层。 将ReLU非线性应用于每个卷积层和完全连接层的输出。

计算卷积输出特征图:
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第2张图片
Fin:输入图像的尺寸大小
Fo:输出特征图的尺寸大小
k:卷积核大小
s:步长
2p:2倍的padding
eg:第一层卷积层尺寸大小Fo=(224-11)/4+1=55

三、网络结构

**1.该网络(AlexNet)共8个权重层,由5个卷积层和3个全连接层构成。共计6000万个参数,65万个神经元。

2.为加快训练,采用Relu非修正性单元。**

将神经元输出f建模为输入x的函数的标准方式是用f(x) = tanh(x)或f(x) = (1 + e−x)−1。考虑到梯度下降的训练时间,这些饱和的非线性比非饱和非线性f(x) = max(0,x)更慢。根据Nair和Hinton[20]的说法,我们将这种非线性神经元称为修正线性单元(ReLU)。采用ReLU的深度卷积神经网络训练时间比等价的tanh单元要快几倍。在图1中,对于一个特定的四层卷积网络,在CIFAR-10数据集上达到25%的训练误差所需要的迭代次数可以证实这一点。这幅图表明,如果我们采用传统的饱和神经元模型,我们将不能在如此大的神经网络上实验该工作。
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第3张图片
3.多GPU训练

单个GTX580 GPU只有3G内存,这限制了可以在GTX580上进行训练的网络最大尺寸。事实证明120万图像用来进行网络训练是足够的,但网络太大因此不能在单个GPU上进行训练。因此我们将网络分布在两个GPU上。目前的GPU非常适合跨GPU并行,因为它们可以直接互相读写内存,而不需要通过主机内存。我们采用的并行方案基本上每个GPU放置一半的核(或神经元),还有一个额外的技巧:只在某些特定的层上进行GPU通信。这意味着,例如,第3层的核会将第2层的所有核映射作为输入。然而,第4层的核只将位于相同GPU上的第3层的核映射作为输入。连接模式的选择是一个交叉验证问题,但这可以让我们准确地调整通信数量,直到它的计算量在可接受的范围内。

4.LRN(local Response Normalization)
局部响应标准化:本概念受真实神经元侧抑制的启发。有助于AlexNet的泛化能力提升。
侧抑制:细胞分化为不同时,它周围的细胞会产生抑制信号,阻止他们向相同方向分化,最终表现为不同细胞。
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第4张图片
常数:k=2,n=5,α=10^-4,and β = 0.75
i :代表通道channel
j : 平方累加索引,代表从j~i的像素值平方求和
x,y:像素的位置,公式中用不到
a:代表feature map里面的i对应像素的具体值
N:每个feature map里面最内层向量的列数
k:超参数,由原型的blas指定
α:超参数,由原型的alpha指定
n/2:超参数,由原型中的deepth radius指定
β:超参数,由原型中的belta指定

效果:LRN将我们的top-1和top-5错误率分别降低了1.4%和1.2。 我们还在CIFAR-10数据集上验证了该方案的有效性:四层CNN在不归一化的情况下达到13%的测试错误率,在归一化下达到11%。

5.重叠池化(Overlapping Pooling)
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第5张图片
在CNN中的池层总结了同一核图中相邻神经元群的输出。 传统上,由相邻池单元总结的邻域不重叠(例如,[17,11,4])。 更精确地说,池层可以被认为是由一个网格组成的,该网格由间隔为s像素的池单元组成,每个网格都总结了以池单元位置为中心的z×z大小的邻域。 如果我们设置s=z,我们就会得到传统的本地池,就像CNN中常用的那样。 如果我们设置s

四、训练技巧

1.数据增强——两种方式

1.1 针对位置
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第6张图片

从256X256的图像中裁剪224X224patches,并对他们进行水平翻转。可以得到2048张图像。

1.2 针对色彩

在色彩上使用PCA方法修改RGB通道上的像素值,实现色彩扰动,增强图像数据。但效果有限,仅在top-1提升1个点。top-1 acc约62.5%。
Pi和λi分别是RGB像素值的3×3协方差矩阵的特征向量和特征值,αi是上述随机变量。 每个αi只对特定训练图像的所有像素绘制一次,直到该图像被再次用于训练,此时它被重新绘制

2.随机失活Dropout

概率p=0.5,weight=0.注意:train和test阶段的数据尺度变化不同。在test时,神经元输出值需乘以P。
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第7张图片
使用Dropout的原因:神经元共享权重时,产生依赖性。因此需被迫学习特征。这些参与dropout的神经元既不参与前向传播、也不参与反向传播。

五、实验结果分析

1.卷积核可视化
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第8张图片
该实验选择了第一层卷积层的卷积核进行可视化,选择原因可能是11X11=121个像素还能被人眼所分辨,而后面的5X5、3*3就很难看出来。图中卷积核呈现出不同频率、方向和颜色,在GPU分工学习中,GPU1上的内核在很大程度上与颜色无关,而GPU2上的内核在很大程度上与颜色有关。 这种专门化发生在每次运行期间,并且独立于任何特定的随机权重初始化(GPU的重新编号)。

2.特征的相似性

另一种探测网络视觉知识的方法是考虑图像在最后4096维隐藏层引起的特征激活。 如果两幅图像产生具有小欧几里德分离的特征激活向量,我们可以说神经网络的较高级别认为它们是相似的。
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第9张图片
利用两个4096维实值向量之间的欧氏距离计算相似性是低效的,但通过训练自动编码器将这些向量压缩为短二进制码可以使其有效。 这将产生一种比将自动编码器应用于原始像素[14]更好的图像检索方法,该方法不使用图像标签,因此有一种检索边缘模式相似的图像的倾向,无论它们在语义上是否相似。

启发:可用AlexNet提取高级特征进行图像检索、图像聚类、图像编码。

总结

1.研究成果
AlexNet在ILSVRC-2012以超出第二名10.9个百分点夺冠。
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第10张图片
AlexNet论文学习笔记:ImageNet Classification with Deep Convolutional Neural Networks_第11张图片
1CNN:训练一个AlexNet
5CNNs:训练5个AlexNet 取平均值
1CNN* :在最后一个池化层之后,额外添加第六个卷积层,并使用ImageNet2011数据集上预训练。
7CNNs* :两个预训练微调,与5CNNs取平均值。

我们的网络实现了前1和前5测试集错误率分别为37.5%和17.0。 在ILSVRC-2010年比赛中取得的最佳成绩是47.1%和28.2%,采用的方法是平均由六个稀疏编码模型产生的预测,这些模型是在不同特征[2]上训练的,自那时以来,最好的公布结果是45.7%和25.7%,采用的方法是平均由两种密集采样特征[24]计算的两个训练于FisherVectors(FVS)的分类器的预测。

我们还在ILSVRC-2012比赛中进入了我们的模式,并在表2中报告了我们的结果。 由于ILSVRC-2012测试集标签不公开,我们无法报告我们尝试的所有模型的测试错误率。 在本段的其余部分中,我们交替使用验证和测试错误率,因为在我们的经验中,它们的差异不超过0.1%(见表2)。 本文所描述的CNN实现了18.2%的前5个错误率%。 对五个类似CNN的预测进行平均,误差率为16.4%。 训练一个CNN,在最后一个池层上有一个额外的第六卷积层,对整个Image NetFall2011版本(15M图像,22K类别)进行分类,然后在ILSVRC-2012上“微调”,错误率为16.6%。 用上述五个CNN对2011年秋季发布的两个CNN进行了预测,得出的误差率为15.3%。 第二佳竞赛条目的错误率为26.2%,采用了一种方法,该方法平均对从不同类型密集采样特征[7]计算的FV上训练的几个分类器的预测。

最后,我们还报告了我们的错误率在2009年秋季版本的图像网与10,184个类别和890万图像。 在这个数据集上,我们遵循文献中的惯例,使用一半的图像进行训练,一半用于测试。 由于没有建立的测试集,我们的拆分必然不同于以前的作者使用的拆分,但这不会明显影响结果。 我们在这个数据集上的top-1和top-5错误率分别为67.4%和40.9%,这是由上面描述的网络获得的,但在最后一个池层上有一个额外的第六卷积层。 在这个数据集上最好的发布结果是78.1%和60.9%[19]。

2.研究意义
拉开卷积神经网络统治CV的序幕,加速计算机视觉应用落地。

你可能感兴趣的:(卷积,神经网络,网络)