机器,学习没有捷径

news2025/2/24 1:31:32

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.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov8通过训练完成的模型生成图片热力图--论文需要

源代码来自于网络 使用pytorch_grad_cam&#xff0c;对特定图片生成热力图结果。 安装热力图工具 pip install pytorch_grad_cam pip install grad-cam# get_params中的参数&#xff1a; # weight&#xff1a; # 模型权重文件&#xff0c;代码默认是yolov8m.pt # c…

2024高校网络安全管理运维赛题目--复现+题目+wp

比赛官网 比赛官网 部分writeup Signin 如图所示GIF提取&#xff0c;然后简单的ROT13 flag{welcome-to-signin-quiz} 邮件 ----如图所示简单的base64 邮件flag{WeLCoMeto} 邮箱flag{phishHUntInG} Babyre 解析&#xff1a;放到IDA分析&#xff0c;看伪代码 得到AncsA6g…

浔川计算机v1.1——浔川python科技社

浔川计算机v1.1 import tkinter import math import tkinter.messageboxclass Calculator(object):# 界面布局方法def __init__(self):# 创建主界面,并且保存到成员属性中self.root tkinter.Tk()self.root.minsize(280, 450)self.root.maxsize(280, 470)self.root.title(浔川计…

30KW高原汽油发电机,海拔5000米可使用

大汉动力高原汽油发电机是专为高原地区设计的发电设备&#xff0c;其设计和特性考虑了高原环境的特别性。以下是关于高原汽油发电机的一些关键信息&#xff1a; 设计特点&#xff1a; 高原适应性&#xff1a;高原地区海拔高&#xff0c;空气稀薄&#xff0c;氧气含量低&#x…

文章解读与仿真程序复现思路——电工技术学报EI\CSCD\北大核心《考虑源网储协同配合下的移动式波浪能发电平台并网优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

自动生成企业培训视频:创新与效率的完美结合

前言 随着人工智能技术的飞速发展&#xff0c;大模型技术在各个领域的应用日益广泛。在企业培训领域&#xff0c;大模型技术的应用为培训视频的生成带来了革命性的变革。本文将探讨如何利用大模型技术自动生成企业培训视频&#xff0c;以及这一技术为企业培训带来的创新和效率…

S686量产工具授权版,S686开卡教程,S686+EMMC固态硬盘开卡量产成功记录

手里有个S686EMMC组合的固态硬盘&#xff0c;华澜微的S686主控&#xff0c;之前一直没找到工具&#xff0c;感觉是废了&#xff0c;一直放着&#xff0c;偶然机会从桌子里又找到它&#xff0c;于是继续搜寻量产工具。 找到量产部落的一篇文章&#xff0c;里面说首发了S686的量产…

[Java基本语法] 类与对象

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;线程与…

移远CAT1模组OPENCPU开发:添加工程

在移远CAT1通讯模组的OPNECPU方案的SDK上&#xff0c;不破坏原有的工程结构&#xff0c;添加一个自定义的工程&#xff0c;适配于EC200和EC800系列的基于展锐平台的模组。 1、SDK路径下&#xff0c;如LTE01R02A05_C_SDK_U\components\ql-application目录下新建一个工程文件夹&a…

使用Python在VMware虚拟机中模拟Ubuntu服务器搭建网站

在此之前可以先使用VS Code连接到虚拟机&#xff1a;Visual Studio Code连接VMware虚拟机-CSDN博客 安装Web服务器Apache sudo apt-get install apache2 在个别情况下需要对Apache服务器的配置文件进行调整&#xff1a; 打开etc路径下的apache2文件夹&#xff0c;根据端口…

C++ | Leetcode C++题解之第151题反转字符串中的单词

题目&#xff1a; 题解&#xff1a; class Solution { public:string reverseWords(string s) {int left 0, right s.size() - 1;// 去掉字符串开头的空白字符while (left < right && s[left] ) left;// 去掉字符串末尾的空白字符while (left < right &…

「C系列」C 结构体

文章目录 一、C 结构体1. 定义结构体2. 声明结构体变量3. 初始化结构体变量4. 访问结构体成员5. 结构体数组6. 结构体指针7. 结构体嵌套 二、C 如何使用结构体1. 定义结构体类型2. 声明结构体变量3. 初始化结构体变量4. 访问结构体成员5. 结构体指针6. 在函数中使用结构体7. 注…

ArcGIS 10.2软件安装包下载及安装教程!

今日资源&#xff1a;ArcGIS 适用系统&#xff1a;WINDOWS 软件介绍&#xff1a; ArcGIS是一款专业的电子地图信息编辑和开发软件&#xff0c;提供一种快速并且使用简单的方式浏览地理信息&#xff0c;无论是2D还是3D的信息。软件内置多种编辑工具&#xff0c;可以轻松的完成…

最经济实惠的通配符SSL证书是哪款?

网络安全已成为企业和个人网站运营者关注的焦点。SSL证书作为确保数据传输安全的关键工具&#xff0c;其重要性不言而喻。特别是通配符SSL证书&#xff0c;因其能够为一个主域名及其所有子域名提供统一的安全保护&#xff0c;而受到广泛欢迎。但面对市场上众多的SSL证书品牌和价…

如何制作 PDF 文件

本文概述了如何使用 Microsoft Word、GeekerPDF、Google Docs 和 Mac Pages 创建 PDF。您还可以使用免费的 PDF 创建器&#xff1b;有许多可供下载或在线使用的创建器。 如何使用 Microsoft Word 创建 PDF 如果您拥有 2007 或更高版本的 Microsoft Word&#xff0c;创建 PDF 的…

重生之 SpringBoot3 入门保姆级学习(20、场景整合 Docker 的 Redis 对接与基础使用)

重生之 SpringBoot3 入门保姆级学习&#xff08;20、场景整合 Docker 的 Redis 对接与基础使用&#xff09; 6.3 整合 Redis 6.3 整合 Redis 1、创建新项目编写 application.properties 配置文件 # redis 配置 spring.data.redis.host192.168.1.4 spring.data.redis.port6379如…

搭建个人智能家居 6 -SGP30 CO₂与TVOC测量

搭建个人智能家居 6 -SGP30 CO₂与TVOC测量 前言说明ESPHomeHomeAssistant 前言 上一篇文章我们给这个智能家居系统添加了第三个外设&#xff0c;温湿度传感器。今天添加第四个外设&#xff0c;用于测量环境中CO₂与TVOC的传感器“SGP30”。 前问回顾&#xff1a; 搭建个人智能…

(游戏:挑一张牌)编写程序,模拟从一副 52 张的牌中选择一张牌。

(游戏:挑一张牌)编写程序&#xff0c;模拟从一副 52 张的牌中选择一张牌。程序应该显示牌的 大小(Ace、2、3、4、5、6、7、8、9、10、Jack、Queen、King)以及牌的花色(Clubs (黑梅花)、Diamonds(红方块)、Hearts(红心)、Spades(黑桃))。下面是这个程序的 运行示例: The card yo…

QT漂亮QSS样式模仿流行VUE Element UI ,QSS漂亮大方美观样式 QSS样式 QTableWidget 漂亮样式QSS 快速开发QSS漂亮界面

在现代应用程序开发中&#xff0c;用户界面&#xff08;UI&#xff09;的设计与用户体验&#xff08;UX&#xff09;占据了至关重要的位置。Vue.js框架因其灵活性和丰富的生态系统而广受欢迎&#xff0c;其中Element UI作为一套为Vue设计的桌面端组件库&#xff0c;以其清晰的视…

24年河北自考报名流程详细教程汇总

2024年河北自考本科报名马上就要开始了&#xff0c;想要参加考试报名的同学&#xff0c;提前看一下&#xff0c;了解一下报名流程&#xff0c;准备一些报名材料。 报名时间&#xff1a;2024年1月5日—10日8:00—22:00 考试时间&#xff1a;2024年4月13日—14日 报名照要求&…