Advertisement

基于Boosting的深度学习图像分类算法的设计

阅读量:

****

深度学习技术可被视为机器学习领域中的核心技术领域,并被广泛应用于图像分类与目标识别等多个实际场景中,在此基础上我们成功开发出了一种新型算法以优化Resnet网络模型性能

由于Resnet网络结构可视为逐层增强的设计框架,在解决深度学习中梯度消失问题方面具有显著优势。在此基础上并结合提升树理论BF(Base Flow),我们提出了一种新型训练方案:不仅继承了残差网络原有的高效特征提取能力与稳定性这一核心优势,在每一层输出之后增加一个线性全连接层,并使这些新增模块分别对应于一个个较弱的学习器(weak classifiers)。通过此方法,在仅训练浅层模型的前提下即可实现与深层模型相当甚至更好的性能表现

总体而言,在此基础上构建了一个弱学习环境并结合了Boosting理论。通过新型算法对Resnet网络进行训练。

关键词: 深度学习; Resnet网络; Boosting理论

目 录

1.绪论 1

1.1 研究背景及意义 1

1.2 相关研究状况 2

1.3 研究方法内容 2

1.4 论文的整体框架 3

2. 相关技术 3

2.1 Resnet网络的相关基础知识 4

2.1.1 Resnet网络的结构 4

2.1.2 Resnet网络的特点 4

2.2 Boosting的相关基础知识 5

2.2.1 Boosting的定义 5

2.2.2 Boosting的工作机制 5

3. 基于Boosting的图像分类算法设计与实现 7

3.1 算法的提出 7

3.1.1提出新算法的原因 7

3.1.2 设计算法的优点 7

3.2 设计网络的构建 8

3.3 设计网络的训练与测试 9

3.3.1 Loss的训练方法及变化 9

3.3.2 预测值的变化 10

4. 实验 11

4.1 数据集的介绍 11

4.1.1 Cifar10数据集 11

4.1.2 Cifar100数据集 11

4.2 Cifar10-对于Resnet网络及Resnet-Boosting网络的训练及测试 12

4.2.1 数据集为Cifar10 网络为Resnet网络,未做任何改变 12

4.2.2 数据集为Cifar10 网络为Resnet-Boosting网络 13

4.3 Cifar100-对于Resnet网络及Resnet-Boosting网络的训练及测试 15

4.3.1 数据集为Cifar100 网络为Resnet网络,未做任何改变 15

4.3.2 数据集为Cifar100 网络为Resnet-Boosting网络 17

总结与展望 19

参考文献 20

1.绪论

1.1 研究背景及意义

如今深度学习的应用领域已经十分广泛。它模拟的是人类大脑中的神经网络结构,并且能够处理包括图像、文本等多种形式的数据。鉴于深度学习技术的不断发展进步以及我们面临的数据量日益增加的趋势,在图像分类和目标识别这类应用场景中展现出显著的优势。非线性模型的优势更加明显,在这种情况下可以更好地从输入数据中提取关键特征。

大量实验证明,在图像分类及目标识别任务中,若要达到较高的性能指标,则需要构建较为复杂的深层网络架构。然而,在实际应用过程中会遇到梯度爆炸或消失的问题。通常可采用正则化方法来缓解此问题,但随之而来的则是网络退化现象:即在模型训练过程中虽然准确率并未像预期般持续增长,在某一点处达到了饱和状态后便趋于稳定,并未继续提升甚至可能出现反向下降的情况。针对这一困境,研究者们提出了ResNet网络理论,在其框架下通过引入残差连接的方式实现了输入信号直接传递到更深的层,并通过学习各层之间的差异来构建残差块结构。这样一来,在每一步仅需学习残差部分即可有效避免深度学习中的退化问题,并因此获得了较广泛的适用性和研究价值[1]。

在学习和应用Boosting思想的过程中, 我们应当认识到它并非单一算法, 而是由一系列通过适当加权结合多个弱学习器来增强整体性能的方法[2]. 当我们遇到一个问题时, 仅凭一位专家的意见可能会有所偏颇, 无法充分考虑所有相关因素. 我们可以通过组织多位专家对同一问题展开分析, 最终综合各位专家的独特专长与关注焦点, 得到更加全面、科学的解决方案.

在此基础上,在此基础上

1.2 相关研究状况

深度学习模型的训练被视为当前人工智能研究中的热门课题。然而,在这一领域中所面临的核心难题体现在损失函数呈现高度非凸特性上。针对这一难题的解决方案主要包括两类:第一类方法侧重于选择既具有优良几何特性的损失函数与网络架构组合;第二类方案则聚焦于优化模型的学习机制以改善性能表现。

许多学者先前通过多种途径探索了网络模型与增强技术的研究领域。系统性地提出了基于单隐层凸神经网络以及用于学习线性分类器权重梯度增强的方法[4]。然而该方法未能扩展至包含多层隐含层的深层结构[4]。针对这一问题,在2014年Shalev-Shwartz团队开发并发表了自增算法框架,并成功实现了整体系统性能水平的重大提升[5]。

AdaNet算法的设计目标在于通过一种基于提升方法(Boosting)的新颖框架来构建人工神经网络集合,并在此过程中实现了对泛化性能的有效优化[6]。该方法采用了传统提升框架来组合多个弱学习器(sub-networks),并通过逐层递进的方式构建了一个多层次的学习系统[6]。在AdaNet架构中,在每个较低层次的学习单元都需要输入到一个独立的学习模块中进行处理,在此前提下设计出了一种复杂的多层级连接方式:即顶层学习模块需要与所有底层子网络进行深度整合以完成最终决策过程[6]。这种设计虽然增加了系统的计算复杂度但显著提升了模型的整体性能表现[6]

1.3 研究方法内容

类似于AdaNet网络,在本研究中我们同样采用了提升机制的基础上针对残差模块依次进行逐级优化[7]。具体而言,在每一级残差模块输出端添加了一个线性全连接层,并通过简单的加法操作实现了特征融合过程从而提升了整体特征质量使得模型架构更加简洁明了。研究重点在于研究ResNet神经网络架构在此基础上提出了一个新型训练算法并确保了深度残差神经网络在有限精度下的泛化能力

在训练与测试的过程中,在每一个epoch结束后都会立即执行一次测试,并详细记录每次测试所得出的分类准确率数值。持续不断地完成这一过程后会从观测结果中获取关键信息。为了深入研究该方法的效果,在不同的标准数据集上开展对比实验研究,在每种数据集基础上维持其他参数变量不变,并仅调整网络结构参数来进行实验验证。通过观察分类准确率随遍历次数的变化情况来验证设计网络的有效性

1.4 论文的整体框架

本文主要基于Resnet网络为基础结合Boosting理论作为指导进行改进因此整体的论文框架可以分为如下几个部分

  • 摘要:用于概述文章的核心内容和研究思路。

  • 绪论:分为4个小节:

    • 首先阐述研究背景及其重要性;
    • 其次介绍相关研究现状及其发展意义;
    • 同时对比现有方法并提出改进策略;
    • 最后详细说明本文创新点。
  • 相关技术:系统性地学习并理解以下内容:

    • Resnet网络的基本结构及其特点;
    • Boosting算法的基本定义与其工作原理。
  • 改进算法:系统地阐述了以下内容:

    • 改进方案的具体设计;
    • 各组件实现细节和技术支撑。
  • 实验验证:通过在多个数据集上的实验验证,
    研究模型分类准确率的变化情况,
    分析现有模型与新模型之间的性能差异。

  • 总结与展望:对全文研究成果进行归纳总结,
    提出当前研究存在的局限性,
    并对未来可能的研究方向作出展望建议。

  • 参考文献:完整标注所有引用来源,
    包括理论基础概念和技术实现细节。

    1. 相关技术

2.1 Resnet网络的相关基础知识

2.1.1 Resnet网络的结构

基于VGG网络结构增添了许多快捷连接的方式,在这种情况下, 每次学习仅限于残差部分. 每个ResNet网络都由多个残差模块堆叠而成, 其中每一个残差模块均包含一个神经网络模型以及一个快捷连接.

一个残差块的结构如图2.1所示:

图 2.1: A Residual Block of ResNet

第T层残差块的输出为:

其中X为网络的输入,

代表第T层的卷积层,

代表T-1层的最终输出。

2.1.2 Resnet网络的特点

设ResNet网络包含T层,则第T层相当于整个网络的最终输出结果。这相当于将所有基础残差块的输出结果相加。这表明ResNet网络通过逐步增强机制实现了特征提取能力的提升。

表示从分类器输出到标签的映射。

通过设计快捷路径, 使得每次仅限于学习输出与输入之间的差值, 即使在较深层的网络架构中, 梯度也可以得以高效传递, 从而有效缓解了梯度消失的问题, 从而使Resnet网络更加适合应用于更深层的网络结构[8]。

2.2 Boosting的相关基础知识

2.2.1 Boosting的定义

该技术涉及一系列机器学习方法(machine learning techniques),其主要目标是提升弱学习器的表现水平(performance of weak learners))。该技术的核心理念在于通过优化数据选择来改进模型性能(model performance)。具体而言,在每一次数据更新时都会重新选择训练集(training set),从而确保模型能够持续积累有价值的信息(valuable information)。通过集成多个基础模型(weak classifiers),提升整体系统的预测能力(predictive capability))。文献[9]对此进行了详细讨论。

其可理解为:当遇到一个问题时,单纯依靠一个专家的意见往往显得片面,因为这种单一意见可能未能充分考虑到所有相关因素.因此综合各专家的意见是一种更为合理的方法.因为每个专家的特点各异,对于问题的看法也存在差异.综合各 expert的观点将能提供更为全面的支持.从而最终得出更为科学合理的方案.这种方法不仅有助于提高方案的质量,而且能够更加清晰地把握问题的本质,从而实现最佳解决方案的目标.

2.2.2 Boosting的工作机制

基于输入的数据集进行训练后生成第一个学习器,并根据该学习器的表现(即分类准确率)来调整权重分配。对于分类错误的数据点,则适当减少其权重,在后续的训练过程中给予更多关注。如此反复循环操作直至生成预定数量的学习器后将所有学习器按照一定权重进行集成处理如图2.2所示

式:

图2.2 Boosting的工作机制

Boosting思想中的弱分类器并不是表示其在整体表现上较差,并非如此;而是仅仅在其特定的数据子集上展现出较高的准确性,在其他部分则表现得相对平庸;因此将多个这样的弱分类器集成起来,并让它们各自发挥专长,在自己擅长的数据区域进行处理;从而实现对整个数据集的整体较好处理;最终实现了对所有数据的全面且高效的分类目标[11]。

  1. 基于Boosting的图像分类算法设计与实现
    1. 算法的提出

3.1.1提出新算法的原因

通过研究ResNet网络可知,在基于VGG的设计框架上进行了优化以缓解深度前向传播中的梯度消失问题。该结构通过巧妙设计使得在网络深度增加的同时避免了梯度消失现象。具体而言,在特征图尺寸减少一半时特征图的数量翻倍从而维持了整个网络的复杂度。

然而该方法仍存在一些局限性,在实施过程中需要较长的训练时间。为此我们提出了一种新的算法以缓解这一缺陷同时保留了Resnet网络原有的优势显著提升了网络的整体性能与实际效果

从对Resnet架构的理解出发,在分析其内部机制时我们发现该网络由多个残差模块构成 输入依次通过每一个残差模块 这些模块之间会相互影响 并非独立运作 这种相互作用使得每一种模块都能学习到独特的特征 这些特征则是逐个模块的学习结果 最终整个网络的整体表现等同于各模块递进效应的叠加 从这里我们联想到Boosting的基本概念及其在分类器优化中的作用 将这一思想引入到Resnet框架中 则可显著提升各残留模块的表现 其整体表现等同于各模块递进效应的叠加 每层输出经全连接层处理后输出 并未牺牲Resnet原有的优势

3.1.2 设计算法的优点

基于ResNet架构的基础上优化网络结构以展现其更优的表现我们首先在每一层输出特征上增加一个线性全连接层并通过全连接层获取这些特征从而实现了从各层中获取经过训练后的特征无需再对已分类的数据进行额外处理这种设计使得后续阶段所需提取的关键特征数量减少从而提升了模型的整体效率并降低了计算复杂度具体而言我们每一步骤都优先提取那些表现良好的类别然后对剩余部分重新进行了训练与验证最终达到了预期的学习效果

3.2 设计网络的构建

在系统地学习和深入理解ResNet网络及相关Booster技术基础之后,在此基础上开发出了创新性的网络架构设计。该研究旨在提升图像分类系统的准确率,并参考文献[13]提供了相关的理论支持

在构建Resnet网络的过程中

图3.1:Resnet网络的基本结构

如图 3.1 所示可知 Resnet 网络由 6 个组成部分构成。其中第一部分是一个以 7×7 的卷积层开头。接着执行一次 3×3 的最大池化操作。中间共包含四组 BasicBlock 结构。其中第 2 至第 5个模块分别命名为 conv2、 conv3、 conv4 和 conv5。经过上述结构设计后,则形成了典型的 ResNet-18 模型架构。

通过采用Boosting算法的思想优化网络架构[14]

将整体的结构改进方案用图示表示出来,如下图所示:

图3.2:基于 Boosting的图像分类算法设计的结构图

通过观察图3.2可以看出, 该网络架构通过逐步增强了各残差块的效果来实现对Resnet网络性能的有效提升, 所有全连接层输出结果经过求和运算后将作为Resnet网络的整体输出[15].

3.3 设计网络的训练与测试

3.3.1 Loss的训练方法及变化

网络上的Loss值即是我们在定义了损失函数Criterion之后计算出的结果,在该框架下衡量网络预测结果与真实标签之间的误差程度。具体而言,在没有损失的情况下理想的结果应当是输入图像与其真实标签完全一致的情况;而实际情况下由于网络处理后的输出与原始图像存在差异(此处差异并不等于零),因此产生了对应的损失值Loss。对于图像分类任务而言即是观察图像被正确分类的关键指标[16]。为了使模型性能达到最佳状态我们需要通过反向传播算法不断优化模型参数以减小Loss值直至满足预期的标准或完成所有训练迭代过程。在这个研究中我们采用PyTorch框架进行实验验证并利用其内置功能完成误差计算通过调用backward()方法实现梯度自动求解从而指导参数更新过程。

在完成了网络结构重构之后,在对网络进行训练的过程中, 为了改进性能, 在调整相关的参数时, 我们需要相应地进行调整。首先, 分别求解了各层输出及其与标签之间的损失值; 然后将这些损失总和作为Total_Loss来综合评估模型的整体性能。接着实现了误差反向传播的过程, 即完成梯度传播机制的应用。在此过程中, 所采用的是PyTorch框架中的CrossEntropyLoss函数, 即交叉熵损失函数, 该方法特别适用于多分类问题场景。基于自动求导功能, PyTorch能够高效地计算出各个参数对应的梯度值; 在持续优化的过程中, 我们观察到模型的整体损失值会逐渐减小直至趋于稳定。

3.3.2 预测值的变化

在训练与测试的过程中, 预测即相当于基于已知自变量推导出相应因变量. 分类定义可被视为利用一部分属性推断另一部分属性的情形, 两者本质上具有相同的意义[17].

在我们设计的分类网络训练与测试的过程中,在传统方法中预测值由原始输出Outputs的最大值决定。然而基于提升算法的思想下进行改进:并结合所有全连接层输出y1+y2+y3+y4进行计算,并通过计算总和并取最大值得到最终预测结果

请放心使用!

请注意:因对网络架构进行了调整

全部评论 (0)

还没有任何评论哟~