论文翻译——Test Selection for Deep Learning Systems

news2024/11/23 20:32:47

文章目录

      • Abstract
      • Introduction
      • Related work(这部分没有翻译完全,我主要是用来做课程回报的,后面的实验就够讲了,这里就不讲了)
      • 3 Motivation and Problem Definition
      • 4 Test Selection Metrics
        • Metrics Derived from the Machine Learning Testing Literature
          • Neuron Coverage神经元覆盖率
        • Surprise Metrics惊讶程度
          • 4.2 Model Uncertainty Metrics模型不确定性指标
      • 5 Experimental Setup
        • 5.1 Datasets and Models
        • 5.2 Objectives and Methodology
          • 5.2.1 Test Selection with Real Data真实数据的测试选择
          • Test Selection with Adversarial Data使用对抗数据的测试选择
          • 附加
          • Data Selection for Retraining
            • 附加
        • 5.3 Implementation
            • 附加
      • 6 Results
        • 6.1 Test Selection with Real Data
        • 6.2 Test Selection with Adversarial Data
        • 6.3 Data Selection for Retraining
        • 6.4 Threats to Validity有效性的威胁(这部分不准备讲出来,因为仅仅是讲述大概的原理,并不需要过份详细,因为我并不会准备对其进行复现)
        • 6.5 Discussion and Lessons Learned
      • 7 Conclusion
      • 个人总结
      • 个人讲稿

Abstract

  • 因为深度学习涉及到复杂并且大量的计算,所以对于深度学习的检测十分困难。而且测试数据一般都只能人工选择,并且只能一个一个标注。这就是提出了一个问题,如果我们能够自动选择候选数据去测试深度学习模型。最近的研究都是集中在定义衡量测试集彻底度的指标,并且根据这些指标来指导系统生成新的数据。然而,选择测试输入问题仍旧是一个开放性的问题。在这个文章中,我们对基于模型不确定性的测试选择指标进行了深入的实证比较。直观地说,我们对候选样本的不确定性越大,该样本触发错误分类的可能性就越大。同样,我们假设我们最不确定的样本信息量最大,应该优先用于通过重新训练来改进模型。我们在五个模型和三个广泛使用的图像分类问题上评估了这些指标,这些问题涉及五种生成算法产生的真实和人工(对抗性)数据。我们表明,基于不确定性的指标具有很强的识别错误分类输入的能力,比意外充分性强三倍,优于覆盖相关指标。我们还表明,这些指标在重新训练期间导致分类准确性的更快改进:在我们考虑的所有模型上,比随机选择和其他最先进的指标快两倍

Introduction

  • 深度学习 (DL) 系统 [18] 能够解决复杂的任务,在许多情况下与人类同样好甚至更好。这样的系统很有吸引力,因为它们自己学习特征,因此只需要最少的人类知识。此属性使 DL 灵活且强大的。因此,它越来越多地使用并与更大的软件系统和应用集成。
  • 当然,这项技术的采用引入了对其可靠评估的需求。在经典的、基于代码的软件工程中,这种评估是通过测试实现的。然而,由于它们解决的任务的复杂性,DL 系统的测试具有挑战性。为了有效地测试 DL 系统,我们需要识别挑战学习属性的极端情况。本质上,DL 系统测试应该专注于识别错误学习的属性并导致可以使系统偏离预期行为的数据。
  • 为此,最近的研究专注于设计测试覆盖指标来衡量一组输入测试模型的程度。大多数研究(例如,受神经元覆盖 (NC)启发的研究)侧重于激活各种神经元组合并生成新的测试输入以增加这些组合的比例。其他研究工作认为 DL 模型反映了训练数据的特定属性,并且它们的行为是根据它们在训练阶段获得的知识确定的。因此,它们促进了衡量输入之间差异的覆盖指标,而不是模型内。
  • 在本文中,我们专注于选择测试输入的问题。在 DL 中,测试输入选择解决了一个实际问题:应该标记哪些未标记数据子集来发现 DL 模型中的故障。这个目标与以前的方法不同,这些方法要么测量测试彻底性,要么生成(人工)测试输入。我们的目标是帮助标记测试数据(决定输入的类别)时所涉及的手动工作。显然,数据标记涉及广泛的手动分析(由于 DL 系统所需的大量数据),这可以通过仅使用最可能的故障揭示测试数据来减少。因此,为了减轻这种负担,我们的目标是识别有助于选择最有趣的(可能触发错误分类)测试数据的指标。
  • 近年来,科学界提出了支持 DL 模型的测试的指标(更多在第 2 节中阅读)。然而,这些指标在不同的上下文(例如对抗性示例生成和检测)或测试场景中进行了研究(例如,测量测试彻底性)。总而言之,现有指标确定错误分类输入的能力尚不清楚。因此,我们的贡献是从新角度评估这些指标:测试输入选择。这是为了选择最大化触发错误分类机会的输入的目的。据我们所知,我们的工作是唯一研究此测试选择目标的工作。
  • 我们假设有效指标应该选择更有可能触发模型错误分类的输入。经验表明,分类错误是由于特征空间的重叠区域重叠和紧密定位的区域而发生的错误学习属性。因此,驻留在学习类别与其边界之间的案例最有可能是错误学习的类别。鉴于此,我们的目标不是针对特定神经元 [27] 或测试数据多样性 [14] 的覆盖范围,而是针对具有接近模型边界的属性的数据。换句话说,我们认为测试选择应该指向学习类的边界。
  • 因此,我们考虑基于模型不确定性概念(对特定输入的置信度较低)的测试选择指标。直观地说,模型对候选样本的不确定性越大,样本触发错误分类的可能性就越大。同样,模型最不确定的样本也是学习信息量最大的样本(应该用于通过重新训练来改进模型)。正如Gal等人[7]所建议的,我们通过多次随机丢弃网络中神经元[36]观察到的预测概率的方差来近似不确定性。我们还使用实际模型的输出概率作为确定性度量,我们还将它与 dropout 方差相结合。
  • 我们在三个数据集(即 MNIST、Fashion-MNIST 和 CIFAR-10)上使用图像分类器评估这些指标,并将它们与之前提出的指标进行比较——例如,意外充分性指标 [14] 和几个基于 NC 的指标 [22, 27]。特别是,我们研究了真实和人工(对抗性)数据上指标和错误分类之间的相关性。我们表明,在考虑真实数据时,基于不确定性的指标与错误分类的相关性中等,并且在考虑真实数据和对抗性数据的混合时具有很强的相关性。相比之下,基于覆盖率的指标相关性较弱或不相关,而意外充分性的相关性较弱
  • 有趣的是,我们的结果表明,在考虑错误分类时,预测概率(先前工作忽略的简单确定性度量)是最有效的指标,显着优于意外充分性和覆盖率指标。然而,在重新训练的情况下,dropout 方差与预测概率的组合在分类精度的更快改进方面超过了其他指标。
  • 我们的贡献可以概括为以下几点:
    • 我们建议基于一组度量模型不确定性的指标(即正确分类看不见的输入的置信度)执行测试输入选择。我们考虑多个 dropout(即模型输出在 dropouts 下的分布)、模型的预测概率和组合两者的指标引起的方差。
    • 我们对测试选择指标的故障揭示能力(错误分类触发能力)进行了第一项研究。我们证明了基于不确定性的指标挑战了 DL 模型,并且具有与错误分类的强相关性(真实数据的相关性约为 0.3,真实加对抗性的相关性约为 0.6)。此外,我们表明这些指标明显强于意外充分性和覆盖率相关指标。
    • 我们还表明,模型不确定性可以指导信息输入数据的选择(即能够提高分类精度的数据)。特别是,当根据所选数据重新训练 DL 模型时,性能最佳的不确定性指标比随机选择和覆盖率指标提高了多达两倍。

Related work(这部分没有翻译完全,我主要是用来做课程回报的,后面的实验就够讲了,这里就不讲了)

  • 学习系统的测试通常是通过从可用的标记数据[39]中随机选择一个专用测试集来执行的。当显式测试数据集不可用时,人们可以依靠交叉验证 [15] 来使用训练集的一部分来预测学习模型将泛化到新数据的程度。然而,这些已建立的程序往往无法涵盖许多错误。例如,对抗性学习的研究工作表明,对数据应用小扰动可以使模型给出错误的答案[10]。今天,这些对抗样本仍然难以检测和绕过许多最先进的检测方法[4]。为了获得更好的测试,近年来提出了许多方法。我们区分四类贡献:(i)衡量测试集覆盖率/粗糙度的指标,(ii)人工输入的生成,(iii)选择测试数据的指标,以及(iv)对抗样本的检测。
  • Pei等人提出的DeepXplore。[27],包括覆盖度量和新的输入生成方法。它引入了 NC 作为第一个白盒度量,以评估测试集覆盖 DL 模型决策逻辑的程度。在这个标准上,DeepXplore 通过解决两个目标的联合优化问题来生成人工输入:最大化多个模型之间的行为差异并最大化激活神经元的数量。Pei等人[27]报告说,DeepXplore可以有效地揭示传统机器学习评估方法未检测到的错误(错误分类)。此外,使用额外的数据进行再训练DeepXplore生成的提高了模型的准确性。在某些模型上,随着一些对抗技术[10]生成的数据进行再训练,增加优于(1%到3%)。Pei等人[27]还表明,随机选择的测试数据和对抗数据比DeepXplore生成的数据实现了更小的NC。虽然他们假设更多的 NC 会导致更好的测试,但后来的研究表明该指标是不够的 [14, 22]。
  • 在后续工作中,Tian等人[36]提出了DeepTest作为另一种为自动驾驶DL模型生成新输入的方法。他们利用在这种特定上下文中成立的变质关系。与 DeepXplore 一样,DeepTest 利用最大化 NC 会导致更具挑战性的测试数据的假设。作者表明,不同的图像变换导致不同的NC值,并推断NC是驱动生成具有挑战性的测试数据的充分度量。然而,经验证据不支持这一主张。
  • Ma等人[24]提出了一种相关方法。它的工作原理是深度神经网络模型中有一个反复出现的缺陷,使得来自一个特定类的输入经常被错误分类。该方法基于差分分析来识别负责该缺陷的特征/神经元,从而修复模型。相反,我们建议使用的不确定性指标独立于输入的特定类别并且是轻量级的(它们不需要更昂贵的计算/分析)。总体而言,我们看到我们的工作(轻量级指标来检测和修复标点错误)与Ma等人24是互补的。

3 Motivation and Problem Definition

  • 深度学习模型能够学习数据的统计模式特征,能够解决很多问题,但是需要很多数据。很典型的就是计算机视觉中的图形图像分类。数据标注的越多,效果越好。但是数据标注需要大量的人工,所以一般要来说,模型要落地,需要花很多的功夫。我们的出发点就是减少人工投入,增加人工投入的价值比。

  • 我们将这个问题定义如下,假设开发者拥有无限的输入,但是都没有标注,只能选择标注其中k个数据。选择最有效的k个数据进行标注,就是我们提出的测试输入选择问题。有效性定义如下

    • 如果要对一个深度学习模型进行测试,如果样例能够发现模型越多的问题,越有效。对于分类模型而言,分类错误就是最直接的缺陷,所以有效性就是最大化模型对于测试输入集的分类错误的数量
    • 如果要重复训练一个模型,有效性就是使用我标记的数据进行重复训练之后,模型的改观最大
  • 我们的目标就是提供一个客观并且可以测量的方式来识别出有效的测试输入,来解决输入选择问题。我们可从一下两个方面来解决这个问题

    • 如何选择能够让模型出现错误的测试输入,对于分类模型而言就是分类错误
    • 如何选择能够加快模型改良速度的额外的训练数据,对于分类模型而言就是提高模型分裂的准确度
  • 我们通过运行实验来检测不同选择指标的准确性来回答这个问题,基于我们的结果测试者可以根据他们的目标 和上下文选择他们需要的指标参数。

4 Test Selection Metrics

  • 我们主要的目标是研究和误分类相关的指标,并且研究对于选择分类错误的输入样例能起多少作用。我们假设模型的不确定性和分类错误现象是相关的,模型对于一个确认的输入有多不确定,就越有可能将之分类错误。目前来说dropout方差是估计预测不确定性的最直接简单的方式。
  • 我们考虑的别的一些参数是机器学习中常见的一些参数,比如说NC神经元覆盖率、惊讶程度等,虽然他们不是专门的用来引导输入数据选择的,但是被广泛用于输入数据生成。因此,将这些指标作为参考的基准。
  • 由于我们的目标是试验测试输入选择问题(我们的新视角),我们应该使用最相关的指标,Kullback-Leibler (KL) 散度是衡量估计模型不确定性的 dropout 方差的另一种方式

Metrics Derived from the Machine Learning Testing Literature

  • 学术界中经常使用的指标一般是用来衡量测试彻底程度,比如说语句覆盖率、路径覆盖率等,不是直接用来做输入选择的。但是仍旧可以用来用于后者的训练,我们可以选择使用模型的覆盖率高的测试输入。
Neuron Coverage神经元覆盖率
  • 这个就和一般软件工程中的测试样例生成中的语句覆盖或者路径覆盖一个道理,不过不是覆盖语句,是覆盖神经元。NC最开始是用来指导生成人工输入的。最直接的定义就是一个测试样例输入所能够激活的神经元占总神经元的比重。定义如下
  • Definition 4.1
  • D表示已经训练过的深度学习模型,有N个神经元,输入x的神经元覆盖率如下,其中activate(n,x)表示被输入x激活的神经元数量。4.1仅仅定义了一个输入所激活的神经元,和其他的神经元没有关系。

在这里插入图片描述

  • 使用ANC表示仅仅有x激活的,并没有在训练中激活的额外的神经元覆盖率(Additional Neuron Coverage)。D表示由N个神经元组成的深度学习网络,输入x关于这个D的定义如下

在这里插入图片描述

  • 还有很多别的基于彻底程度的指标,比如说对于NC的扩充,
    • KMNC:K-Multisection Neuron Coverage
    • NBC:Neuron Boundary Coverage
    • SNAC:Strong Neuron Activation Coverage

Surprise Metrics惊讶程度

  • 惊喜程度描述的是模型遇到新的输入x所表现出的惊讶程度,基于SA,本文主要有两类,分别是LSA和DSA
  • LSA
  • 这个主要是基于核密度估计,根据模型中的神经元的激活值估计x相对于训练记得相对可能性,为了简化计算,仅仅考虑特定某一层的神经元。
  • D是一个深度学习模型,在T训练集上进行训练,输入x关于模型D的基于可能性的惊讶程度(likelihood-based surprise adequacy)。其中 α \alpha αNL表示D中的L层的神经元遇到输入x的激活值构成的向量。TD(x)表示训练集中和x同类别的所有的输入。KH是宽度为H的高斯核函数

在这里插入图片描述

  • DSA
  • 这个是基于欧式距离的,观点是输入x和其他的类别越近,但是和自己的类别越远,被认为越惊讶。这个惊讶程度是通过输入x距离最近的同类别的另一个样例的距离和不同类别的另外一个类别的样例的距离的比值来表示,和LSA一样,所有的这些距离都被考虑在输入x的激活函数空间中。

在这里插入图片描述

  • LSA和DSA都是衡量不同聚类的密度和距离。本质上,任何能区分集群一致性的指标都可以用来选择测试样例。

  • Si

  • 这个也是估计惊吓程度的一个参数,长处是稳定,并且范围有限[-1,1],LSA和DSA拥有上确界,没有下确界

在这里插入图片描述

4.2 Model Uncertainty Metrics模型不确定性指标
  • 一般来说,模型对于某一个输入的不确定性越高,分类错误的可能性越大,所以使用不确定性指标作为探索的目标
  • MaxP
  • 由模型返回的对于每一个输入的类别预测概率就是最直接的参考指标。这个输入的挑战性越高,模型对于对应类别的预测概率概率越低。这个经常被学术界忽略,但是很有效
  • 定义如下。C是类别的数量,pi表示对应i类的概率

在这里插入图片描述

  • Dropout Variance

  • dropout最初被提出来是为了防止模型过拟合,使用dropout层实现对于特定神经元的失活。经过数学证明可以用dropout计算x关于模型的不确定性。主要是通过将x传入模型k次,计算对应的预测概率的方差。虽然,预测的概率可以可视化为模型预测x和类别边界的距离,dropout方差表示我们的知识的不确定性对类边界的确切位置引起的这些距离的方差。

  • 定义Variance指标,是用来定义x关于模型在所有类别上的方差的平均值,c是类别个数

在这里插入图片描述

  • 缺点就是并没有考虑到预测的距离,目标类别的预测距离。为了克服这个问题,我们使用相关的别的参数,综合了最高分类概率maxP

  • MaxP Dropout Variance

  • 加上特定类别进行正则化,获得模型的量化过程
    在这里插入图片描述

KL

  • 我们没有预测概率的方差,K个不同突变模型的预测结果的归一化预测结果分布。我们构建了这 k 类预测的归一化直方图,并将它们与最坏情况的模型的分布进行比较,其中类预测均匀分布在所有类中。因此,在最坏的情况下,预测输入 x 属于第 i 类的突变数量由 k/C 近似给出。将实际类别预测分布,和最差类别分布进行比较,不确定性越高,

在这里插入图片描述

  • 其中i是类别标签,H是k个dropout产生的x个类的预测的直方图,其中Q是均匀分布。

5 Experimental Setup

5.1 Datasets and Models

  • 我们考虑三个图像识别数据集。MNIST [19] 包含 10 个类别的手写数字数据,由 70,000 张图像(60,000 张用于训练,10,000 张用于测试)组成。FASHION-MNIST [1] 有分类为 10 个类别的服装图像,也由 70,000 张图像、60,000 和 10,000 张用于训练和测试组成。CIFAR-10 [2] 有 10 类图像(猫、狗、卡车等)。该数据集有 50,000 张图像用于训练,10,000 张用于测试。这三个数据集广泛用于研究,并被认为是观察关键趋势的一个很好的基准,除了需要负担得起的计算成本。
  • 由于研究界的努力,这些分类问题今天可以高精度解决。这一特性使这些数据集具有挑战性且与我们相关;在准确的模型中触发错误分类比不准确的模型要困难得多。事实上,模型选择更有益,因为有趣的测试(即错误分类的输入)在测试候选集中很少见(因此,当模型具有高准确度时)。考虑到精度低的模型不相关,因为在这种情况下,更有可能选择错误分类的示例。
  • 表 1 显示了我们在实验中使用的模型的特征。对于 MNIST 和 Fashion-MNIST,我们使用了三个简单的网络:多层感知器 (MLP)、LeNet [19] 和具有更多内核的修改版本 LeNet (WleNet)。对于 CIFAR-10,我们使用两个复杂网络 NetInNet [20] 和 10 层 VGG16 [33](命名为 VGG10),通过删除顶层并在每个卷积层之后插入批量归一化层获得。这些模型训练了 50 个 epoch (MNIST)、150 个 epoch (Fashion-MNIST) 和 300 个 epoch (CIFAR-10)。表 1 中的最后一列显示了在整个训练集上训练时模型(在 epoch 上)的最佳准确度

在这里插入图片描述

5.2 Objectives and Methodology

5.2.1 Test Selection with Real Data真实数据的测试选择
  • 第一步是检测指标选择测试输入的能力,这个测试输入能够检测出模型的问题。指标和分类错误现象的联系。将模型对于输入x的预测结果编码为二进制变量。对于每一个指标,我们计算这个指标对于所有测试输入的评分和他们相对应的二进制变量的Kendall(肯德尔)相关系数。这里使用肯德尔相关系数,是因为预测结果是一个二进制变量,这样就先对特定类别的输入进行排序,然后就可以根据排序选择分类错误的样本数据。
  • 肯德尔系数:序数关联度量
Test Selection with Adversarial Data使用对抗数据的测试选择
  • 为了检测指标在数据量较大时的故障检测能力,我们使用对抗生成样本去增强测试数据。对抗生成样本是在原来的原来的数据上,连续使用多个扰动生成的,主要是为了检测分类器。对抗样本使用的很广泛,测试选择指标应该对这类数据拥有鲁棒性。除此之外,以往的很多研究也使用了对抗样本。为了制作对抗性数据,我们使用物种已经成熟的对抗性数据生成算法。Fast Gradient Sign Method (FGSM) [10], Jacobian-Based Saliency Map Attack [26], DeepFool [25], Basic Iterative Method [16] and Carlini-Wagner (CW)
  • 我们分别使用五种算法生成各自的数据集,因此就有五个数据集。除了CW,所有的算法都生成了10000张图片,CW制作了 1,000 张对抗性图像,太慢了,要用 1 天。尽管如此,CW 对原始图像应用更少的扰动。然而,我们使用前面提到的程序来计算五个数据集中测试选择指标和错误分类之间的 Kendall 相关性,使用五种算法生成的原始图像和对抗性图像。
  • 为了进一步研究指标对对抗性数据的敏感性,我们从数据集中随机选择的 600 张图像,并用FGSM和CW连读迭代生成对应的图片。 FGSM 生成的 3,603 个中间图像,CW生成18,148个图片,并根据所研究的指标计算它们的分数。由于一开始的图片是分类正确的,对抗生成算法是增量运行的,迭代的次数越多,生成的图片和最初的图片,差距越大,分类错误的机会越多。因此,指标和迭代之间的单调关系,很好的量化分类错误可能性。因此,我们计算了这些中间图像的指标得分与其产生的迭代次数之间的 Spearman 相关性(衡量研究变量之间的单调性的统计测试)
  • 我们还研究了仅使用对抗性输入时指标和错误分类之间的相关性。我们选择中间图像和最终的对抗性图像并将它们与二元变量(良好或错误分类)相关联,并计算二元变量和指标之间的 Kendall 相关性。
附加
  • Kendall相关系数:针对有序分类变量的相关系数,属于等级相关系数,评分和二进制分类结果的相关程度。
  • Spearman相关系数:衡量研究变量之间的单调性的统计系数
Data Selection for Retraining
  • 在研究了指标选择有效测试输入的充分性之后,下面是关注这些参数能够帮助改善模型训练的多少效果。换句话说,我们研究的是,如果我们使用基于这些指标选择的数据扩充数据集,能否使得模型的训练快速改良。为此,我们设置了一个迭代再训练过程,如图 1 所示。
    在这里插入图片描述

  • 首先,我们将原始训练集随机分成 10,000 张图像的初始训练集和包含剩余图像的候选集。测试集保持不变。在第一轮中,我们仅使用初始训练集训练模型并计算其在测试集上的准确性。在完成训练后,我们使用我们得到的最佳模型(在训练 epoch 上)来计算剩余候选数据的测试选择指标。

  • 然后,我们将候选集中的 5,000 张新图像(由指标选择)添加到当前训练集中。所选图像是那些不确定性最高的图像(即 Si、KL 和 MaxP 的最低分数、Var 和 V arw 的最高分数)或惊讶(LSA 或 DSA)或覆盖率(即更高的 NC、ANC、KBNC、NBC 和 SNAC)。我们使用整个增强训练集从头开始重新训练模型,以保证收敛(MNIST 和 Fashion-MNIST 为 150 个 epoch,CIFAR-10 为 300 个 epoch),以便我们可以公平地分析不同的方法

  • 尽管增量训练(使用新数据重新应用当前模型上的训练算法)效率更高,但当前的实现(例如,在 scikit-learn1 中)表明增量训练会对最旧的数据产生偏差,因为训练算法(如随机梯度下降)随着时间的推移对新示例的重要性较低(由于学习率的降低)。如果新数据遵循与旧数据不同的分布,这种差异可能是显着的。因此,在假设较小的概念漂移时使用增量训练,而在无法做出这样的假设的情况下使用从头开始训练(或可能不成立)。这实际上是许多公司从头开始重新训练的原因[8]。然而,我们的实验的目的不是找到计算上的最佳方法来合并额外的训练样本,但为了确保通过以最详尽的方式合并额外的训练样本(以确保模型已经足够好地训练)产生最佳可能(即使差异很小)的结果。因此,为了避免做出这样的假设,我们遵循从头开始重新训练的保守方法,以确保新旧训练数据平等对待。

  • 我们重复上述过程多次,直到候选集为空。在训练或者重复训练中,并没有使用任何测试集的数据。为了解释训练过程中的随机变化,我们重复整个实验三次,并且返回每一次模型的训练的所有的epoches的平均精确度。

  • 为了评估每个指标的有效性,我们观察重复训练过程中的独立测试数据的验证损失和精确度的变化。有效的参数,在重复训练的过程中,损失快速下降,精确度快速增加。

  • 之前的研究已经表明,我们所使用的模型准确度已经很高了,如果提高对应的模型准确度,会降低模型对于对抗样本的鲁棒性。为了检测这个,我们也计算所有模型的经验鲁棒性,这个也是通过输入测试图片尽心检测的。借此来查看这些参数在这个现象中存在妥协。

附加
  • 这部分虽然是重复训练,但是作者为了体现出选出来的样本对于原来的数据集的改良效果,这里修改了训练集,然后重新训练,为了祈祷一个对比的效果

5.3 Implementation

  • 整个方法使用keras和tensorflow实现,然后使用Foolbox进行对抗数据的生成。整个实验过程中所有的代码在网上都能获得,https://github.com/ARiSE-Lab/deepTest
  • 因为VGG16并没有使用标准的dropout层,我们使用了lambda层实现了一个。如果模型中包含了dropout层,一开始会关掉dropout层,只有在训练中才会使用。不会改变模型的计算,而是通过dropout交替模型的行为
  • 为了实现Surprise Adequacy和NC,我们使用github上提供的源代码,我们基于这个源代码重新实现了NV和层神经元的覆盖率,最后,我们使用IBM提供的鲁棒性框架,去计算我们训练的模型的鲁棒性
附加
  • Foolbox:即使是当今最先进的机器学习模型也很容易被其输入几乎难以察觉的扰动所欺骗。Foolbox 是一个新的 Python 包来生成这种对抗性扰动并量化和比较机器学习模型的鲁棒性。它建立在最可比较的鲁棒性度量是制作对抗样本所需的最小扰动的想法之上。为此,Foolbox 提供了大多数已发布的对抗性攻击方法与一些新的对抗性攻击方法的参考实现,所有这些都执行内部超参数调整以找到最小对抗性扰动。此外,Foolbox 与最流行的深度学习框架(如 PyTorch、Keras、TensorFlow、Theano 和 MXNet)接口,并允许不同的对抗性标准,例如有针对性的错误分类和 top-k 错误分类以及不同的距离度量。该代码可在 MIT 许可下获得许可,可在 https://github.com/bethgelab/foolbox 公开获取。最新的文档可以在 http://foolbox.readthedocs.io 中找到。

6 Results

6.1 Test Selection with Real Data

  • 表格2展示了指标和分类错误的肯德尔相关系数

在这里插入图片描述

  • 上述表格中,KL,Var,Var-w,MaxP和DSA的具有中等程度的相关性,意味着他们能够实现对于测试数据的评价量化。LSA和Si对于分类错误具有弱相关性。NC的相关性更是弱上加弱。我们三个模型对于ANC的相关性,因为测试集并没有人覆盖任何新的神经元,走的都是训练集中已经遍历过的神经元。
  • 总的来说,结果表明,KL,Var,Varw,MaxP和DSA和分类错误相关性很强。更精确点,KL和MaxP是测试选择最好的指标,是别的指标的三倍还多。甚至在MNIST手写数据集中,这两个指标是唯二达到中等相关性的。然而,我们找到的最好指标也才是中等相关性,说明他也并不能很好的区分分类正确和分类错误的之间的联系。
  • KL 和 MaxP 是区分错误分类真实数据和分类良好的真实数据的最佳指标。它们与其他错误分类的相关性高达三倍。

6.2 Test Selection with Adversarial Data

  • ** Mix of Real and Adversarial Data **
  • 图二记录的是指标和分类错误的肯德尔相关系数,测试集是使用了对抗样本增强之后的。热力映射图展示使用五种不同的算法,在真实数据和对抗数据混合的情况下,指标和误分类的相关性。颜色越轻,效果越好。ANC中的灰色部分对应于NC中没有增加的。

在这里插入图片描述

  • 不同于实际数据,在对抗数据中,所有指标的相关性都更强了。在大部分的情况下,KL,Var,Varw,MaxP,Si和DSA都是强相关性,而LSA仅仅是中等相关性。总的来说,MaxP和KL的效果最好,无论那两种请宽都是最好的两种。至于基于NC的指标,相关性仍旧很弱,甚至时而正时而负。即使在逐个模型的基础上,也不会出现总体趋势。令人惊讶的是,NC 的性能优于 KMNC、NBC 和 SNAC,甚至在两个 WLeNet 模型上实现了中等/强的相关性。

  • 尽管如此,相关性的整体强化可以解释为对抗性图像具有某种形式的人工噪声,分类器在训练期间从未经历过。这种噪音使得分类器对如何处理它们不太有信心,这是由指标反映的事实。我们还推断,对抗性数据不会形成评估测试选择方法的挑战性场景。鉴于对抗性图像被错误分类,指标可能比区分良好和错误分类的数据更适合区分对抗性和真实数据。

  • Well and Misclassified Adversarial Data正确和错误分类的对抗数据

  • 图3是一个箱线图,专门用来描述概率分布的统计图。箱子中间的细线描述的是中位数,箱子描述上下边分别是对应的上四分位数和下四分位数。箱子之外的横线1.5倍四分位等间距的值,表示上下限。如果没有上下限,就是用最大值和最小值进行替换。点表示异常值。如果有上下限,就用上下限代替,然后外面的数据用点标记,表示异常点。

  • 对于每一个指标,箱线图描述的是指标对于图片的评分和迭代次数的superman相关系数的统计学分布。基于不确定性和Suprise的指标是强相关性的指标能够获得强相关性,这些指标和迭代次数是近似线性关系的,能够很好地获得对抗数据的生成流程。相反的,基于NC的指标效果就很差,是呈现若相关性的

  • 下述的系数越高说明相关性越强,说明系数能够有效反映出分类错误的现象

在这里插入图片描述

  • 表 3 和表 4 分别显示了错误分类与分别在 CW 和 FGSM 生成的中间(大部分分类良好)和最终(错误分类)图像上计算的指标之间的 Kendall 相关性。在考虑 FGSM 时,相关性类似于将真实数据与对抗性(错误分类)数据混合时的相关性。然而,在 CW 的情况下,它们变得更弱,尽管它们对于某些指标(V arw 、MaxP、LSA 和 DSA)仍然中等到强。特别是,KL 的相关性令人失望,尽管该指标在之前的实验中表现良好。这些回归可以解释为 CW 已知比其他对抗性算法产生更小的扰动这一事实。因此,中间图像和最终图像之间的差异小于它们在FGSM情况下的差异
  • 当仅面对对抗性输入时,测试选择指标会失去其能力的一部分。这是由于对抗性生成算法引入的固有噪声。MaxP 总体上仍然实现了最强的相关性,在 16 个案例中的 13 个中优于其他指标。

在这里插入图片描述

6.3 Data Selection for Retraining

  • 图片四展示了数据增强后,每一轮训练的达到的最佳准确度,训练数据是根据不同指标选择的5000个数据样本,初始的数据是10000个,然后逐次往里面增加10000个,直到50000都加进去了。这里需要注意一下,初始模型的精度已经很高了,所以每一次迭代提高的准确度就很少。

  • 总体而言,我们看到基于不确定性和惊讶程度的指标效果要比NC好很多,而NC基本上和随机选择效果一样,起不到任何作用。

  • 在第三轮数据增强的训练中,应用在WLeNet在数据集Fashion-MNIST上,Var比基于NC中最好的指标ANC要高上45%,虽然比起初始的模型的精确度仅仅增加了3%。

  • 在应用于 CIFAR-10 和第三轮的 NetInNet 上,Var 的准确率比 ANC 提高了 20% 以上(+8.4% 对 +6.9%),而准确度从初始训练集增加到最终训练集增加了 +10.4%。当考虑验证损失时,我们观察到类似的结论。事实上,基于 NC 的指标导致下降较慢(类似于随机选择),这揭示了这些指标选择数据进行再训练的不恰当性。

  • 除了迄今为止考虑的指标外,我们还使用了打破平局的方法增强了 Var 和 KL:当两个输入具有相同的 Var 或 KL 分数时,我们选择 MaxPscore 最低的输入。**有趣的是,这两个新指标(用 V arp 和 KLp 表示)进一步提高了 8 个模型中五个模型的准确性和四个模型中验证损失的减少。**总体而言,这些新指标比覆盖指标和随机选择提高了两倍的准确率。与其他不确定性指标相比,额外的增益并不显着,尽管它保留了存在的优点。因此,应该需要使用单个指标,KLp 和 V arp 将作为有效的选择出现。

  • 对于每个模型和指标,我们计算了再训练轮次的经验稳健性的演变。总体而言,我们观察到无论考虑的模型和指标如何,鲁棒性分数在轮次上几乎没有变化。事实上,所有模型和指标的最大差距为 0.022,这是微不足道的。此外,我们不能推断在这方面,任何指标都比其他指标相对最佳或最差,因为变化不是单调的。因此,不确定性和基于惊喜的指标可以在不影响鲁棒性的情况下提高比基于覆盖率的指标的准确性。

  • 基于不确定性和基于惊喜的指标,特别是打破平局的指标 KLp 和 V arp ,在选择重新训练输入方面是最好的,并且比随机选择快两倍。它们在没有鲁棒性显着变化的情况下实现这一点(<0.022)。

在这里插入图片描述

  • 在一组固定的 10,000 个原始测试数据上验证准确度,并通过用不同的指标选择的 5,000 个数据(在每个再训练轮次)连续增加训练数据来实现。X 轴表示每轮训练集的大小,而 Y 轴显示三个重复的平均准确度(方差小于 -5)。

6.4 Threats to Validity有效性的威胁(这部分不准备讲出来,因为仅仅是讲述大概的原理,并不需要过份详细,因为我并不会准备对其进行复现)

  • 对内部有效性的威胁涉及实施我们研究的软件成分。有些是通过我们重用具有典型参数化的现有模型架构来解决的。生成的模型在(包括将它们拆分为训练集和测试集)的最先进数据集上获得了高精度,这表明我们的设置是合适的
  • 我们在一种情况下实现了 dropout“从头开始”(即作为 Lambda 层),在其他情况下,我们重用了在训练过程中原生嵌入的实现。这两种替代方案的使用增加了我们对结果有效性的信心。最后,通过各种实验手动测试不同指标的实现。此外,我们重用了基于惊喜和基于覆盖率的指标的可用实现。关于 LSA,已经表明层的选择对度量 [14] 的充分性有影响。然而,Kim等人[14]可以发现与层的深度没有相关性。因此,我们做出与Kim等人[14]相同的选择,并在最深的隐藏层上计算LSA。
  • 对外部有效性的威胁源于我们考虑的数据集、模型和对抗性生成算法的数量。我们使用的设置是在科学文献中建立的,并允许将我们的方法与相关工作进行比较。对此类已建立的和通用数据集表现良好是现实世界应用程序的先决条件,这些应用程序通常表现出其应用领域固有的偏差。不确定性度量的黑盒性质进一步促进了我们研究的复制和补充:所有这些都只需要计算预测概率。
  • 构造有效性威胁源于我们考虑的测量。我们考虑研究指标与错误分类之间的相关性,这是使用的自然指标(在某种意义上等同于软件工程文献 [3, 9] 研究的故障检测和测试标准关系)。我们还与惊喜充分性 [14] 和覆盖率指标 [22, 27] 进行了比较,这些指标是当前最先进的方法。

6.5 Discussion and Lessons Learned

  • 这段很重要,说明了当前的问题是和软件工程相关的

  • 我们的实验主要是阐明了目前深度学习测试指标的选择测试输入的能力

  • 从 DeepXExplore 开始,先前的研究主张使用NC神经元覆盖率,测试要激活更多的神经元,并且使用这个原则来生成测试数据。此外,在传统的软件工程中,覆盖指标(例如语句和分支覆盖率)通常用于指导测试生成/选择。因此,软件工程师也考虑 NC 进行 DL 系统中的测试选择是很自然的。

  • 然而,与传统的(基于代码的)软件一样,为测试 DL 系统找到合适的停止标准仍然是一个悬而未决的问题。我们的结果表明,实现 100% 的 NC 并不能保证没有错误,就像在传统的软件中实现 100% 的语句覆盖率一样。

  • 更糟糕的是,基于覆盖率的指标与错误分类的相关性较弱,有时比随机选择弱。这给社区带来了一条重要的信息:错误分类的输入不一定是那些涵盖新神经元的输入。总体而言,虽然基于覆盖率的指标是测试输入生成的方便的指导标准,但应该使用不同的指标进行测试选择。

  • 至于其余的指标,我们的结果证明了新的发现。如果专门选择会被错误分类的测试样例时,模型输出的各个类别的概率是最好的指标,这个指标不受数据的影响,无论数据是原始数据,还是对抗数据。所以,在以后的研究中,我们可以使用这个简单的指标作为参考的基准,开发者也可以将其作为测试选择的指标。

  • 说明提出的指标效果确实不错,另外一个就是可以使用drop 方差,这个是目前估计模型不确定度的最新的指标,可以之前的MaxP进行改良,效果更好

  • 在选择输入对模型进行重新训练的过程中,我们发现将KL散度或者权重方差和最高类别概率进行组合之后的效果往往会更好。所以说,在选择输入进行测试的过程中,可以观察到不确定性指标的差别的

  • 另外一个重要的发现是,KL散度之类的参数对于噪声很敏感,当处理的数据仅仅只有对抗数据时,这些参数分辨正确分类和错误分类的能力会下降。事实上,第 6.2 节的结果表明,将错误分类的对抗性数据引入测试集会产生不确定性指标和错误分类之间的更强相关性。这意味着对抗性示例比真实示例产生更多的不确定性。这是因为大多数对抗性算法旨在实现错误分类,同时最小化输入扰动。使模型对高置信度(低不确定性)模型的示例进行错误分类并不是这些算法的目标函数的一部分,尽管一些研究(例如 [10])表明这可能偶然发生。我们在第 6.2.1 节中的结果证实,由于它在迭代中引入的噪声增加,模型的不确定性在对抗算法的迭代上增加。

7 Conclusion

  • 我们考虑了深度学习中很多基于模型不确定性的测试选择指标。我们将这些指标和神经元覆盖率和故障发现率两类指标进行比较,以此来发现他们发现模型故障的能力。

  • 总的来说,我们的发现可以总结如下

    • 如果处理的是原始数据,不确定性指标最好,尤其是KL和MaxP两类指标,优于之前提出的神经元覆盖率NC和惊讶程度
    • 如果处理的数据原始数据和对抗数据混合的,MaxP最有效,这个指标在学术界经常被忽略。除此之外,基于不确定性的指标效果也往往更好。
    • 在测试相关的实验中,我们要谨慎使用对抗数据。在实验过程中,所有的指标分别在原始数据、对抗数据和两者混合的情况下,表现差异很大。
    • 我们还证明了在选择数据对模型进行在训练的时候,KL和Var两个指标能够给模型带来很大的提升。获得的准确率比之前提出的指标或者随机选择的指标要高出80%以上
  • 我们的工作推动了深度学习系统测试进一步发展。这些自动数据选择指标有助于测试数据的系统和客观选择。这是衡量测试有效性的标准化方法

个人总结

  • 这部分翻译的比较草率,因为我是先看引文论文,然后一边做ppt,结果做着做着忘记前面的内容了,但是又不想回去看,就先翻译后面的,再做ppt,ppt做完了,发现前面不想翻译了,就用机器翻译了,简单看了一下。

个人讲稿

  • 各位老师,同学下午好,我是。。。。。。,我汇报的内容是Test Selection for Deep Learning Ssytems,主要针对深度学习系统中的测试。我将从一下五个部分讲述介绍我们的内容,分别是研究介绍、研究内容、研究方法、实验结果和总结。

  • 首先从研究介绍开始,首先介绍两种常见的软件测试方法,一种是覆盖测试,左边的是条件覆盖的程序运行情况,常见的还有什么语句覆盖、组合覆盖等,这一类覆盖测试是以所有的语句或者条件都被覆盖为终止条件。第二种就是变异测试,这种测试是白盒测试,在代码中随机制造相关的操作,然后运行程序,看看有多少错误能够规避误差,顺利执行。这都是一般的软件工程中的测试环境,深度学习系统也是一种程序,针对深度学习系统的检测又有哪些?这篇文章就是专门针对深度学习系统中故障和缺陷检测。

  • 深度学习用的已经很广泛了,但是因为模型的计算量大并且计算复杂,所以对于深度学习系统的检测就很少。常见的检测指标有三种,这里指的是缺陷和故障检测,并不是性能检测。

  • 第一种是基于神经元覆盖率的,和常规软件工程中的覆盖测试差不多,检测数据覆盖了模型中多少神经元。默认就是数据集覆盖的神经元越多,数据集越好,模型的故障越少。所有神经元被覆盖,作为测试终止的条件。除此之外,基于NC的还有很多衍生的指标,比如说ANC,就是单纯针对某一个测试数据而言,在检测过程中,激活了哪些在训练集中没有激活的神经元。其他的还有KMNC等,都是基于神经元覆盖率。

  • 第二种就是Surprise Adequacy,惊讶程度,这是通过比对神经元的激活差异集衡量数据集的效果。常见的有LSA,基于高斯核密度函数处理某一层神经元的激活值构成的向量。DSA使用距离函数来处理神经元激活值的。

  • 第三种就是基于模型不确定性的指标,直白的说,就是模型对于测试样例的预测结果的不确定程度。最简单就是分类问题中的最大概率值,对应类别就是模型对于当前测试用例的分类。然后就是var指标,实在原有的模型中增加dropout层,这个和变异测试差不多,然后同一个样例 运行k次,计算各个模型预测的概率的方差。还有Varw是将前两者进行结合,以最大预测概率为权重,结合dropout方差。最后就是KL散度,这个是直接统计模型各个类别的预测概率分布和预测最坏概率分布的差异,越接近,模型的散度越低。KL散度是衡量两个分布之间的差异程度的。

  • 这是目前已经有的深度学习检测指标,目前很多研究都是使用这些指标去生成对抗数据,来扩充数据集。先有研究去使用这些指标去帮助选择数据进行标注,减少人工的。而且这些指标和模型缺陷相关性是未知的。
    这部分应该说一下目前研究的缺点在哪里?为什么需要展开我们的研究

  • 这里纯纯是水的,因为明天就讲了,没啥时间了

  • DeepXplore是基于之前的神经元覆盖率,但是主要用于生成对抗数据,而且生成的数据尽可能地覆盖足够多神经元

  • DeepTest:是也是基于神经元覆盖率的,用于自动驾驶数据生成

  • DeepMutation:是计算变异分数的,使用dropout模拟神经失活,然后分别进行样例检测。

  • Surprise Adequacy:基于惊讶程度,因为任务并不能有效展示。。吗,主要是针对对抗数据的检测。

  • 针对测试样例选的研究比较少

  • 然后我们具体定义一下这篇文章想解决的问题,假设开发者拥有很多没有标记的高质量数据,只能标记其中的K个数据,如何选择K个数据,并通过测试,发现模型最多的缺陷。具体应用,体现在两方面。

    • 第一,如果你用来测试训练模型,你选的K个数据,比起随机选的K个数据,能够发现模型更多的问题,拿分类问题来说,就是分类的错误的样本最多。
    • 第二,如果使用选出来的K个样本重复训练,模型能够在原有的基础上,快速提高精度。
  • 解决这个问题的关键就是

    • 第一个就是,如何选择样例,才能使得模型的产生更多的错误分类
    • 第二个就是,如果选择测试输入,才能在重复训练中,快速提高模型的性能
  • 这篇文章目标就是提供一个可靠有效的测试样例检测指标和流程。

  • 作者使用了三个数据集,五个模型,分别使用之前提到的三类参数,解决上述两类问题。分别是。。。。自己看ppt介绍。这几个模型已经很成熟,而且准确度很高,再次基础上在进行大幅度提高已经很难了,这里是相对的小步幅提高。对抗样本在深度学习中常用来扩充数据集,为了检测各个参数对于对抗数据的区分度和敏感程度,这里使用5种对抗生成算法,对数据进行扩充。

  • 第一部分实验就是检测各个指标在实际数据集上,选出来的测试用例效果如何。实验方法,首先计算测试集在模型处理之后的预测结果,然后转为二进制变量。然后计算各个指标对于所有测试样例的评分。最后计算各个指标对于测试集的评分和二进制变量的肯德尔相关系数。这个肯德尔相关系数是用来度量有序对象之间的单调关系强弱的相关系数。

  • 实验说明,如果这个系数越大,说明指标的大小和模型分类错误的现象的相关性越大。

  • 表2是分类错误现象和各个指标评分的肯德尔相关系数,可以看到基于不确定性指标KL散度、Var,Varw和MaxP,以及基于惊讶程度的LSA,DSA评分都比较高,是属于中等相关,而基于神经元激活占比的指标,相关性都比较差,说明神经元的激活占比,和分类错误现象相关性并不大,并不能用来指导测试数据的选择。

  • 第二部分的实验,是针对对抗数据的指标检测。正常来说,在数据集有限的情况下,大部分都会使用对抗数据去增强数据集,增强样本就是在原始的数据集上增加扰动,形成新的数据集,这里为了检测各个指标对于对抗数据的识别能力,这里专门测试各个指标对于在原始的数据集下,增加了新的对抗数据集之后的与错分类现象的相关性。

  • 本文分别使用五种对抗生成算法,生成五个不同的数据集,每一个数据集都混合了原始的数据集,然后在计算五个数据对应不同指标评分和错误分类的肯德尔相关系数,来衡量各个指标的在对抗数据集下的故障检测能力,降至绘制成热力图。

  • 这个是实验结果,原图中总共有5个数据集,这里挑选了FGSM和CW两个算法生成的对抗数据进行展示,颜色越淡,相关性越强,说明指标越错误分类的相关性越强。可以看到,所有的指标相较于单纯的真实数据,相关性都有增加,其中MaxP的相关性最强,其次就是Varw。基于NC的指标,相关性仍旧很差。

  • 上述实验仅仅是验证了真实数据和对抗数据的混合,本书有附加了一部分实验,测试所有指标在对抗数据集上的敏感程度。从原始数据集中选出子集,然后迭代使用对抗生成算法,生成对抗数据,迭代的次数越多,生成的对抗样本噪声就越多,分类错误的概率越大。如果指标对着迭代次数的变化,是单调的,说明指标发现的数据有效性越强。所以这里使用spearman相关系数,来度量这两个连续变量的单调关系的强弱,并将结果化成对应的箱线图。

  • 实验结果如下。左边是使用CW生成算法进行迭代的实验结果,右边是使用FGSM算法进行迭代的实验结果。箱线图中间的是分布的中位数,然后上下两边是四分位数,然后点是异常值。可以从侧面证实NC并没有分类错误现象有直接的关系,或者说先关心并不强,而基于不确定性的指标,尤其是MaxP相关性仍旧很强。

  • 除此之外,这里还对单纯地使用对抗数据重复了一下实验一。MaxP仍旧很稳定,KL和Var等是受到了对抗数据的影响,相关性有所下降。

  • 第三部分实验主要是针对问题二,选择能够让模型快速提高的测试数据。使用各个指标迭代选数据集,扩充训练集,重复训练,查看模型的改练效果。具体流程如下。自己看着图片讲。。。。

  • 实验结果如下,总共是八张图,这里就放了四张图,虚线是基于NC的指标,进行选择的样本的训练精度,然后实现是基于不确定度和SA的,可以看到,根据指标选出的数据集,确实能够快速提高模型的训练的准确度。

  • 最后做一个总结,就是基于不确定性的指标,确实能够选择出模型会分类错误的,信息量跟高的测试数据。本文的主要贡献一下三部分。

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

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

相关文章

C++与Qt深度融合:高效设计多线程应用框架

C与Qt深度融合&#xff1a;高效设计多线程应用框架 1. C与Qt线程的混合使用1.1 C线程与Qt线程的基本概念1.2 线程间的相互依赖关系1.3 设计合理的代码框架 二、深入理解C和Qt线程模型2.1 C线程模型2.2 Qt线程模型2.3 C和Qt线程模型的比较 三、C和Qt线程间的互操作性3.1 std::th…

chatgpt赋能python:Python如何获取微信聊天记录

Python如何获取微信聊天记录 作为世界上最受欢迎的即时通讯工具之一&#xff0c;微信被大量用户使用。然而&#xff0c;微信聊天记录的备份和管理是一个重要的问题&#xff0c;特别是对于那些需要在工作和个人生活中快速查找重要信息的人来说。 幸运的是&#xff0c;Python编…

Cloud篇——GateWay 网关

1、GateWay是什么 官网讲解&#xff1a; SpringCloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;基于 Spring 5.0Spring Boot 2.0 和 Project Reactor 等技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 SpringCloud Gate…

READ-自动驾驶大场景神经渲染

这是一个针对自动驾驶场景的神经渲染方案&#xff0c;提出了一种大规模神经渲染方法来合成自动驾驶场景&#xff08;READ&#xff09;&#xff0c;这使得通过各种采样方案在PC上合成大规模驾驶场景成为可能。 疑问&#xff1a;文中提到基于nerf的方法和神经渲染方法&#xff0…

kali 2023.2安装、换源、更新、SSH

kali2023版本已经更新了&#xff0c;为了体验新版&#xff0c;下载试用了一下。记录初始的安装过程&#xff0c;以备复习用&#xff0c;不足之处欢迎批评指正。 一、下载 1、官网下载&#xff0c;地址&#xff1a;https://www.kali.org/&#xff0c;因为我准备在VM虚拟机中使用…

chatgpt赋能python:Python如何抓取数据

Python如何抓取数据 介绍 Python是一种功能强大的编程语言&#xff0c;它被广泛使用于网络抓取和数据分析。无论您是想要从网站上抓取数据&#xff0c;还是使用API抓取数据&#xff0c;Python都是一种非常适合的工具。在本文中&#xff0c;我们将介绍Python如何抓取数据&…

WINDOWS权限维持

Meterpreter权限维持 meterpreter中的权限维持技术有两种&#xff1a; persistence&#xff08;注册表后门&#xff09;metsvc的后门&#xff08;服务后门&#xff09; 1、注册表后门 windows/local/persistence 这个方法是执行vbs脚本&#xff0c;这里很容易被杀软拦截&a…

Android 12.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能

1.前言 在android12.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加 旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度, 旋转270度针对不同分辨率的无重力感应的大屏设备的屏幕旋转功能的实现, 接下来就来分析…

MySQL数据库 12:约束

约束&#xff1a; 在MySQL中&#xff0c;约束是一种限制数据表中列值的规定。保证数据库中的数据正确&#xff0c;有效性和完整性。MySQL中的约束有以下几种&#xff1a; 1. 主键约束&#xff08;Primary Key Constraint&#xff09;&#xff1a;主键是用于唯一标识表中每行记…

浅谈Servlet、HTTP

一、Servlet Servlet 是Java Web 开发的规范。任何一个mvc的框架都是servlet发展来的。SpringMVC使用DispatcherServlet拦截所有API请求&#xff0c;自定义注解进行URL匹配。 Servlet层次结构 Setvlet生命周期 1、工作流程 1.Web Client 向Servlet容器&#xff08;Tomcat&…

Java 实现更新顺序表中的指定元素

一、思路 1.定义一个 pos 变量为要更新的位置&#xff0c;定义一个 value 变量为更新后的数值. 2.顺序表不能是空的&#xff0c;就肯定不可以更新元素. 3.pos位置要合法&#xff0c;要保证 pos 位置是处在顺序表范围内的. 4.更新功能不需要考虑扩容&#xff0c;因为不涉及到元素…

传统制作 VS AI制作,如何一键制作PPT ?

教你如何快速的生成一个可用的 PPT&#xff0c;以及现在比较主流的 ChatGPT PPT 衍生工具推荐。 一、原理 结合AI生成 PPT 的原理其实非常简单&#xff0c; 现有的一些 PPT 软件或者开源工具会提供一种文本格式&#xff0c;我们只需要给出定固定的格式&#xff0c;把内容输入…

分享几个实用的C站AI模型平替网站

分享几个实用的C站AI模型平替网站 部分用户可能没有mofa工具访问Civitai ( C站)下载AI模型&#xff0c;所以给大家分享几款国内版AI模型素材库&#xff0c;无障碍访问下载Stable diffusion模型。 1、LiblibAI 访问速度快&#xff0c;作品墙、有提示词参考&#xff0c;无需登录…

SciencePub学术 | 智能交通类重点SCIEI征稿中

SciencePub学术刊源推荐: 智能交通类SCI&EI征稿中&#xff01;进展顺利&#xff0c;录用率高&#xff0c;连续十年IF稳定上升。信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 【期刊简介】IF&#xff1a;4.0-4.5↑&#xff0c; JCR 2区&#xff0c;…

剪映自动打关键帧

牙叔教程 简单易懂 这是给单张图片打关键帧的教程, 给图片打关键帧有四个步骤 鼠标点选图片打起始帧跳转到图片末尾打结束帧 打帧是一件很费手的事情, 所以我写了个自动化的代码, 专门用来打关键帧, 使用的软件是 AutoHotkey 关键帧参数的详细解释 剪映 自动打关键帧 AutoH…

chatgpt赋能python:Python中如何精确表示小数

Python中如何精确表示小数 在日常的数学计算过程中&#xff0c;小数是不可避免的。然而&#xff0c;由于计算机在存储和处理小数时的固有限制&#xff0c;会导致精度上的问题。Python作为一种通用的编程语言&#xff0c;也具有这样的限制。但是&#xff0c;在Python中&#xf…

基于层次的聚类算法

尽管基于划分的聚类算法能够实现把数据集划分成指定数量的簇&#xff0c;但是在某些情况下&#xff0c;需要把数据集划分成不同层上的簇&#xff1a;比如&#xff0c;作为一家公司的人力资源部经理&#xff0c;你可以把所有的雇员组织成较大的簇&#xff0c;如主管、经理和职员…

三维重建 医学图像的可视化 PyQt Python VTK 四视图(横断面,冠状面,矢状面,3D)

本文实现了 Python C 版本 的 四视图&#xff0c;横断面&#xff0c;冠状面&#xff0c;矢状面&#xff0c;3D 主要功能&#xff1a; 1:可以通过进度条换层 2:鼠标双击放大/缩小窗口 3:按住鼠标中键拖动图像 4:鼠标右键滑动放大/缩小图像 效果&#xff1a; 视频&#…

数据库期末复习(7.1) 查询执行

目标 了解各种查询执行的方法和记住各种查询执行的IO代价,了解支持算法最少的空间(页数多少)。 一趟归并排序的代价和改进方案笔记 数据库 查询执行(1) 多路归并_旅僧的博客-CSDN博客 创建归并段过程的IO代价是2B(R) 并且会在页面中新开辟一段run为了存放已经排好序的归并…

c语言的一些小题目(初阶),持续分享......

文章目录 1.打印杨辉三角形 2.打印X形图案 3.打印菱形 4.字符串左旋 5.倒置字符串 文章内容 1.杨辉三角形是一道非常经典的题目&#xff0c;观察下面的图片中红色与蓝色方块的关系我们不难发现&#xff0c;两个红色方框里的数字相加等于蓝色方框里的数字&#xff0c;找到…