机器,学习没有捷径

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.mzph.cn/web/27142.shtml

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

相关文章

Solr 日志系统7.4.0部署和迁移到本地,Core Admin 添加新的core报错

文章目录 Solr部署Docker部署二进制部署 Tips:Solr设置账号密码方法1&#xff1a;(不使用)方法2&#xff1a; Core Admin 添加新的core报错Solr数据迁移 Solr部署 Docker部署 docker run -d -p 8983:8983 --name solr solr:latest docker run -d -p 8983:8983 -v /opt/solr:/…

学会python——密码加密(python实例四)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、对输入的字符加密 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强…

Hexapod C-887使用手册 -- 4,5,6

4 - 拆包 小心拆包C-887 根据合同和发货注意比较发货范围的内容&#xff1a; 检查危险符号的内容。如果任何零件损坏或缺失&#xff0c;立即联系客服部门。 保存所有包装材料&#xff0c;以防产品需要返厂。 5 - 安装 本章中 安装一般注意 安装PC软件 确保通风 接地C-…

LeetCode --- 132双周赛

题目列表 3174. 清除数字 3175. 找到连续赢 K 场比赛的第一位玩家 3176. 求出最长好子序列 I 3177. 求出最长好子序列 II 一、清理数字 这题直接根据题目&#xff0c;进行模拟即可&#xff0c;大体的思路是遍历字符串&#xff0c;遇到字母就加入答案&#xff0c;遇到数字就…

网络协议四

一、云中网络 物理机的劣势&#xff1a; 1&#xff09;一旦需要扩容 CPU、内存、硬盘&#xff0c;都需要去机房手动弄&#xff0c;非常麻烦 2&#xff09;采购的机器往往动不动几百 G 的内存&#xff0c;而每个应用往往可能只需要 4 核 8G 3&#xff09;一台机器&#xff0c;…

怎么改变图片分辨率dpi数值?图片改分辨率的在线技巧

在上传图片的时候除了图片大小、尺寸等要求之外&#xff0c;修改图片分辨率也是比较常见的一个问题&#xff0c;需要将图片按照平台的要求修改完成后才可以正常使用。当遇到图片dpi的数值不满足使用需求的时候&#xff0c;有什么方法能够更加快捷的修改图片dpi呢&#xff1f;今…

从零开始利用MATLAB进行FPGA设计(七)固化程序

FPGA开发板&#xff1a;AX7020&#xff1b;Xilinx 公司的 Zynq7000 系列的芯片XC7Z020-2CLG400I&#xff0c;400引脚 FBGA 封装。 HARDWARE PLATFORM在2019以后的vivado中已经没有了。本期实际上已经与MATLAB无关&#xff0c;主要介绍通过VITIS等方法进行程序固化。 目录 ZY…

Github 2024-06-13 Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1Shell项目1多存储文件列表/WebDAV程序 创建周期:1265 天开发语言:Go协议类型:GNU Affero General Public License v…

linux安装dgl

1.DGL官网、选择与自己cuda、python版本匹配的dgl的whl文件CUDA11.8、python10并下载 2.用pip install运行 pip install /home/u2023170749/download/dgl-2.2.0cu118-cp310-cp310-manylinux1_x86_64.whl

git提交错了?别慌,直接删除提交记录

git revert 和git reset &#xff01;这两个命令都有撤销操作的功能&#xff01;哪一个可以删除提提交记录&#xff1f;&#xff1f;&#xff1f; 使用git revert撤销提交 revert的英文释义是回复、恢复&#xff08;到原来的状态&#xff09; 作用 git revert 是 Git 中用于撤…

如何通过SOLIDWORKS教育版提高学生技能培养未来人才?

在当今这个科技日新月异的时代&#xff0c;掌握先进的数字化工具已经成为了一项需备的技能。作为一款功能强大的3D CAD软件&#xff0c;SOLIDWORKS教育版正是一个帮助学生提升技能、培养未来人才的重要工具。那么&#xff0c;如何通过SOLIDWORKS教育版提高学生技能呢&#xff1…

全方位·多层次·智能化,漫途水库大坝安全监测方案

党的十九届五中全会提出&#xff0c;到2025年前&#xff0c;完成新出现病险水库的除险加固&#xff0c;配套完善重点小型水库雨水情和安全监测设施&#xff0c;实现水库安全鉴定和除险加固常态化。 加快推进小型水库除险加固。加快构建气象卫星和测雨雷达、雨量站、水文站组成…

12306 火车票价格解析 (PHP 解析)

1. 从接口拿数据 日期 出发站 终点站 都填上 xxx/otn/leftTicketPrice/queryAllPublicPrice?leftTicketDTO.train_date2024-06-15&leftTicketDTO.from_stationBJP&leftTicketDTO.to_stationSJP&purpose_codesADULT 返回的数据是这样的 {"validateMess…

ASP.NET MVC企业级程序设计(查,删,展示详情,日期转换,¥字符串拼接)

题目&#xff1a; 实现过程 控制器代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc;namespace MvcApplication1.Controllers {public class HomeController : Controller{//// GET: /Home/public Action…

【Bootstrap Faster R-CNN】《Is Faster R-CNN Doing Well for Pedestrian Detection?》

ECCV-2016 中山大学 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method4.1 Region Proposal Network for Pedestrian Detection4.2 Feature Extraction4.3 Boosted Forest 5 Experiments5.1 Datasets and Metrics5.2 Ablation Experim…

【C++进阶学习】第一弹——继承(上)——探索代码复用的乐趣

前言&#xff1a; 在前面&#xff0c;我们已经将C的初阶部分全部讲完了&#xff0c;包括类与对象、STL、栈和队列等众多内容&#xff0c;今天我们就进入C进阶部分的学习&#xff0c;今天先来学习第一弹——继承 目录 一、什么是继承&#xff1f;为什么会有继承&#xff1f; 二…

WPS JS宏获取自动筛选后的行数

//WPS JS宏获取自动筛选后的行数 function getFilterRowCnt(shtRng)//shtRng表示筛选目标工作表范围 {let lngRowCnt 0;for(let rngCell of shtRng.SpecialCells(xlCellTypeVisible).Areas)//获取自动筛选后的单元格行数{lngRowCnt lngRowCnt rngCell.Rows.Count;}return ln…

Web--CSS基础

文章目录 定义方式选择器文本字体背景边框元素展示格式内边距与外边距盒子模型位置浮动实战&#xff1a;个人信息卡片 flex布局响应式布局 定义方式 行内样式表 直接定义在style属性中&#xff0c;作用于当前标签 <img src "/imges/logo.jpg" alt "" …

Vue37-非单文件组件

一、组件的两种编写形式&#xff1a; 非单文件组件&#xff1b;单文件组件。 二、创建一个组件 2-1、组件中的el 组件中不写el&#xff0c;不说为谁服务。 2-2、组件中的data 因为对象形式&#xff0c;多处复用的话&#xff0c;有引用关系&#xff0c;改一处&#xff0c;另一…

atcoder ABC 355-C题详解

atcoder ABC 355-C题详解 ​ Problem Statement There is an NN grid, where the cell at the i-th row from the top and the j-th column from the left contains the integer N(i−1)j. Over T turns, integers will be announced. On Turn i, the integer Ai​ is anno…