版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章:深度学习性能评估深度学习作为AI领域最具影响力的核心技术,已形成判别网络模型与生成网络模型两大技术范式,在计算机视觉、NLP等关键领域展现出强大的特征表征能力。同时在网络模型评估和泛化能力方面,也已形成系统化的指标体系:分类任务采用准确率、精确率、召回率、混淆矩阵等指标;检测任务依赖平均精度均值、交并比等空间度量;生成任务则发展出峰值信噪比、结构相似性、弗雷歇距离等分布相似性评估方法。另外,在深度学习网络模型验证中,需要系统地考虑训练误差和测试误差问题,以及过拟合和欠拟合现象,并通过精心设计不同消融实验来强调研究结论的科学性和可复现性。本章将对这些关键技术要素进行系统阐述和深入分析。引言第十二章
深度学习性能评估第四章
卷积神经网络12.1判别模型和生成模型12.2模型评估和泛化能力12.3消融实验设计和指标第十二章
深度学习性能评估12.1判别模型和生成模型12.1.1判别网络模型12.1.2生成网络模型12.1.1判别网络模型
或者通过条件概率分布建模为12.1.1判别网络模型
图12.1判别网络模型12.1判别模型和生成模型12.1.1判别网络模型12.1.2生成网络模型12.1.2生成网络模型
12.1.2生成网络模型深度学习生成网络则是基于上面的模型而形成的一种生成关系,整个过程如图12.2所示。典型的生成网络包括GAN、VAE、ChatGPT等,这些也已经在前面章节进行了详细讲述。图12.2生成网络模型12.1.2生成网络模型
第四章
卷积神经网络12.1判别模型和生成模型12.2模型评估和泛化能力12.3消融实验设计和指标第十二章
深度学习性能评估12.2模型评估和泛化能力12.2.1训练误差与测试误差12.2.2模型的泛化能力12.2.3过拟合与欠拟合12.2.1训练误差与测试误差深度学习的目的是使学到的网络模型不仅对已知数据而且对未知数学都能有很好的预测能力。不同的学习方法会给出不同的网络模型。当损失函数给定时,基于损失函数的网络模型训练误差(TrainingError)和测试误差(TestError)就自然成为学习方法评估的途径。注意,深度学习网络架构中具体采用的损失函数未必是评估时使用的损失函数,两者可以不一致,当然理想情况是两者一致。12.2.1训练误差与测试误差在区别训练误差和测试误差之前,了解下什么是误差?学习到的网络模型在样本上的预测结果与样本的真实结果之间的差称之为误差,其中网络模型在训练集上的误差称之为训练误差,在新样本上的误差称为测试误差。训练误差反映的是网络模型的学习能力,它是网络模型关于训练数据集的平均损失,用于评估网络模型在训练数据上的表现。在训练过程中,通常会通过优化算法来最小化训练误差,以提高网络模型的拟合能力。测试误差反映的是网络模型对未知数据的预测能力,换言之,测试误差是网络模型在新数据上的平均损失,这样可以评估网络模型的泛化能力,测试误差小的网络模型通常具有更好的泛化性能,这将在下一节继续论述。12.2.1训练误差与测试误差
测试误差是网络模型关于测试数据集的平均损失,表示为
相比于训练误差,测试误差更能反映网络模型对未知的测试数据集的预测能力。也就是说,给定两种网络模型,测试误差小的网络模型具有更好的预测能力,是更有效的方法。12.2.1训练误差与测试误差无论是训练误差还是测试误差,都跟网络模型的复杂度(比如不同参数个数)有关,如图12.3所示,给出了训练误差和测试误差与网络模型复杂度之间的关系。图12.3训练误差和测试误差与网络模型复杂度的关系当网络模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的网络模型的复杂度过大时,就会发生过拟合现象,这将在后续小节中重点论述。这样,在学习时就要防止过拟合,进行最优的网络模型选择,即选择复杂度适当的网络,以达到使测试误差最小的学习目的。12.2模型评估和泛化能力12.2.1训练误差与测试误差12.2.2模型的泛化能力12.2.3过拟合与欠拟合12.2.2模型的泛化能力泛化能力是指深度学习网络模型对于新样本的适应能力,也就是说网络模型在训练过程中没有见过的数据上的表现能力。泛化能力好的网络模型可以很好地适应新数据,而不会过度拟合训练数据,这是评价一个网络模型优劣的重要标准。简单地说,泛化能力是指网络模型利用新的没见过的数据而不是用于训练的数据做出正确预测的能力。泛化能力是深度学习中一个至关重要的概念,用于衡量深度神经网络学习到的模型在整个样本空间上的表现。在训练阶段,网络模型通过大量的数据进行训练,学习了输入和输出之间的映射关系。然而,网络最终的目标是在没有见过的数据上进行准确预测,这就需要网络模型具备较好的泛化能力。泛化能力的重要性主要体现在以下几个方面:12.2.2模型的泛化能力1.防止过拟合深度学习网络模型容易在训练阶段出现过拟合的问题,即网络在训练数据上表现良好,但在新数据上表现较差。过拟合的出现可能是由于网络记住了训练数据的噪声或特定的特征,而无法正确地对新数据进行泛化。泛化能力可以帮助解决过拟合问题,通过约束网络的训练过程,使其在训练数据上获得适当的拟合程度,同时能够正确地对未知数据进行预测。一个具有较好泛化能力的网络能够更好地适应多样性的数据分布,在预测过程中减少错误率,提高网络的可靠性和稳定性。12.2.2模型的泛化能力2.处理噪声和不完整数据在实际应用中,训练数据通常会存在噪声或者缺失值。具有较好泛化能力的深度学习网络模型可以通过学习有效的特征表示,忽略噪声或缺失的部分,从而对不完整的数据进行预测。泛化能力也可以帮助网络处理具有一定噪声的数据,从而减少网络对于噪声的敏感程度,提高网络模型的鲁棒性和稳定性。12.2.2模型的泛化能力3.对于数据分布变化具有适应性在实际应用中,数据的分布可能随着时间的推移而发生变化。一个良好的网络模型需要具备较好的泛化能力,能够适应数据分布的变化,保持网络的准确性和稳定性。泛化能力的作用在于使网络能够从历史数据中学习到普遍规律,并能够将这些规律应用到未知数据上。通过不断迭代和更新网络,保持网络模型的泛化能力,可以使网络模型具备更长久的适应性。12.2.2模型的泛化能力前面提到深度学习泛化能力的重要性,那在实际应用中有着什么样的重要意义呢?具体体现在以下几个方面:1.提高模型的可用性和适用性一个具备较好泛化能力的网络模型可以对各种不同情况的数据进行有效的预测和处理,使网络具备更广泛的应用场景。泛化能力的提高可以使得网络不仅仅适用于特定的数据集,而是能够泛化到更多的数据分布中。12.2.2模型的泛化能力2.降低人工标注数据的需求深度学习网络模型通常需要大量的标注数据用于训练,以获得较好的性能。然而,标注数据的获取成本通常很高。通过提高网络的泛化能力,可以在有限的标注数据条件下,使网络获得更好的性能和泛化能力,从而降低对于大量标注数据的需求。3.可迁移学习的支持泛化能力的提高还可以使得深度学习网络模型在不同领域或任务中进行迁移学习。通过预训练的网络模型在新的任务上进行微调,可以更快速地适应新任务,提高网络模型的泛化能力和实际应用性。12.2.2模型的泛化能力
基于前面的分析,讨论下影响泛化能力的因素:1.数据质量数据质量是深度学习中最重要的因素之一,对网络模型的泛化能力产生了极大的影响。如果训练集中包含各种不同噪声、异常值、缺失值等不规则错误,则网络会过度适应这些错误,这对泛化能力产生负面影响。因此,保证训练集中没有错误、缺失或异常值,同时使用代表性的数据作为验证集和测试集,都是提高泛化能力的关键步骤。12.2.2模型的泛化能力2.网络复杂度网络复杂度是指网络的参数量和表达能力大小。网络过于简单,如线性模型,会导致欠拟合,既网络无法拟合足够的训练数据,无法在未见过的数据上取得良好的效果。然而,如果网络过于复杂,比如一个充满噪声的数据集只有少量样本的情况下引入了深度神经网络模型,它会容易过适应训练集,从而失去泛化能力。因此,需要根据具体的任务,在网络复杂度和泛化能力之间进行权衡。3.训练时的超参数设置超参数是在训练过程中手动设置,如学习率、正则项以及各层神经网络中的节点数。良好的超参数设置可以提高泛化能力,错误的设置则会导致过拟合或欠拟合。比如,学习率过高导致过度适应数据,而学习率过低则导致模型学习不充分。因此,设置适当的超参数是提高泛化能力的关键要素之一。12.2模型评估和泛化能力12.2.1训练误差与测试误差12.2.2模型的泛化能力12.2.3过拟合与欠拟合12.2.3过拟合与欠拟合在深度学习中,不仅要求网络模型对训练数据集有很好的拟合结果(训练误差小),同时也希望它可以对未知数据集(验证集和测试集)有很好的拟合结果。网络模型的拟合能力分为欠拟合(Under-Fitting)、正常拟合和过拟合(Over-Fitting),如图12.4所示。图12.4网络模型的拟合能力12.2.3过拟合与欠拟合欠拟合通常指的是网络在训练集、验证集和测试集上的表现都较差,无法很好地捕捉数据的特征和模式。简单地说,网络模型描述能力太弱,以至于不能很好地学习到数据中的规律。产生欠拟合的原因通常是网络模型过于简单,解决欠拟合问题的方法包括提高模型复杂度、增加特征数量、调整超参数等。过拟合指的是网络模型在训练集上表现很好,但在验证集和测试集上表现较差。这是因为网络模型过度地学习了训练数据的噪声和细节,导致其泛化能力差。通俗地说,是指学习时选择的网络模型所包含的参数过多,以至于出现这一网络模型对已知数据预测得很好,但对未知数据预测得很差的现象。这种情况下网络可能只是记住了训练集数据,而不是学习到了数据特征。解决过拟合问题的方法包括增加训练数据、使用正则化方法(如正则化、正则化)、减少网络模型复杂度、使用更简单的网络模型结构等。12.2.3过拟合与欠拟合这里重点介绍下如何应对过拟合问题。最优方案是获取更多的训练数据,只要足够多的数据,让网络模型学习尽可能多的情况,它就会不断修正自己,从而得到更好的结果。就类似于当初参加高考的你,训练数据就类比是你在刷题,当你刷了非常非常多的题,并学会他们的特征,那么你应对高考则是游刃有余了。如何获取更多数据,可以有以下几个方法:
1.从数据源头获取更多数据;
2.根据当前数据集估计数据分布参数,使用该分布产生更多数据;3.通过数据增强方式扩充数据,如在物体分类问题里,物体在图像中的位置、姿态、尺度,整体图片明暗度等都不会影响分类结果,因此就可以通过图像平移、翻转、缩放、切割等手段将数据库成倍扩充。12.2.3过拟合与欠拟合
12.2.3过拟合与欠拟合
12.2.3过拟合与欠拟合
12.2.3过拟合与欠拟合应对欠拟合问题的第三种方案是使用随机Dropout失活机制,已在第4章中做了简单介绍。在网络模型训练过程中,Dropout会随机地将深度学习网络中一部分神经元的输出设置为0,即丢弃这些神经元,这样可以使得网络不依赖于任何一个特定的神经元,从而防止过拟合,增强网络的泛化能力。Dropout为什么能够防止过拟合呢?原因一是Dropout使得每次更新梯度时参与计算的连接权重数减少了,降低了网络模型容量;二是Dropout鼓励权重分散,从这个角度来看Dropout也能起到正则化的作用,进而防止过拟合。总的来说,通过Dropout每次输入一个样本,就相当于该神经网络尝试了一个新的结构,但是所有这些结构之间共享连接权重,因为神经元不能依赖于其他特定神经元而存在,所以这种技术降低了神经元复杂的互适应关系。正因如此,网络模型需要被迫学习更为鲁棒的特征。12.2.3过拟合与欠拟合Dropout的一些关键特点:1.
随机性:在每次训练迭代中,Dropout会随机选择一些神经元丢弃,这种随机性有助于减少神经元之间的共适应性,从而减少过拟合的风险。2.训练和推理时的不同:在训练过程中,Dropout会被应用,而在推理过程中通常不会使用Dropout,保证确定性的输出。3.减少过拟合:Dropout通过减少神经元之间的协作,迫使网络模型学习更加鲁棒和泛化的特征。4.适用范围:Dropout通常适用于全连接层和卷积层,但不适用于RNN等具有记忆性的结构,通常将丢弃操作使用在全连接层的输出上。第四章
卷积神经网络12.1判别模型和生成模型12.2模型评估和泛化能力12.3消融实验设计和指标第十二章
深度学习性能评估12.3消融实验设计和指标12.3.1设计步骤12.3.2交叉验证12.3.3通用参数12.3.4损失函数12.3.5优化器12.3.6评价指标12.3消融实验设计和指标在深度学习领域,消融实验(AblationStudy)是一种评估网络模型中各个组成部分重要性的方法。本节将详细介绍消融实验概念、设计步骤、交叉验证、损失函数和评价指标,展示其在实际应用中的作用。12.3.1设计步骤消融实验是一种通过暂时移除或“消融”网络模型的某些部分,来观察网络模型性能变化的方法。通俗地讲,消融实验相当于采用控制变量法,通过去除或修改模型中的某些组成部分(如特征、模块、算法组件等),并观察其对模型性能的影响,从而深入理解各个组成部分的贡献。这种方法可以帮助理解网络模型的决策过程,并确定哪些特征对网络模型性能最为关键。举例来说:为了增强基准模型(Baseline)的性能,引入了A和B两个组件。为了确证这两个组件的有效性,便需开展消融实验:实验一:基于原始基准模型加入A组件(Baseline+A),进行效果对比。实验二:基于原始基准模型加入B组件(Baseline+B),进行效果对比。实验三:基于原始基准模型同时引入A和B两个组件(Baseline+A+B),进行效果对比。12.3.1设计步骤通过以上三个实验,就能揭示A和B两个组件对基准模型的改进效果。比如,若实验一和实验二的表现均不及实验三,则表明A与B共同作用时更为有效。如果实验一和实验二的结果各自都超过了仅使用基准模型的场景,则说明A和B各自都具备一定效果。12.3.1设计步骤前面的消融实验是通过加法来验证组件性能,当组件较多时,也可以通过减法来验证组件性能。假设引入了A、B和C三个组件,如果用减法来控制变量设计实验:实验一:在模型中去除A,同时保持B和C不变。如果发现性能有所下降,这说明A组件确实对模型的性能起到了正面作用。A的存在提高了模型的效果,其贡献是有价值的。实验二:在保持其他条件不变的情况下,仅去除B组件。如果观察到性能下降的幅度比仅移除A时还要大,这表明B在网络模型中扮演着更为关键的角色。换句话说,B的贡献不仅是实质性的,而且相对于A来说,它对于维持或提高模型性能的重要性更大。实验三:尝试只去掉C,其他保持原状。如果这次移除后模型的性能几乎没有变化,这表明C组件对模型性能的贡献可以忽略不计。在这种情况下,可以认为C的存在与否对最终的性能影响不大,非核心贡献。12.3.1设计步骤通过以上的实验可知,消融实验是一种非常有效验证各个组件对整体性能影响的方法,实施步骤包括:1.确定研究目标与网络模型的关键组成部分:在进行消融实验之前,首先需要明确你要研究什么,比如网络模型的哪个部分是最重要的。2.准备基准模型,并训练得到基线性能:需要一个可以使用的基础模型,并在训练集上进行训练。3.选择需要消融的组件,并进行消融实验:选择消融的组件,比如移除某一层或改变损失函数的类型,并观察性能变化。如果去除某个组件导致性能大幅下降,这通常意味着该组件在网络模型中扮演了重要角色。反之,如果去除某个组件对性能影响较小,那么这个组件可能不是决定性因素。4.记录并分析消融实验的结果:在每次实验后,需要记录下网络模型的性能指标(如准确率,目标损失等),生成报告,总结消融实验的发现与结论。12.3消融实验设计和指标12.3.1设计步骤12.3.2交叉验证12.3.3通用参数12.3.4损失函数12.3.5优化器12.3.6评价指标12.3.2交叉验证交叉验证(CrossValidation)是一种用于评估深度学习网络模型性能的统计方法。交叉验证的目的是让被评估的网络模型达到最优的泛化性能,找到使得模型泛化性能最优的超参值。12.3.2交叉验证如果给定的样本数据充足,进行网络模型验证的一种简单方法是随机地将数据集切分成三部分,分别为训练集(TrainingSet)、验证集(ValidationSet)和测试集(TestSet)。训练集用来训练模型,验证集用于模型的选择,而测试集用于最终对模型的评估。在学习到的不同复杂度的模型中,选择对验证集有最小预测误差的模型,整个交叉验证过程如图12.5所示。图12.5交叉验证12.3.2交叉验证但是,在许多实际应用中数据是不充足的。为了选择好的网络模型,可以采用交叉验证方法。交叉验证的基本思想是重复地使用数据,即把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择。1.简单交叉验证简单交叉验证方法是:首先随机地将已给数据分为两部分,一部分作为训练集,另一部分作为测试集(比如70%的数据为训练集,30%的数据为测试集),这里将前面提到的训练集和验证集合并在一起,统一为训练集;然后用训练集在各种条件下(比如不同的参数个数)训练网络模型,从而得到不同的模型;在测试集上评价各个模型的测试误差,选出测试误差最小的模型。该验证方法的优点在于处理简单,只需随机地把原始数据分为两组即可。缺点在于没有真正达到交叉的思想,由于是随机地将原始数据分组,所以最后验证集分类准确率的高低与原始数据的分组有很大的关系,得到的结果并不具有说服性。12.3.2交叉验证2.K折交叉验证实际应用中,使用最多的是K折交叉验证,方法如下:首先随机地将已给数据切分为K个大小相同、互不相交的分区,每个分区称为一个“折叠”;然后利用K-1个分区的数据训练模型,利用余下的一个分区验证模型;将这一过程对可能的K种选择重复进行;最后选出K次评测中平均验证误差最小的模型,整个过程如图12.6所示。在一般深度学习应用中,选择K=45,即将数据集分成5份,轮流将其中4份作为训练数据,1份作为测试数据,进行试验。图12.6
折交叉验证12.3.2交叉验证该验证方法的优点在于整个数据集既用作训练集又用作验证集。缺点在于不能用于不平衡的数据集,比如,有一个只有“0”类和“1”类的不平衡数据集,其中80%的数据属于“0”类,其余20%的数据属于“1”类,在训练集大小为80%,测试数据大小为数据集的20%的情况下进行训练测试分割。这就可能会发生“0”类的所有80%数据都在训练集中,而“1”类的所有数据都在测试集中。所以这样的模型不能很好地概括测试数据,因为它之前没有看到过“1”类的数据。第二个缺点是不适合时间序列数据,对于时间序列数据,样本的顺序很重要,但是在K折交叉验证中,样本是按随机顺序选择的,因此容易破坏时间序列数据的顺序。12.3.2交叉验证3.分层K折交叉验证分层K折是K折交叉验证的增强版本,主要用于应对K折交叉验证无法解决的不平衡数据集。就像K折交叉验证一样,整个数据集被分成大小相等的K折,分层的意思是说在每一折中都保持着原始数据中各个类别的比例关系,比如说:原始数据有3类,比例为1:2:1,采用3折分层交叉验证,那么划分的3折中,每一折中的数据类别仍保持着1:2:1的比例,这样的验证结果更加可信,如图12.7所示。图12.7
分层K折交叉验证12.3.2交叉验证该验证方法的优点在于对于不平衡数据非常有效,分层交叉验证中的每个折叠都会以与整个数据集中相同的比率表示所有类别的数据。其缺点在于同样不适合时间序列数据,对于时间序列数据,样本的顺序很重要。12.3.2交叉验证4.留一交叉验证留一交叉验证是K折交叉验证的特殊情形,主要适用于数据缺乏的情况。假设原始数据有N个样本,那么留一交叉验证是将每个样本单独作为验证集,其余N-1的个样本作为训练集进行轮流验证,故会得到N个模型,用这N个模型的分类准确率的平均数作为留一交叉验证的性能结果。该验证方法的优点是每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠。特别地,实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的。其缺点是计算成本高,需要建立的模型数量与原始数据样本数量相同,当数据集较大时几乎不能使用。12.3.2交叉验证5.蒙特卡罗交叉验证蒙特卡罗交叉验证是一种非常灵活且简单的交叉验证策略。在这种技术中,数据集被随机划分为训练集和验证集。操作步骤是首先确定要用作训练集的百分比和用作验证集的百分比。如果训练集和验证集百分比总和不是100,则剩余的数据不会用于训练集或验证集。比如有100个样本,其中50%的样本用作训练集,20%的样本用作验证集,那么剩下的20%将不被使用,然后对这种拆分重复多次取其平均值作为蒙特卡罗交叉验证的性能结果,如图12.8所示。该方法的优点在于可以自由使用训练和验证集的大小,以及自由选择重复的次数,而不依赖于重复的折叠次数。图12.8蒙特卡罗交叉验证12.3.2交叉验证6.时间序列交叉验证时间序列数据是在不同时间点收集的数据。由于数据点是在相邻时间段收集的,因此观测值之间可能存在相关性。对于时间序列数据,该如何进行交叉验证?在时间序列数据的情况下,不能随机选择样本并将它们分配给训练集或验证集,因为使用未来数据中的值来预测过去数据的值是没有意义的。由于数据的顺序对于时间序列相关问题非常重要,所以需要根据时间将数据拆分为训练集和验证集,也称为“前向链”方法或滚动交叉验证。图12.9时间序列交叉验证如图12.9所示,即先从一小部分数据作为训练集开始,基于该集合,预测稍后的数据点并检查准确性,然后将预测样本作为下一个训练数据集的一部分,并对后续样本进行预测。12.3消融实验设计和指标12.3.1设计步骤12.3.2交叉验证12.3.3通用参数12.3.4损失函数12.3.5优化器12.3.6评价指标12.3.3通用参数
12.3.3通用参数
图12.10不同学习率的作用12.3.3通用参数(2)批次大小
在训练网络模型时,需要计算损失函数关于模型参数的梯度来更新参数,批次大小(BatchSize)决定了每次计算梯度时所使用的样本数量。假设训练集中共包含个样本,批次大小为,则每次迭代计算梯度时,会从数据集中选取个样本组成一个批次,计算这个样本的平均损失函数关于参数的梯度。在设置批次大小的过程中,较大的批次可以利用硬件的并行计算能力,一次处理更多的样本,减少迭代次数,从而在一定程度上缩短训练时间。另外,较大的批次也可以使梯度估计更加稳定,因为它综合了更多样本的信息。根据统计中的大数定律,样本数量越多,梯度估计越接近真实的梯度方向,网络模型更新更稳定,更有可能朝着最优解的方向收敛。但同时较大的批次有可能会使网络模型过于适应训练数据,导致过拟合。12.3.3通用参数
较小的批次可以让网络模型在训练过程中更频繁地接触到不同的样本组合,更好地捕捉数据的多样性,有助于提高模型的泛化能力。所以面对实际问题,要根据训练集大小、网络模型结构、模型训练情况以及各种因素来综合考量批次大小的选取。一般情况下,可以根据自己设备的性能以及数据集的大小和类型进行选择,可以选择内存大小的1~4倍且为2的幂作为批处理大小的上限。12.3.3通用参数(3)迭代次数(Epochs)
迭代次数决定了网络模型在整个训练数据集上进行训练的轮数。在每次迭代中,模型根据当前的参数计算损失函数对参数的梯度,然后沿着梯度的反方向更新参数,以减小损失函数的值。每一次遍历,模型都会根据数据集中的所有样本计算一次梯度并更新参数。随着迭代次数的增加,模型逐渐学习到数据中的模式和规律,参数不断调整,使得损失函数逐渐减小,以提高模型在对应数据集下的性能。12.3.3通用参数通常我们会根据任务类型的不同、网络模型的复杂程度以及数据集的大小去进行迭代次数的选择:1.对于简单任务(如MNIST手写数据集),数据特征较为明显,一般迭代15-30次就可以学习到很多的特征以达到较好的准确率,对于复杂的任务(语言理解、多类别图像识别)可能需要50-100次以上的迭代次数才能取得较好的效果。2.对于参数较少的简单网络模型,其本身的模型表达能力有限,训练相对比较容易收敛,一般迭代50次左右就能使损失函数收敛,而对于大型深度神经网络,例如ResNet50这样的深度卷积神经网络,通常需要100次以上的迭代次数。3.对于小数据集(几百到几千个样本),网络模型能够较快地学习到数据中的信息,通常只需要20到50次迭代就可以,而对于大数据集,往往需要模型通过更多的迭代次数和时间去充分学习数据中的特征,可能达到100-300甚至更多的迭代次数。12.3消融实验设计和指标12.3.1设计步骤12.3.2交叉验证12.3.3通用参数12.3.4损失函数12.3.5优化器12.3.6评价指标12.3.4损失函数深度学习中的损失函数是一个衡量预测结果与真实结果之间差异的函数,又称为误差函数。它通过计算网络模型的预测值与真实值之间的不一致程度,来评估模型的性能。为什么需要损失函数?在训练过程中,网络模型的目标是通过调整其参数来最小化损失函数的值,从而提高预测的准确性。因此,选择正确的损失函数对于训练网络模型非常重要,不同的损失函数适用于不同类型的问题。12.3.4损失函数
由于误差被平方,因此较大的误差会受到更重的惩罚,这有助于模型在训练过程中减少较大的预测误差。MSE损失函数在整个定义域上连续可微,这一特性使得基于梯度的优化算法(如梯度下降法)求解时更加高效。另外,MSE实现起来容易,计算效率高。12.3.4损失函数(2)平均绝对误差损失
平均绝对误差(MeanAbsoluteError,MAE)损失是在深度学习中常用于回归问题的另一种损失函数。MAE损失计算了预测值与真实值之间差异绝对值的平均,提供了一个对网络模型预测偏差的直观度量,具体数学表达式定义为与MSE相比,MAE对异常值或离群点的影响较小,这是因为它不对误差进行平方,因此较大的误差不会对总体损失产生过大的影响。MAE直接反映了平均每个样本预测误差的绝对量,易于理解和解释。注意,MAE在误差为零的点不可微,这可能使得基于梯度的优化方法在找到最优解时遇到困难。12.3.4损失函数(3)Huber损失Huber损失也是一种在回归任务中常用的损失函数,它是平方误差损失和绝对误差损失的结合。这种损失函数主要用于减少异常值(Outliers)在训练模型时的影响,从而提高模型的鲁棒性。Huber损失函数通过一个参数来决定损失函数从平方误差向绝对误差转变的点,具体的数学表达式为Huber损失同样最适合数据中可能包含异常值,它在金融、气象预测、机器人导航等领域有着广泛的应用,这些领域中的预测任务常常需要对异常值具有较高的容忍度。12.3.4损失函数(4)交叉熵损失交叉熵(CrossEntropy,CE)损失在深度学习领域,尤其是分类问题中,扮演了重要的角色。它主要用于衡量两个概率分布之间的差异,通常用于评估模型预测的概率分布与实际标签的概率分布之间的距离。对于二分类问题,交叉熵损失可以定义为交叉熵损失直接对模型输出的概率进行优化,使模型学习产生接近真实标签的概率分布。当模型的预测错误且置信度高时,交叉熵损失会给予更大的惩罚,反之则减少惩罚,这种特性使得对分类问题训练过程更加高效。交叉熵损失广泛应用于各种分类任务,如图像识别、文本分类和医学诊断等,它特别适合于处理输出为概率分布的场景,能够有效地推动网络模型在预测准确性和概率校准方面的性能。12.3.4损失函数
12.3.4损失函数对于连续概率分布,则表达为:
12.3消融实验设计和指标12.3.1设计步骤12.3.2交叉验证12.3.3通用参数12.3.4损失函数12.3.5优化器12.3.6评价指标12.3.5优化器在深度学习中,优化器(Optimizer)是一个核心概念,它负责调整神经网络的连接权重和偏置,以便最小化损失函数,从而提高网络模型的准确性和性能。为什么需要优化器?由于损失函数拥有众多参数且结构复杂,直接寻找最优参数变得十分困难。因此需要借助优化器,它能够逐步调整参数,确保每次优化都朝着最快降低损失的方向前进。优化器的调参包括前面提到的调整学习率、批次大小、迭代次数等通用参数,也包括调整连接权重和偏置等网络参数。常用的优化器包括批量梯度下降(BatchGradientDescent,BGD)优化器、随机梯度下降(StochasticGradientDescent,SGD)优化器、动量优化器(SGDwithMomentum)和Adam(AdaptiveMomentEstimation)优化器等,它们通过不同的策略调整学习率和梯度方向,以实现快速、稳定的网络模型训练。12.3.5优化器(1)批量梯度下降优化器
BGD即标准的梯度下降,其计算公式如前面式(12.10)所示,其是在整个训练集上计算损失函数关于参数的梯度。由于为了一次参数更新,需要在整个训练集上计算梯度,导致BGD可能会非常慢,而且当训练集很大时,不能全部载入内存而导致方法不能正常运行。另外,BGD也不允许在线更新模型参数,即实时增加新的训练样本。因此,只适合小规模数据集和需要精确估计梯度的场景。12.3.5优化器(2)随机梯度下降优化器
SGD核心思想是每次迭代时仅使用一个样本的梯度信息来更新模型参数,其参数的更新公式为
SGD由于每次参数更新仅仅需要计算一个样本的梯度,训练速度很快,即使在样本量很大的情况下,可能只需要其中一部分样本就能迭代到最优解,但是每次迭代并不是都向着整体最优化方向,导致梯度下降的波动非常大,更容易从一个局部最优跳到另一个局部最优,导致准确度下降,并不是全局最优。12.3.5优化器(3)动量优化器为了抑制SGD的震荡,动量优化器提出了在梯度下降过程中加入惯性。可以简单理解为:当一个小球从山上滚下来时,如果没有阻力的话,它的动量会越来越大,但是如果遇到了阻力,速度就会变小。也就是说,动量优化器是在SGD基础上引入了一阶动量:那么动量优化器的参数更新公式为:12.3.5优化器
12.3.5优化器
12.3消融实验设计和指标12.3.1设计步骤12.3.2交叉验证12.3.3通用参数12.3.4损失函数12.3.5优化器12.3.6评价指标12.3.6评价指标深度学习网络模型的评价指标根据任务类型的不同而有所区分,主要可分为以下三类:分类任务评价指标、目标检测任务评价指标和生成任务评价指标。12.3.6评价指标(1)分类任务评价指标在具体介绍分类任务评价指标之前,先了解二分类问题下的一些基础概念。对于二分类问题,可以将样本分为以下四类:真正类(TruePositive,TP):模型预测为正例,且真实标签也为正例的样本数量。假正类(FalsePositive,FP):模型预测为正例,但真实标签为负例的样本数量。真反类(TrueNegative,TN):模型预测为反例,且真实标签也为反例的样本数量。假反类(FalseNegative,FN):模型预测为反例,但真实标签为正例的样本数量。可以将上面四类定义的关系归纳为图12.11。12.3.6评价指标1.准确率
准确率(Accuracy)表示正确预测数占全部样本数的比例,计算公式为准确率是最直观的评价指标之一,能反映网络模型整体的预测能力。但在类别不平衡的情况下,准确率可能会给出误导性的结果。例如,在一个故障诊断任务中,正常样本占比99%,故障样本占比1%,即使模型将所有样本都预测为正常,准确率也能达到99%,但实际上模型对故障样本的预测能力为零。12.3.6评价指标2.精确率
精确率(Precision)也称为查准率,是指网络模型预测为正例的样本中,真正为正例的样本比例,计算公式为精确率关注的是模型预测为正例的结果中有多少是正确的,在一些对误判正例有较高成本的场景中,如垃圾邮件分类,精确率尤为重要,因为将正常邮件误判为垃圾邮件会给用户带来较大的困扰。12.3.6评价指标3.召回率召回率(Recall)也称为查全率,是指真实正例样本中,被模型正确预测为正例的样本比例,计算公式为召回率衡量了模型找到所有正例样本的能力。在一些需要尽可能找到所有正例样本的场景中,如疾病筛查,召回率非常关键,因为漏诊一个患病患者可能会导致严重的后果。12.3.6评价指标4.F1值F1值(F1-score)计算公式为F1值是精确率和召回率的调和平均数,F1值综合考虑了精确率和召回率,当精确率和召回率都较高时,F1值也会较高。它在需要同时平衡精确率和召回率的场景中非常有用,能够更全面地评价网络模型的性能。12.3.6评价指标5.ROC曲线ROC(Receiver
Operating
Characteristic)曲线是以假正例率(FalsePositiveRate,FPR)为横轴,真正例率(TruePositiveRate,TPR)为纵轴绘制的曲线,其中真正例率即为召回率,假正例率的计算公式为ROC曲线的示意图如图12.12所示,可以看到,一个好的模型的ROC曲线应该尽可能靠近左上角,即假正例率低,真正例率高。图12.12ROC曲线示意图12.3.6评价指标6.AUC值AUC(Area
UndertheCurve)值是ROC曲线下的面积,取值范围在0到1之间,AUC值可以作为一个综合的评价指标,用于衡量网络模型的整体性能。AUC值越接近1,表示网络模型的性能越好;当AUC值为0.5时,网络模型的表现相当于随机猜测。AUC值不受类别不平衡的影响,因此在处理不平衡数据集时非常有用。12.3.6评价指标7.混淆矩阵
最后一种分类任务评价指标是混淆矩阵(ConfusionMatrix),它也是衡量分类任务准确度中最基本直观、计算最简单的方法。简单地说,混淆矩阵就是分别统计分类任务类别的个数或归一化值,然后把结果放在一个表里展示出来。图12.13中,矩阵的每一行代表实际的类别,而每一列代表预测的类别,右上图表示二分类的混淆矩阵,只区分0或1,右下图表示多分类混淆矩阵,可以区分多种类别的预测情况。以多分类混淆矩阵第一行为例,真实的标签是猫,但是在这十个猫中有一个被误分类为狗,一个被误分类为绵羊,这样就可以很容易地计算出猫的分类正确率为80%,也可以很直观地看出有哪些类别容易存在误识别。图12.13混淆矩阵12.3.6评价指标(2)目标检测评价指标
与分类任务评价指标类似,目标检测任务评价也有多个指标,包括交并比IoU、AUC值等,另外还有两个特有的指标,即均值平均精度(meanAveragePrecision,mAP)和检测速度指标(FramesPerSecond,FPS)。
在目标检测中,IoU用于衡量网络模型生成的候选目标框与真实目标框之间的重叠程度,其计算过程已在第9章详细阐述。IoU值越大,表示两个框之间的相似性越高,通常当IoU值大于0.5时,认为可以检测到目标物体。这个指标常用于评估模型在特定数据集上的检测准确度。12.3.6评价指标
mAP是衡量网络模型目标检测性能的另一重要指标,它首先计算所有目标类别的平均精确度AP,再对这些平均精确度取均值,因此最关键是需要计算每个类别的精确度,这通常通过绘制精确率-召回率(P-R)曲线并计算其下的面积来实现。对于目标检测任务,每一个类都可以计算出其精确率和召回率,由此可以得到每个类的一条P-R曲线,曲线下的面积就是AP的值。mAP值越高,表示目标检测网络模型的性能越好,通过提高mAP值,可以改进模型的识别精确率和召回率,从而提升整体性能。
FPS即每秒帧率,它用于评估网络模型在给定硬件上的处理速度,即每秒可以处理的图像数量。该指标对于实现实时检测非常重要,因为只有处理速度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理实习生工作群社交群患者信息管控学习
- 第八章 第三节《印度》-人教版七年级地理下册情境教学讲义
- 介词-2027年高考英语一轮复习之语法冲刺
- 河北省石家庄市赵县2025-2026学年八年级(下)期中道德与法治试卷(含答案)
- 山东省潍坊市2026届八年级下学期5月二模生物试卷(含解析)
- 2026中国跨境电商独立站流量获取与品牌出海战略指南
- 2026中国移动互联网行业市场发展分析及投资价值评估研究报告
- 2026日本半导体光刻设备制造领域市场供需结构及投资前景规划分析报告
- 2026中国碳中和背景下CCUS技术商业化应用场景研究报告
- 2026欧洲风力发电机组行业发展态势及投资前景调研报告
- 小儿孤独症谱系障碍诊疗指南(2025年版)
- 2026年北京市劳动合同范本三篇
- 2026年GCP复习提分资料附完整答案详解(名校卷)
- 2026年水利机械运行维护工试卷【考点梳理】附答案详解
- 2026湖南株洲市消防救援支队消防文员招聘14人笔试参考题库及答案解析
- 石油化工工程建设费用定额(2025版)
- 2026届山东省济宁市实验中学高三上学期开学考试数学试卷
- 推拿基本手法
- 认识有机化合物课件2025-2026学年高一下学期化学人教版必修第二册
- 2026年河北唐山市高三一模高考英语试卷试题(含答案详解)
- UL94阻燃标准应用与对照详解
评论
0/150
提交评论