机器,学习没有捷径

1 捷径学习

1.1 你捷径学习了么

深度学习因为其优异的学习能力,已经成为推动人工智能发展当之无愧的主力军。深度学习在NLP和CV等不同的场景下都展现了优异的能力。但深度学习也存在一个与生俱来的问题:捷径学习。

捷径学习中的捷径表示的是一种有缺陷的决策,是机器学习模型在训练过程中,为了最小化预测误差,而采取的一种”捷径”策略。在这种策略下,模型会优先学习和预测目标直接相关,但不一定是本质的特征,导致模型可能在训练集上表现良好,但在测试集和实际应用中表现不佳。

捷径学习(Shortcut Learning)是一种特殊形式的学习过程,它存在于许多机器学习模型中。在这个过程中,模型试图找到最快捷、最直接的方式来优化其在训练数据上的表现,有时候这会导致它依赖一些并不是真正重要或者有深度含义的特征。从某种程度上来说,捷径学习可以被视为一种表面学习(Surface Learning)或者浅层学习(Shallow Learning)。

假设你希望训练一个机器学习算法模型,你的任务是通过分析过去的足球比赛来预测未来的比赛结果。你根据大量历史比赛数据,包括每支队伍的球员、比分、进球数量,甚至比赛当天的天气等等,进行比赛结果预测。在理想的情况下,你希望算法模型能从这些数据中学习到如何判断球队实力,例如分析球员的技能、战术、体能等。然而,这需要大量的计算资源和时间。但你注意到了一个现象,在过去的比赛中,穿红色球衣的队伍赢得了大部分比赛。于是你的算法很快学会了一个捷径:直接预测穿红色球衣的队伍会赢。这种预测方式很快,而且在训练数据上的准确率也很高。

然而,当你用这个算法预测未来的比赛时,你发现它的准确率远低于你期望。因为在真实的比赛中,胜利并不总是属于穿红色球衣的队伍。这个算法忽略了决定比赛结果的真正重要因素,如球员技能、战术、体能等,而仅仅依赖于一种表面上的、并无实质关联的特征,也就是球衣颜色。

这就是捷径学习的一个例子。模型学习了一种简单的、直接的预测方式,而忽略了真正重要的特征。尽管这种方式在训练数据上的效果可能很好,但在未来的真实场景中,其性能往往不佳。

1.2 答案对了就是学对了么

数学和物理等理论经过几个世纪的研究,已经形成了经得住实际情况考验并且自洽的理论体系,但是深度学习的研究与之相比恰如初生婴儿,还没有形成较为完整的理论体系。很多时候深度学习的检测能力都是在一定数据集上进行检测指标的量化,这种结果导向的行为有时确实体现了模型的检测能力,但与当前使用的数据集深深绑定。很多时候我们难以判断深度学习模型学习的到底是不是知识,还是如盲人摸象、管中窥豹一般的片面偏执。

图1 捷径学习的示例图

图2中的就列举了四个深度学习模型产生捷径学习的案例示例,即便在某些场景下深度学习模型的检测能力已经达到甚至超过了人类的水平。第一个子图中模型将绿色的山坡识别为绵羊,第二个子图中的模型将灰色图识别为茶壶,第三个子图的模型以右上角中的医院标识信息作为判断是否肺炎的主要学习特征。第四个子图中因为文本中特定位置的无关信息导致模型无法完成智能问答任务。

对于这些检测错误,会引出一些更深层次的问题供研究人员思考:深度学习什么时候可以发挥作用,当模型检测失败时,我们需要知道原因,以及改进方法。

与此同时,我们知道深度学习的研究还是存于一个相对黑盒阶段,所以深度学习存在不可解释性或不可完全解释性的问题,当深度学习检测出现错误时,这种黑盒的特性导致其很难发现失败原因,同时这种以量化指标结果为导向的特性使其不能为纠正错误提供帮助。甚至有些时候对输入数据进行细微到人眼难以发现的修改,都会导致很大程度上的影响检测结果。这种微小的修改导致模型检测结果严重失准的特点也催生了一个针对深度学习的攻击行为:对抗攻击,我更愿意将其类比成攻击者对深度学习模型的漏洞利用。

2 捷径学习是在学什么

捷径学习是所有学习过程中都存在的,无论是自然生物还是深度学习模型。比如说你熟读《西游记》,所以你认为世间所有骑白马的都是唐僧,所有挑扁担的都是沙悟净。你在读《西游记》的时候总结了唐僧和沙僧的特征,并将其总结为分类的决策规则,从某种意义上来说这是一种片面学习的偏执。举例来说骑白马的不一定是王子,还有可能是唐僧。总的来说,捷径学习的结果表明学习的过程是有价值的,但是学习到的知识或模式是片面的。

2.1 由果及因的归纳

图4是对神经网络的捷径学习与人类学习的比较,二者通过training set中的数据来学习,人类学习的知识是图形外形信息:五角星属于label A,月牙形属于label B;神经网络模型学习的知识是位置信息:位置在左下或右上的是label A,位置属于左上或者右下的是label B。从特征的角度来说,人类会对外形特征赋予更高的权重,神经网络模型对位置信息赋予更高的权重。

图2 学习结果的差异性比较

2.2 盲人摸象的偏见

捷径学习作为学习过程的原生特点,其对机器学习训练过程的影响经常被忽视,并且在没有走入工程化应用之前,算法的研究阶段也不会充分暴露。针对这种情况,研究人员对模型对应的数据分布和特征权重进行了分析,结果如图5所示。可以看出不同的数据集会训练出不同的模型,并且通过片面数据训练得出的检测模型在整个的数据分布中有明显的局限性。并且对比不同数据集中的特征情况,也可以很好的解释模型在新的场景下,新的测试数据集会得到糟糕的检测结果-给错误的特征以过高的权重。

如果模型学习的是信息不足的特征(uninformative features),那么模型在训练集上的表现不会很好;如果模型学习的是过拟合的特征(overfitting features),那么模型在训练集分布内的表现会很好,但是模型在独立同分布测试集(Independent and Identically Distributed,I.I.d)上的表现不会很好;如果模型学习的是捷径特征(shortcut features),那么模型在分布外泛化测试集(Out-of-distribution, o.o.d)上的表现不会很好;模型只有学习了预期特征(intended features),才能满足预期的泛化能力。但是预期特征(intended features)是一个相对抽象的概念,并没有直接的评价标准。

图3 数据分布、特征与模型表现之间的关系

3 捷径学习是哪来的

那么捷径学习是从何而来?捷径学习如何缓解呢?捷径学习的成因有多个方面,第一种就是来自捷径特征,即数据中存在捷径因素;第二个是来自判别模型,即模型对特征的权重失衡。二者在影响捷径学习的同时也在影响机器学习模型是否能脱离研究环境走向应用场景。

3.1 数据捷径

图4 多种背景特征的影响

深度学习模型在训练目标检测的过程中,如果检测目标的背景信息是单调唯一的,那么这些背景信息也会成为目标识别的重要特征。举例来说如果训练一个深度学习模型来做牛的目标检测,但是训练集中所有的牛的背景都是草原 ,换句话说训练牛的数据集的背景信息都是蓝天绿草,而不是沙滩、海水等其他背景信息。这也就会导致蓝天绿草在当前场景下很可能有很大的特征权重。这种机器学习算法问题也被叫做数据偏差(dataset biases)。即使在大数据的情况下,数据捷径因素依然存在。因为这不是数据的规模问题,而是数据产生的场景本身存在局限性导致的数据分布缺失。举例来说你在草原上无论拍多少张的牛的照片,依然无法解决蓝天绿草的背景特征问题。这种训练数据集的有限性无法体现场景的实际数据分布,因此会产生盲人摸象的效果。

3.2 算法捷径

根据论文<ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy>中检测结果分析,如图7所示。纹理特征的检测结果非常好。

图5 不同特征方法的目标识别效果

因此在CNN的各种卷积操作中,纹理特征获得权重也会更大,更重要的是,在端到端的训练工程中,这种纹理特征的权重是算法自己训练过程通过卷积过程自我学习所得,并非人类强加给深度学习模型。

但是这与人类视觉观察判断逻辑存在明显不同,人眼会很重视目标的物体的外部轮廓特征,与此同时不会忽略其他的重要特征信息。深度学习模型因为对纹理特征的较大权重,就导致对某些图片的误判,例如面8中所示的猫识别成了大象。

图6 纹理特征下的猫

在不同的场景下,这种情况存在十分普遍,如下图所示图9所示,很多对于人来来说是同一类别的物体,在深度学习模型中却被分成不同类别;同时深度学习模型也会将一些风马牛不相及的物体分到同一个类别。

图7 人类分类与深度神经网络分类

4 捷径学习成因

因为针对深度学习的捷径学习问题一直存在,因此针对捷径学习的研究也将持续下去,接下来我们主要介绍理解和捷径学习的成因。

4.1 捷径学习更容易

4.1.1 最小努力原则

为什么机器学习这么容易造成捷径学习呢?有一个原因就是最小努力原则,比如说话的时候大家都喜欢说更小的词汇,比如用phone代替mobile phone,用plane代替airplane。机器学习的训练过程也是一样,会用最直接的特征寻找简单的权重关系完成学习过程。

4.1.2 AI关键模块影响

机器学习的影响不仅仅依赖于数据,也会依赖机器学习算法的四个组成部分:架构、训练数据、损失函数、优化方法。通常训练过程从数据输入模型开始,这个模型包含固定的架构和随机的初始化参数,通过对比预测结果和ground truth,通过损失函数明确优化方向和预测的质量。综合这四个组成部分从算法层面明确了算法模型是否容易引捷径学习。

4.2 结果评价很重要

4.2.1 分数不等同于能力

捷径学习最危险的时候就是没有被发现的时候。当前机器学习的最广泛的评价标准还是对i.i.d测试集进行测试并输出量化指标。但是这些量化指标只是体现了模型在当前有限的数据下的检测结果,并不能完全度量模型的真实检测能力。举例来说,老师划定考试范围的开卷考试,成绩必然是虚高的。因此有限数据范围内的99.9!%并不能说明当前模型的检测能力必然优异。

4.2.2 模型不等同于大脑

摩根法则(Lloyd Morgan’s canon rule):如果可以用较低的心理机制来解释某种行为,那么我们说什么也不能将其归因于高级的心理过程。在机器学习中,摩根法则同样有效。

有些观点认为神经网络是模拟动物神经网络的结构,但是我们不能直接认定神经网络的训练和测试过程与动物大脑的学习和应用的等同,这两者之间存在明显的区别。简言之就是说,类似人类的行为并不意味着与人类相同的思考和决策方式。在机器学习中,可以被捷径学习解释的情况就不要认为模型本身可能存在更高级的决策能力。

5 如何发现捷径学习

5.1 更完善的测试数据

在评价模型的检测能力时,应该主要考虑模型对分布外数据的检测能力。我们还用在牛的目标识别的示例来举例,我们在测试模型效果时,可以测试模型对森林中的牛、草原上的牛、河流中的牛、牛棚里的牛,来确定模型学习到的知识(模式)是针对牛本身的,而不是针对森林、草原等背景信息等片面信息。

一个好的分布外泛化测试数据集要有以下的条件,第一要有明确的分布变换,这种变化可能人工都难以区分,比如不同场景下的牛。第二,良好的分布外泛化测试集应有让模型难以检测的样本,比如在图像处理时,可以在OOD测试集的图像中添加一些白噪声,还可以增加被绿叶、雾气遮挡了部分肢体的牛的样本数据。第三,测试数据集中可以包含训练中不包含的数据,也就是一些让模型难以检测的极具挑战的数据。常见的方法有对抗攻击,通过对抗攻击发现模型针对o.o.d测试数据中薄弱环节,并将其作为模型优化的诊断工具;ARCT,将测试集中删除已知的敏捷学习的样本数据,从而构建更为复杂的测试数据集;将冲突的特征相互对抗,比如图像的纹理特征和外形特征进行对抗,这种方法容易与专家系统比较。同时还包括其他数据增强的方法。

5.2 模型解构分析

通过对模型进行解构分析,我们可以尝试理解模型的决策依赖于哪些特征。例如,我们可以使用像SHAP(SHapley Additive exPlanations)或LIME(Local Interpretable Model-agnostic Explanations)这样的工具,来理解模型的预测是如何被各个特征所影响的。如果模型过度依赖一些低价值特征,可能是捷径学习。

同时,我们还可以使用类激活映射(Class Activation Maps,CAM)等可视化技术,直观地看到模型在进行决策时,主要关注输入数据的哪些部分,并对被关注的数据信息进行分析,根据领域知识确定其与预想信息价值是否匹配。

5.3 基准模型对照

用基准模型进行测试,根据基准模型的检测结果判断当前目标模型是否存在捷径学习问题,分析基准模型在不完善的特征维度下是否会得出超出预期的检测结果。如果基准模型在这种情况下检测结果极大的超出预期,那么当前应用场景存在捷径学习的风险较高。以上这种情况不能直接否认深度神经网络具有更高的检测能力,但需要明确的是,不能将模型在数据集上的检测表现和模型实际检测能力混为一谈。

6 缓解捷径学习影响

在整个机器学习的过程中,缺乏分布外泛化的问题普遍存在。接下来会提供一些优化捷径学习的方法。需要记住的是捷径学习是学习过程中的原生特性,不能完全消除,只能通过不同的方法进行优化以降低其影响。

6.1鲁棒性

对抗样本这是一种特别设计的输入,目的是欺骗机器学习模型,使其做出错误的预测或决策。对抗样本与正常输入非常相似,对于人类来说可能无法区分,但却能导致机器学习模型的检测能力大幅下降。对抗样本通常是通过对样本输入数据应用特别设计的小幅度扰动来生成的,这些扰动是通过优化算法根据模型的损失函数计算得出的。对抗性攻击是分析模型能力薄弱点的有效方法,对抗样本可以看作是一种反例,可以发现机器学习模型尚未不能解决的问题。通过对抗样本可以优化模型的泛化能力,对抗样本可以理解为模型中弱点。通过对抗样本测试模型,可以优化模型的泛化能力。同时也可以通过正则化技术处理,试图防止模型学习捷径。这些正则化技术包括权重衰减、早期停止、dropout等。

6.2 样本均衡

公平性研究旨在让机器学习的决策更加公平,其中包括机器学习对少数群体或者说样本较少的分类不应存在决策偏见,抛开政治正确的因素,我们可以通过样本均衡以及加权等方法解决均衡和公平的问题。包括样本过少的类别进行过采样,对样本过多的类别进行欠采样等。

6.3 元学习

元学习(Meta-Learning),也被称为“学习如何学习”,主要是通过及以往的知识经验来指导新任务的学习,从而设计出能够从一系列不同任务中快速学习新任务的机器学习算法。元学习的目标是通过对许多不同的任务进行学习,发现它们之间的通用模式并规避适应新条件的变化,从而在面对新任务时能够快速地适应和学习。

7 山石对于捷径学习的思考

7.1 捷径学习是学习普遍特性

关于捷径学习需要明确的是,学习之后的模式概括形成错误的知识不是学习过程的失败,也不是模式概括行为本身的失败,是模式概括并没有在学习目标的预期方向达到要求,也可能是学习所依仗的数据信息存在缺陷导致的。

7.2先验知识对AI学习的恰当引导

先验知识是在训练AI模型前就已知关于任务、数据或领域的信息。这些信息可以影响我们的模型选择、特征选择,模型训练和评估等过程。先验知识可以对AI进行恰当引导,从以下几个方面降低捷径学习的风险:

特征评价:利用先验知识,我们可以对众多特征进行评价,帮助模型筛选有实质性帮助的特征。例如,如果我们在预测房价的任务中知道房价主要由房屋的面积、地理位置和建造年份等因素决定,那么我们可以专注于这些特征,而不是其他可能不相关的特征,如房屋的纬度和户主性别等等。

模型约束:先验知识可以帮助我们设置合理的模型约束,防止模型学习到我们知道是错误或者不可能的模式。例如,如果我们在预测商品价格的任务中,知道价格不能为负数,那么我们就可以将约束加入到模型中。

模型评估:先验知识也可以帮助我们设计更有效的模型评估策略。我们可以根据先验知识创建一些特殊的测试用例,检查模型是否学习到正确的模式,而不是一些肤浅的误导性模式。

数据修正:如果我们的先验知识告诉我们,某些数据特征可能会导致模型产生捷径学习,我们可以在训练前预处理数据,修正或删除相关特征。

需要注意的是,过度依赖先验知识也有可能限制模型的能力,因为有时候模型可能会发现先验知识以外的重要模式或特征。因此,先验知识时需要找到一个恰当的平衡。

7.3 持续评价与动态优化

持续评价(Continuous Evaluation):在机器学习的过程中,我们不能仅在模型训练完毕后只进行一次评估,就认为我们已经得到了最优模型。因为随着时间的推移,数据分布可能会发生变化(这种现象被称为“数据漂移”),这可能会导致模型的性能下降。因此,我们需要定期或者持续地对模型进行评估,以确保模型的性能仍然满足需求。一旦发现模型性能下降,我们就需要对模型进行调整或者更新。

动态优化(Dynamic Optimization):动态优化是指根据模型的持续评价结果,动态地调整或优化模型的过程。这可能涉及到调整模型的参数,更新模型的训练数据,甚至更换模型的结构或者算法。动态优化的目的是使模型能够适应数据的变化,保持最优的性能。

在实践中,持续评价和动态优化通常需要配合使用。例如,我们可以设置一个监控系统,定期对模型进行评估,一旦发现模型性能下降,就触发模型的优化过程。在

优化过程中,我们可能会重新采集或者清洗数据,调整模型的参数或者结构,甚至进行重新训练。同时为了实现持续评价和动态优化的能力,就需要对机器学习模型构建一个智能闭环系统,将模型应用、性能评价、模型优化、模型更新形成一个动态的闭环链条,保证模型随着时间的推进也能保证其检测能力。这对发现和缓解捷径学习从工程化的角度提供了新思路。

图8 AI模型闭环优化

7.4 功能模块之间的横向关联

在网络安全的场景下,我们从攻击事件的角度来看,同一个网络攻击行为会在不同的安全能力模块下留下痕迹,比如暴力破解这种网络行为就会在网络中留下大量的网络会话,会在终端设备留下大量登录行为事件,甚至会在蜜罐等欺骗防御设备中留下痕迹,而这些痕迹都只指向了同一个攻击行为。通过对安全能力的横向关联分析,自动化的分析结果就为安全能力模块中的AI模型提供了更为场景化的评价方向,而这些分析结果可以帮助模型发现其潜在不足,对优化捷径学习,发现模型薄弱点也有很强的实用价值。

图9 安全功能横向关联分析

8 总结与展望

捷径学习也是一种学习方式,只不过其并未从数据中学习到现实场景中任务的复杂性,而是选择一种最简单、最直接的方式来学习。这种片面的、不完全的学习归纳虽然在有限的局部数据上表现突出,但是在真实应用场景下的表现却一落千丈。

作为学习的原生特性,捷径学习难以根除,缓解捷径学习的研究可以从以下几个方面展开:

  1. 深入的理论研究:尽管我们已经确定了捷径学习的存在并可以在实验中观察到它的存在,但是对于模型会选择这种片面学习方式的原因以及如何系统性避免这种学习方式的理解还比较有限。因此,更深入的理论研究将是未来的重要研究方向。
  2. 完善的数据评价方法:捷径学习的形成与数据息息相关,因此需要在训练前对数据进行完整且深入的分析,挖掘捷径学习与数据集的某些特性之间的关联性,通过完善数据评价方法缓解捷径学习问题。
  3. 新的学习策略: 当前的许多学习方法,包括监督学习、无监督学习和强化学习,都有可能出现捷径学习的问题。发展新的学习策略,比如自我监督学习等新的学习方式。
  4. 更科学的评价指标:捷径学习的结果往往在训练数据上表现极佳,因此,我们需要更加科学的评价指标来衡量模型在面对未知样本时的性能,以便更精确地识别和避免捷径学习。

9 参考文献

[1] Geirhos R, Jacobsen J H, Michaelis C, et al. Shortcut learning in deep neural networks[J]. Nature Machine Intelligence, 2020, 2(11): 665-673.

[2] Scimeca L, Oh S J, Chun S, et al. Which shortcut cues will dnns choose a study from the parameter-space perspective[J]. arXiv preprint arXiv:2110.03095, 2021.

[3] Baldock R, Maennel H, Neyshabur B. Deep learning through the lens of example difficulty[J]. Advances in Neural Information Processing Systems, 2021, 34: 10876-10889.

[4] Geirhos R, Rubisch P, Michaelis C, et al. ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness[J]. arXiv preprint arXiv:1811.12231, 2018.

[5] Beery S, Van Horn G, Perona P. Recognition in terra incognita[C]//Proceedings of the European conference on computer vision (ECCV). 2018: 456-473.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/713558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

和鲸科技执行总裁殷自强:面向空间数据协同分析场景的模型生命周期管理方法

导读&#xff1a; 由 ACM SIGSPATIAL 中国分会主办的第五届空间数据智能学术会议&#xff08;SpatialDI 2024&#xff09;于 2024 年 4 月 25 日- 27 日在南京圆满召开&#xff0c;主题为“ AGI 时代下的空间数据智能”&#xff0c;旨在深入推动空间数据智能研究的理论进步与应…

mysql:简单理解mysql mvcc的可重复读

# 原理 假设有这样的sql begin select&#xff08;或update、insert、delete&#xff09; ... commit当执行【begin】的时候&#xff0c;标记有一个新事务要开始&#xff0c;但是事务还没有真正开始&#xff0c;事务id还没有产生当执行事务里面的第一个sql语句时&#xff08;…

【JS重点15】原型对象概述

目录 一&#xff1a;构造函数缺陷 二&#xff1a;原型 1 原型是是什么 2 原型对象的作用 3 原型对象this指向问题 4 利用原型对象添加方法 给JS内置构造函数Array添加最大值方法 给JS内置构造函数Array添加求和方法 三&#xff1a;Constructor属性 四&#xff1a;如何…

「茶桁 AI 秘籍-CV 篇」预告

Hi, 大家好。 我是茶桁。 咱们的《茶桁的 AI 秘籍》系列距离上一个系列课程《人工智能 BI 核心》已经有一段时间了&#xff0c;终于有时间可以写 CV 部分的课程&#xff0c;主要也是最近一段时间我确实有点忙不过来。 那么咱们 CV 的课程会有一些变化&#xff0c;就是会改为收…

AtCoder Beginner Contest 358 A~E(F,G更新中...)

A.Welcome to AtCoder Land 题意 给出两个字符串 S , T S, T S,T&#xff0c;请你判断是否满足&#xff1a; 字符串 S S S为AtCoder 字符串 T T T为Land 分析 输入后判断即可 代码 #include<bits/stdc.h> using namespace std; void solve() {string s, t;cin &g…

MacOS系统中Java使用Opencv4.10.0库的编译过程和使用方法(附编译后的包)

编译开始 到官方下载源码&#xff1b;官方 解压后进入 opencv-4.10.0 目录 执行命令预编译&#xff0c;查看是否有Java的支持 cmake -S . -B build -DCMAKE_INSTALL_PREFIX/usr/local/opencv开始正式编译 # 进入build目录 cd build # make编译 {N} 取决于你有几个CPU、几个线…

AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(流程优化)

系列篇章&#x1f4a5; No.文章1AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎的构建与初步实践2AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之GLM-4大模型技术的实践探索3AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之知乎网站数据获…

【在线OJ】vue分页+SpringBoot分页模板代码

一、Vue <template><div><el-table:data"user"style"width: 120%"><el-table-columnlabel"id"width"180"><template slot-scope"scope"><i class"el-icon-time"></i>&…

几个小创新模型,KAN组合网络(LSTM、GRU、Transformer)时间序列预测,python预测全家桶...

截止到本期&#xff0c;一共发了8篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.终于来了&#xff01;python机器学习预测全家桶 2.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&a…

中国城市建设统计年鉴(1978-2022年)

数据年份&#xff1a;1978-2022 数据格式&#xff1a;excel、pdf 数据内容&#xff1a;以2022年为例&#xff0c;《中国城市建设统计年鉴—2022》根据各省、自治区和直辖市建设行政主管部门上报的2022年及历年城市建设统计数据编辑。 共分13个部分&#xff0c;包括城市市政公用…

Java课程设计:基于swing + mysql的酒店管理系统

文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 项目功能 1、散客开单&#xff1a;完成散客的开单&#xff0c;可一次最多开5间相同类型的房间。 2、团体开单&#xff1a;完成团体的开单&#xff0c;开放数量没有限制&#xff0c;可同时开不同类型…

Java阻塞队列:ArrayBlockingQueue

Java阻塞队列&#xff1a;ArrayBlockingQueue ArrayBlockingQueue是Java中的一个阻塞队列&#xff08;Blocking Queue&#xff09;实现&#xff0c;它是线程安全的&#xff0c;并且基于数组实现。ArrayBlockingQueue常用于生产者-消费者模型&#xff0c;在这种模型中&#xff…

北京人工智能数据运营平台发布,并开源大规模数据集

6月14日&#xff0c;AI行业顶级盛会2024北京智源大会正式拉开帷幕。作为大会的重要组成部分&#xff0c;智源大会“人工智能数据新基建”论坛同步召开。本论坛由北京智源人工智能研究院主办&#xff0c;中国互联网协会人工智能工委会和中国移动研究院承办。本次论坛邀请到来自中…

2-5 基于matlab的信号的希尔伯特-黄变换

基于matlab的信号的希尔伯特-黄变换&#xff0c;IMF分解&#xff0c;对IMF进行Hilbert处理&#xff0c;绘制二维/三维时-频图&#xff0c;时间-能量图(瞬时能量谱) &#xff0c;频率-能量图&#xff08;希尔伯特谱&#xff09;。程序已调通&#xff0c;可直接运行。 2-5 希尔伯…

java Springboot网上音乐商城(源码+sql+论文)

1.1 研究目的和意义 随着市场经济发展&#xff0c;尤其是我国加入WTO &#xff0c;融入经济全球化潮流&#xff0c;已进入国内外市场经济发展新时期&#xff0c;音乐与市场联系越来越紧密&#xff0c;我国音乐和网上业务也进入新历史发展阶段。为了更好地服务于市场&#xff0…

11.泛型、trait和生命周期(上)

标题 一、泛型数据的引入二、改写为泛型函数三、结构体/枚举中的泛型定义四、方法定义中的泛型 一、泛型数据的引入 下面是两个函数&#xff0c;分别用来取得整型和符号型vector中的最大值 use std::fs::File;fn get_max_float_value_from_vector(src: &[f64]) -> f64…

.net8 blazor auto模式很爽(五)读取sqlite并显示(2)

在BlazorApp1增加文件夹data&#xff0c;里面增加类dbcont using SharedLibrary.Models; using System.Collections.Generic; using Microsoft.EntityFrameworkCore;namespace BlazorApp1.data {public class dbcont : DbContext{public dbcont(DbContextOptions<dbcont>…

Python进阶:从函数到文件的编程艺术!!!

第二章&#xff1a;Python进阶 模块概述 函数是一段可重复使用的代码块&#xff0c;它接受输入参数并返回一个结果。函数可以用于执行特定的任务、计算结果、修改数据等&#xff0c;使得代码更具模块化和可重用性。 模块是一组相关函数、类和变量的集合&#xff0c;它们被封…

vs+qt5.0 使用poppler 操作库

Poppler 是一个用来生成 PDF 的C类库&#xff0c;从xpdf 继承而来。vs编译库如下&#xff1a; vs中只需要添加依赖库即可 头文件&#xff1a;

2.2 抽头

目录 为什么要抽头 什么是抽头 接入系数 怎么抽头 信号源端抽头 负载端抽头 例题分析 要点总结 为什么要抽头 阻抗转换&#xff0c;使信号源内阻Rs与负载电阻RL变得很大&#xff0c;分流小&#xff0c;再使用并联方式。 什么是抽头 接入系数 电容越大&#xff0c;分压越…