机器学习11-经典网络解析
- AlexNet
- ImageNet 大规模视觉识别挑战赛
- 一、赛事背景与目的
- 二、数据集与任务设置
- 三、参赛规则与流程
- 四、评审标准与机制
- 五、历史与影响
- 六、中国团队的表现
- 贡献
- 解析
- CONV1层
- MaxP00L1层
- NORM1层
- CONV2层
- CONV3、CONV4层
- CONV4,Max POOL3 层
- FC6、FC7、FC8层
- 总结
- ZFNet
- VGG
- VGG网络贡献:
- VGG16
- 思考
- GoogleNet
- Inception结构
- 一、Inception结构简介
- 二、Inception结构的核心组件
- 三、Inception结构的演变版本
- 四、Inception结构的设计原则
- 五、Inception结构的应用与影响
- ResNet
- ResNet具有以下贡献:
- 残差模块
- 为什么残差网络性能这么好?
- 1. 解决梯度消失和梯度爆炸问题
- 2. 简化优化问题
- 3. 提高训练效率和收敛速度
- 4. 强大的特征提取能力
- 5. 良好的泛化能力
- 6. 灵活的网络结构
- 7. 信息流的高效传递
- 总结
AlexNet
2012年ImageNet 大规模视觉识别挑战赛冠军,精度提升超过10%。
ImageNet大规模视觉识别挑战赛(ImageNet Large Scale Visual Recognition Challenge,简称ILSVRC)是全球计算机视觉领域最具影响力的竞赛之一。以下是对该挑战赛的详细介绍:
ImageNet 大规模视觉识别挑战赛
一、赛事背景与目的
ILSVRC诞生于计算机视觉领域发展的关键时期,旨在推动图像识别技术的进展和发展。通过该挑战赛,研究人员能够测试并展示最新的计算机视觉算法和技术,为全球AI研究团队提供一个公平竞争的平台。
二、数据集与任务设置
- 数据集:ImageNet数据集是ILSVRC的核心,由斯坦福大学的Fei-Fei Li教授及其团队开发。该数据集包含超过1400万张标注图像,涵盖超过20000个类目,为研究人员提供了训练深度学习模型的基础。
- 任务设置:ILSVRC设置了多个任务,涵盖计算机视觉中的核心问题,包括图像分类、目标检测、图像定位以及场景分类等。参赛者需要针对这些任务开发模型,并在提供的数据集上进行训练和测试。
三、参赛规则与流程
- 报名注册:参赛者需在ILSVRC官网上注册,提供团队信息及相关资质验证。
- 下载数据集:报名成功后,团队将获得ImageNet数据集的使用许可,并下载数据集用于模型训练。
- 模型训练:参赛者可以利用自有的计算资源或通过云计算平台训练模型。
- 结果提交:在规定时间内,参赛者需要通过官网提交模型的结果文件进行评审。
四、评审标准与机制
ILSVRC的评审机制十分严格,主要通过自动化评审系统对提交的模型进行测试。评审标准包括Top-1错误率、Top-5错误率、平均精度(Mean Average Precision, mAP)以及召回率与精确率等。这些指标能够全面评估模型在图像分类、目标检测等任务上的性能。
五、历史与影响
- 历史突破:自2010年首次举办以来,ILSVRC见证了多项技术突破。其中,2012年由Geoffrey Hinton、Ilya Sutskever和Alex Krizhevsky提出的AlexNet模型首次将深度卷积神经网络应用于图像分类任务,并以大幅降低Top-5错误率的成绩赢得比赛。这一胜利引发了全球范围内对深度学习的研究热潮。
- 影响力:ILSVRC不仅推动了计算机视觉领域的飞速发展,还为深度学习的崛起奠定了基础。多年来,该挑战赛涌现出了一批著名的参赛团队和技术突破,如GoogLeNet、ResNet和EfficientNet等。这些技术创新不仅赢得了比赛,还广泛应用于现实世界中的图像识别、自动驾驶、医疗影像分析等领域。
六、中国团队的表现
在ILSVRC的历史上,中国团队也取得了显著的成绩。例如,在2016年的挑战赛中,来自中国的团队包揽了多个项目的冠军,展示了中国在计算机视觉领域的研究实力和技术水平。
综上所述,ImageNet大规模视觉识别挑战赛作为计算机视觉领域的标志性赛事,不仅推动了深度学习技术的突破,还培养了众多卓越的研究团队。未来,随着AI技术的不断进步,类似ILSVRC的赛事将继续推动技术创新,为各行各业带来更加智能化的解决方案。
贡献
AlexNet一一验证了深度卷积神经网络的高效性
主体贡献
1.提出了一种卷积层加全连接层的卷积神经网络结构
2. 首次使用ReLU函数做为神经网络的激活函数
3.首次提出Dropout正则化来控制过拟合
4.使用加入动量的小批量梯度下降算法加速了训练过程的收敛;
5.使用数据增强策略极大地抑制了训练过程的过拟合;
6.利用了GPU的并行计算能力,加速了网络的训练与推断。
解析
CONV1层
MaxP00L1层
MaxP00L1层:窗口大小3x3,步长为2( 重叠有助于对抗过拟合)
作用:降低特征图尺寸,对抗轻微的目标偏移带来的影响
输出尺寸: (55-3) /2+1 = 27
特征图个数:96
参数个数:0
NORM1层
局部相应归一化层(NORM1)作用
- 对局部神经元的活动创建竞争机制;
- 响应比较大的值变得相对更大;
- 抑制其他反馈较小的神经元;
- 增强模型的泛化能力
但是后来的研究表明:更深的网络中该层对分类性能的提升 效果并不明显,且会增加计算量与存储空间。
CONV2层
第二层(C0NV2):256个5x5卷积核(相当于在原图上用50×50卷积核去做卷积,增大了识别特征的概率,并缩减计算量,卷积结合律的好处),步长为1,使用零填充p=2
问题:输入:27x27x96大小的特征图组,输出特征图个数及尺寸为多少?
尺寸:(27-5+2*2)/1+1=27
个数:256
为什么不是256×96个?
输入特征图的通道数:输入特征图的通道数(例如RGB图像的3个通道,或上述中的96个通道)影响的是卷积核的深度(或称为卷积核的通道数)。每个卷积核的深度必须与输入特征图的通道数相匹配,以便能够正确地与输入特征图进行卷积操作。但是,这并不影响输出特征图的数量;它只影响卷积核本身的结构。
CONV3、CONV4层
第三、四层(CONV3、CONV4):384个3x3卷积核,步长为1,使用零填充p=1
问题:C0NV3输入:13x13x256大小的特征图组,输出特征图个数及尺寸为
多少?
尺寸:(13-3+2*1)/1+1=13
个数:384
CONV4,Max POOL3 层
第五层(CONV5):256个3x3卷积核,步长为1,使用零填充p=1
最大池化层来进一步缩小特征图尺寸
FC6、FC7、FC8层
(FC6、FC7、FC8):全连接神经网络分类器
MAXP00L3的输出:特征响应图组,展开为6×6×256=9216维向量
FC6输入:9216维向量
输出:图像类别概率
总结
- 用于提取图像特征的卷积层以及用于分类的全连接层是同时学习的;
- 卷积层与全连接层在学习过程中会相互影响、相互促进
- 重要技巧:
Dropout策略防止过拟合;
使用加入动量的随机梯度下降算法,加速收敛;
验证集损失不下降时,手动降低10倍的学习率;
采用样本增强策略增加训练样本数量,防止过拟合
集成多个模型,进一步提高精度
ZFNet
与AlexNet网络结构基本一致!
主要改进:
将第一个卷积层的卷积核大小改为了7×7;
将第二、第三个卷积层的卷积步长都设置为2;
增加了第三、第四个卷积层的卷积核个数
VGG
VGG网络贡献:
使用尺寸更小的3x3卷积核串联来获得更大的感受野;
放弃使用11x11和5x5这样的大尺寸卷积核
深度更深、非线性更强,网络的参数也更少;
去掉了AlexNet中的局部响应归一化层(LRN)层。
VGG16
- 13个卷积层与3个全连接
- 分为5段conv1,…",conv5,每一段中卷积层的卷积核个数均相同
- 所有卷积层均采用3x3的卷积核及ReLU激活函数;
- 所有的池化层都采用最大池化,其窗口大小为2x2、步长为2;
- 经过一次池化操作,其后卷积层的卷积核个数就增加一倍,直至到达512;
思考
问题:小卷积核有哪些优势?
假设卷积层输入和输出的特征图个数均为C:
三个3×3的卷积串联参数个数
(3×3×C)×C×3=27C^2
一个7×7的卷积层卷积参数个数
(7×7×C)×C=49C^2
**回答:**多个小尺寸的卷积核串联可以得到与大尺寸卷积核相同的感受野。使用小卷积核串联构成的网络深度更深,非线性更强,参数也更少。
**问题2:**为什么VGG网络前四段里,每经过一次池化操作,卷积核个数就增加一倍?
回答:
1.池化操作可以减小特征图尺寸,降低显存占用
2.增加卷积核个数有助于学习更多的结构特征,但会增加网络参数数量以及内存消耗
3.一减一增的设计平衡了识别精度与存储、计算开销
最终提升了网络性能!
**问题3:**为什么卷积核个数增加到512后就不再增加了?
回答:
1.第一个全连接层含102M参数,占总参数个数的74%;
2.这一层的参数个数是特征图的尺寸与个数的乘积;
3.参数过多容易过拟合,且不易被训练
如将最后一层卷积核个数增加至1024,这一层参数个数为:771024*4096=205,520,896≈200M
GoogleNet
GoogleNet的创新点:
- 提出了一种Inception结构,它能保留输入信号中的更多特征信息。
- 去掉了AlexNet的前两个全连接层,并采用了平均池化这一设计使得Google Net只有500万参数。比AlexNet变小了两倍。
- 在网络的中部加入了辅助分类器,克服了训练过程中的梯度消失问题。
Inception结构
网络中串联结构存在的问题----后面的卷积层只能处理前层输出的特征图,前层因某些原因,(比如感受野的限制)丢失了某些重要信息后层无法进行找回。
Inception结构是由Google开发的一种深度卷积神经网络架构,旨在解决计算机视觉领域中的图像分类和物体识别任务。以下是对Inception结构的详细介绍:
一、Inception结构简介
Inception结构最初在2014年被提出,并在ImageNet图像分类挑战赛上取得了显著成果。其设计灵感来源于模块化的思想,将不同尺度和不同层级的滤波器并行应用于输入,然后将它们的输出在通道维度上拼接在一起,形成了一个多分支的结构。这种并行使用不同卷积核尺寸的方式可以捕捉到不同尺度的图像特征,提高了网络对输入图像的理解能力。
二、Inception结构的核心组件
Inception模块是Inception架构的核心组件,它由多个并行的分支组成。每个分支都使用不同大小的卷积核进行卷积操作,例如1×1、3×3和5×5的卷积核。此外,为了减少参数数量和计算复杂度,每个分支都会在输入前使用1×1的卷积核进行降维处理。除了卷积层之外,Inception模块还包括池化层,可以帮助减小特征图的空间尺寸,从而提高计算效率和减少过拟合的风险。
三、Inception结构的演变版本
-
Inception v1(GoogLeNet):首次引入了Inception模块,该模块通过并行使用不同大小的卷积核和池化操作来捕获不同尺度的特征。为了减小计算量,GoogLeNet采用了1×1卷积作为“瓶颈层”来降低特征的通道数。
-
Inception v2:在v1的基础上引入了批量归一化(Batch Normalization),这有助于加速训练并提高模型的泛化能力。同时,v2还使用了小卷积核替代大卷积核,以进一步减少参数数量和计算复杂度。
-
Inception v3:整合了Inception v2的特点,并进行了更多改进。例如,不再直接使用max pooling层进行下采样,而是设计了两个并行的分支(一个是pooling层,另一个是卷积层),最后将两者结果拼接在一起。此外,还使用了RMSProp优化器和Factorized 7×7卷积等。
-
Inception v4:引入了一个新的stem模块,该模块放在Inception块之间执行。同时,Inception v4重新提出了三种新的Inception模块(A、B和C)。此外,还引入了专用的“缩减块”(reduction block),用于改变网格的宽度和高度。
四、Inception结构的设计原则
- 避免表征瓶颈:特别是在网络早期,应避免使用极端压缩导致的瓶颈。表征规模应平缓地从输入向输出递减,直到最终任务。
- 更高维度的表征:更容易在一个网络内本地化处理。在卷积网络中加大每层的激活能获得更多的非纠缠特征,可使网络训练更快速。
- 空间聚合:可以在更低维度嵌入上进行,不会损失或损失太多的体现能力。例如在进行3×3卷积之前,可以在空间聚合之前降低输入表征。
- 平衡网络的宽度和深度:通过平衡每阶段的过滤器数量和网络深度,可以实现网络的优化表现。同时提高宽度和深度可以提高网络质量,但只有在并行提高时才能对计算常量进行优化提升。
问题1:平均池化向量化与直接展开向量化有代么区别
AlexNet直接将卷积层输出的特征图矩阵展开得到的图像向量;而GoogLeNet首先对卷积层输出的特征图进行平均池化,这样每个特征图变成一个实数,然后将实数连起来组成图像向量。直观上,GoogLeNet的这种方式一定会丢失信息,那么,它到底丢失了什么信息,这些丢失的信息对最终的分类性能有什么影响?这是我们关注的问题。前面我们介绍过特征响应图上每个位置的值反应了图像对应位置的结构与卷积核记录的语义结构的相似程度。而经过平均池化后得到的实数仅体现了图像中的结构与卷积核记录的语义结构的相似程度,却不能反映该语义结构在图像中的位置。因此,平均池化丢失的是语义结构的空间位置信息。不过,对分类任务而言,忽略语义结构的位置信息,有助于提升卷积层提取到的特征的平移不变性。比如图像中有一了网络的平移不变性。
问题二:利用1×1的卷积进行压缩会损失信息吗?
那么这种压缩是否会损失信息呢?我们以此图为例分析一下这个压缩操作。1×1卷积核的卷积操作主要是对特征图组中同一个位置不同响应值进行非线性操作。以图中位置A为例,这个64维向量代表了前层的64个卷积核在位置A的响应。一般来说,神经网络中同一层的不同
卷积核会记录不同的局部结构:而输入图像中A对应的位置上只会有一种结构。所以,位置A的64个响应值中只有少数几个会有值,大部分都是0。换句话说,位置A的这个64维向量是一个非常稀疏向量,所以,利用1x1卷积进行非线性压缩通常不会损失信息。
五、Inception结构的应用与影响
Inception网络在计算机视觉领域得到了广泛应用,被用于图像分类、目标检测、图像生成等任务。其设计思想和结构对深度学习模型的发展和优化产生了重要影响和贡献。
综上所述,Inception结构是一种具有创新性和实用性的深度卷积神经网络架构,通过并行使用不同尺度的卷积核和池化操作,以及引入批量归一化、小卷积核替代大卷积核等改进方法,提高了网络对输入图像的理解能力和计算效率。
ResNet
持续向一个基础的卷积神经网络上叠加更深的层数会发生什么?
猜测: 加深网络层数引起过拟合,在训练集上错误率降低,在测试集上导致错误率上升。
但是事实却是无论是训练集还是测试集,错误率都在上升。那么这是为什么呢?
原因就是在训练过程中网络的正反向信息流动不通畅,I导致网络没有被充分的训练。
ResNet具有以下贡献:
- 提出了一种残差模块,通过堆叠残差模块可以构建任意深度的神经网络,而不会出现“退化”现象。
- 提出了批归一化方法来对抗梯度消失,该方法降低了网
- 络训练过程对于权重初始化的依赖;
- 提出了一种针对ReLU激活函数的初始化方法;
残差模块
研究者考虑了这样一个问题:浅层网络学习到了有效的分类模式后,如何向上堆积新层来建立更深的网络,使其满足即使不能提升浅层网络的性能,深层网络也不应降低性能。
解决方案:残差模块
假设卷积层学习的变换为F(X),残差结构的输出是H(X),则有:
关于残差结构:
1.残差结构能够避免普通的卷积层堆叠存在信息丢失问题,保证前
向信息流的顺畅。
2.残差结构能够应对梯度反传过程中的梯度消失问题,保证反向梯
度流的通顺。
其他关键点:
- 提出了批归一化策略,降低了网络训练过程对于权重初始化的依赖
- 提出了针对ReLU非线性单元的初始化方法
为什么残差网络性能这么好?
残差网络可以看作是一种集成模型。
1. 解决梯度消失和梯度爆炸问题
残差网络通过引入残差块和跳跃连接(skip connection),允许梯度在反向传播时直接流向前面的层。这种设计有效缓解了传统深度网络中常见的梯度消失和梯度爆炸问题,使得训练非常深的网络(如152层的ResNet)成为可能。
2. 简化优化问题
残差网络的核心思想是学习输入与期望输出之间的残差,而不是直接学习完整的映射。这种残差学习方式使得网络更容易优化,因为残差通常比完整的映射更小,且更易于拟合。此外,跳跃连接使得网络可以轻松学习恒等函数,即使增加更多层也不会降低网络性能。
3. 提高训练效率和收敛速度
由于梯度可以直接传播,ResNet可以在训练过程中使用更大的学习率,并且能够更快地收敛。这种高效的训练方式使得ResNet在大规模数据集上表现出色,能够更快地达到较高的准确率。
4. 强大的特征提取能力
ResNet通过深层网络学习到更复杂的特征表示,从而在图像分类、目标检测等任务中表现出色。其多尺度特征学习能力也使其能够更好地处理不同复杂度的任务。
5. 良好的泛化能力
尽管ResNet是一个非常深的网络,但其设计使得它在训练过程中能够保持良好的泛化能力,不会轻易过拟合。这使得ResNet不仅在训练集上表现优异,同时也能在测试集上保持较高的性能。
6. 灵活的网络结构
ResNet的结构可以根据任务需求灵活调整,例如通过增减残差块的数量来适应不同的数据集和任务。这种灵活性使得ResNet在多种应用场景中都能发挥出色的效果。
7. 信息流的高效传递
跳跃连接不仅解决了梯度问题,还使得输入信息可以直接流向深层网络,避免了信息在多层传递中的丢失。这种高效的信息流传递方式进一步提升了网络的性能。
综上所述,残差网络通过解决梯度问题、简化优化过程、提高训练效率和保持良好的泛化能力,使其在深度学习领域表现出色,成为许多任务的首选网络架构。
总结
- 介绍了5种经典的卷积神经网络AlexNet、ZFNet、VGG、GoogLeNet和ResNet
- 残差网络和lnceptionV4是公认的推广性能最好的两个分类模型
- 特殊应用环境下的模型:面向有限存储资源的SqueezeNet以及面向有限计算资源的MobileNet和ShuffleNet