下载本文的PDF版本 PDF

改进深度学习系统的测试

差异测试和变异测试的结合可以产生更好的测试数据。

Harsh Deokuliar, Raghvinder S. Sangwan, Yoaukim Badr, Satish M. Srinivasan

人工智能 (AI) 和机器学习 (ML) 正在许多领域中找到应用。然而,随着它们持续的成功,也带来了重大的挑战和不确定性。这些包括:

  • 训练生产就绪的 AI 系统需要多少数据才足够,这甚至可行吗?
  • 数据是否代表了正在解决问题的完整分布?
  • 系统的结果是否透明且可解释?
  • 在 AI 系统领域中,测试是如何定义的?
  • AI 系统在安全关键环境中真的可用吗?
  • AI 系统伦理使用的边界是什么?
  •  

    本文研究了 AI 系统领域的测试,重点关注这一挑战的一个方面:即深度学习系统中测试数据的质量(ML 模型在其上进行评估的数据)。这些系统是 ML 的一个子集,是数据驱动的,至关重要的是,在训练这些系统之后,它们要在测试数据集上进行评估,该数据集是对其训练数据分布的多种表示。通常,测试数据可能没有均衡的表示,从而导致对这些模型的性能得出不正确的结论。

    使用差异测试生成测试数据以提高测试数据集中数据点的多样性;然后使用变异测试来检查测试数据的质量,以衡量其多样性。差异测试使用 DeepXplore3 完成,变异测试使用 DeepMutation2 完成。以这种方式结合差异测试和变异测试可以提高变异分数(一种测试数据质量指标),表明测试有效性和测试数据质量的总体改进。

     

    结合差异测试和变异测试

    DeepXplore 是一种差异测试技术,它使用多个模型决策边界的差异来生成测试数据。这使其能够发现 DNN(深度神经网络)模型行为中的许多错误。通过在测试数据上使用梯度上升来创建位于 DNN 模型决策边界上的数据点,它解决了联合优化函数,以提高神经元覆盖率并纠正许多错误行为。

    变异测试是一种用于测试软件系统的成熟技术,它将变异体(错误/故障)引入系统,以检查在测试系统时是否正确识别了这些变异体。DeepMutation 是深度学习系统的变异测试框架,通过一系列数据、程序和模型变异算子来实现相同的目的,这些算子用于将错误注入到 DNN 模型中。通过在测试数据集上执行这些模型,可以评估植入的缺陷在多大程度上可以被识别,这可以用来评估测试数据的质量。图 1 显示了变异测试的通用工作流程。

    Improving Testing of Deep-learning Systems

    如图所示,完整的测试数据集 T 针对深度学习系统 S 执行,只有通过 T' 的测试子集用于变异测试。S' 中的所有变异体都在 T' 上执行,当变异体 s'S' 的测试结果与 S 的测试结果不同时,s' 会被杀死;否则,s' 会存活。变异分数计算为被杀死的变异体与所有生成的变异体的比率(即,被杀死的变异体数量 / 变异体总数),这表示测试数据集的质量。分数越高,质量越好。

    变异分数评估了测试数据在目标类别多样性方面对变异模型的覆盖程度。为了提高这种覆盖率,通过使用 DeepXplore 生成额外的测试用例来扩充测试数据集 T。图 2 显示了使用差异测试和变异测试相结合的工作流程。

    Improving Testing of Deep-learning Systems

     

    实验和结果

    结合的测试方法用于在 MNIST 数据集1 上运行多个实验,该数据集包含从 0 到 9 的手写数字图像。该数据集包含 60,000 个训练样本和 10,000 个测试样本。实验在 DeepXplore 研究中使用的三个 DNN 模型上运行:

  • 模型 1。 包含两个 conv2D 层和一个 Maxpooling2D 层。Conv2D 层 1 包含四个 5*5 内核的滤波器,conv2D 层 2 包含 12 个 5*5 内核的滤波器。单个 Maxpooling2D 层包含一个 2*2 内核。之后是一个 flatten 层和一个具有 10 个单元的密集层。

  • 模型 2。 包含两个 conv2D 层和两个 Maxpooling2D 层。Conv2D 层 1 包含六个 5*5 内核的滤波器,conv2D 层 2 包含 16 个 5*5 内核的滤波器。Maxpooling2D 层包含一个 2*2 内核。之后是一个 flatten 层和两个分别具有 84 个和 10 个单元的密集层。

  • 模型 3。 包含与模型 2 相同的结构,但具有三个分别具有 120、84 和 10 个单元的密集层。

     

    模型参数总结在表 1 中。

    Improving Testing of Deep-learning Systems

    实验在训练和测试数据的子集上迭代运行:5,000 张图像用作训练数据,模型在 1,000 张测试数据图像上进行评估。使用 13 个变异算子在源数据级别以及模型级别创建变异模型。这些变异算子总结在表 2 中。

    Improving Testing of Deep-learning Systems

    变异模型与原始模型在测试数据集上的准确率之间的阈值为 20% 或更低。此阈值确定是否使用变异模型来量化测试数据的质量。

    这些实验导致每个模型总共进行了 12x10 = 120 次迭代,其中每次迭代的训练数据和测试数据都不同(12 个训练数据子集,每个子集包含来自 MNIST 训练数据集中的 60,000 张图像的 5,000 张图像;10 个测试数据子集,每个子集包含来自 MNIST 测试数据集中的 10,000 张图像的 1,000 张图像)。计算每次迭代的变异分数,然后对每个模型在 120 次迭代中取平均值。表 3 显示了每个模型的平均变异分数。

    Improving Testing of Deep-learning Systems

    接下来,使用差异测试生成额外的测试用例,将其添加到现有测试数据集中;然后重新运行变异测试实验,以查看生成的测试用例是否提高了变异分数,从而提高了测试数据的质量和测试有效性。为了生成测试数据集,在模型返回不同输出的现有数据点上使用了三种修改(遮挡、黑屏和光照变换)。

    对于这些实验,随机种子输入的数量为 500,梯度上升迭代的次数为 10,神经元激活阈值为 0.25,并且梯度上升仅在模型 1 上完成。此外,神经元覆盖率和差异数据超参数设置为 1(用于数据生成的联合优化问题)。

    生成测试用例后,进行了手动检查以删除无法识别的生成图像。这背后的原因是 AI 不过是对人类行为的模仿,如果人类无法识别图像,那么 AI 系统也无法识别。表 4 提供了生成的测试用例的数量。

    Improving Testing of Deep-learning Systems

    新测试用例进一步分为三类(即,每个模型的测试用例)。对于每个模型,添加了被该模型错误预测的生成的测试用例。这是因为任何生成的测试用例都可以被视为一个角落案例数据点,因为这些数据点是根据模型决策边界的差异生成的。例如,在图 3 中,序列中的第二张图像是差异测试数据点,第三张图像是测试数据点的修改。在本例中,生成的点被添加到模型 1 的测试数据中,因为它错误地将该点预测为 8 而不是 4,使其成为该模型的角落案例点。表 5 显示了每个模型生成的测试数据计数。

    Improving Testing of Deep-learning Systems

     

    Improving Testing of Deep-learning Systems

    最后,使用变异测试对所有三个模型运行实验,生成的测试用例作为测试集的一部分,以检查它们是否真正提高了平均变异分数。与之前的实验类似的迭代方法使用了 5,000 个训练数据样本,但这次模型 1、2 和 3 的测试数据集分别有 1,105、1,087 和 1,078 个样本。表 6 显示了在新测试数据样本上进行的变异测试实验结果。

    Improving Testing of Deep-learning Systems

    相同的实验在平均变异分数方面有了显著提高,这表明新的测试数据集在覆盖变异模型方面具有更高的类别多样性。更高的变异分数表明测试数据具有更好的能力来杀死变异模型的目标类别,表明测试数据和测试有效性的质量更高。

     

    结论

    这项工作研究了在结合使用变异测试和使用差异测试生成的测试用例时,对深度学习系统质量测试的影响。变异测试允许使用变异分数来评估测试数据质量,该分数检查有多少测试数据杀死了变异模型的目标类别。平均而言,这些实验显示变异分数提高了约 6%,表明在变异测试的测试数据集中包含来自差异测试的生成测试用例时,测试有效性和测试数据质量得到了提高。

     

    致谢

    本材料基于宾夕法尼亚州立大学 2020 年 IndustryXchange 多学科研究种子基金资助和支持的工作。

     

    参考文献

    1. LeCun, Y., Cortes, C., Burges, C. MNIST 手写数字数据库; http://yann.lecun.com/exdb/mnist/

    2. Ma, L., Zhang, F., Sun, J., Xue, M., Li, B., Juefei-Xu, F., Xie, C., Li, L., Liu, Y., Zhao, J., Wang, Y. 2018. DeepMutation:深度学习系统的变异测试。IEEE 第 29 届软件可靠性工程国际研讨会 (ISSRE); https://ieeexplore.ieee.org/document/8539073

    3. Pei, K., Cao, Y., Yang, J., Jana, S. 2017. DeepXplore:深度学习系统的自动化白盒测试。第 26 届操作系统原理研讨会论文集https://dl.acm.org/doi/10.1145/3132747.3132785

     

    Harsh Deokuliar 是宾夕法尼亚州立大学数据分析专业的理学硕士研究生。他的研究兴趣包括 AI 系统的测试和可解释性,以及使用无人机图像的计算机视觉。

    Raghvinder S. Sangwan 获得了天普大学计算机和信息科学博士学位。他是宾夕法尼亚州立大学工程项目主任和软件工程教授。他的教学和研究涉及软件密集型系统的分析、设计和开发、它们的架构,以及评估其设计和复杂性、技术债务管理和 AI 工程的自动/半自动方法。他积极为新泽西州普林斯顿的西门子公司技术部门提供咨询,并隶属于卡内基梅隆大学软件工程研究所,担任客座科学家。他是 IEEE 杰出贡献者和 高级会员。

    Youakim Badr 获得了法国里昂国立应用科学学院 (INSA-Lyon) 计算机科学博士学位。他是宾夕法尼亚州立大学大山谷分校的数据分析和人工智能教授,以及人工智能硕士课程主管。Badr 博士的研究主要集中在可信 AI 服务系统的设计和部署上。他采用全面且跨学科的方法,强调以数据为中心的 AI 分析、可信 AI 系统和可组合 AI 系统。Badr 博士发表了 140 多篇同行评审的出版物,包括三本书。此外,他还担任国家和国际研究资助项目(NSF、ANR、NSERC、Horizon Europe)的评审员。Badr 博士荣幸地成为 的终身会员,并拥有 Linux 基金会 AI 和数据 (LFAI&Data) 的学术准会员资格。

    Satish M. Srinivasan 获得了印度 Bharathidasan 大学信息技术学士学位和印度卡拉格普尔印度理工学院工业工程与管理硕士学位。他获得了内布拉斯加大学奥马哈分校信息技术博士学位。在加入宾夕法尼亚州立大学大山谷分校之前,他曾在内布拉斯加大学医学中心奥马哈分校担任博士后研究助理。他教授与数据库设计相关的课程;数据挖掘;数据收集和清理;计算机、网络和网络安全;以及业务流程管理。他的研究兴趣包括部分连接网络中的数据聚合、容错、软件工程、社交网络分析、数据挖掘、机器学习、大数据以及预测分析和生物信息学。

    版权 © 2023 归所有者/作者所有。出版权已授权给

  • acmqueue

    最初发表于 Queue 第 21 卷,第 5 期
    数字图书馆 中评论本文





    更多相关文章

    Mark Russinovich, Ahmed Salem, Santiago Zanella-Béguelin, Yonatan Zunger - 智能的代价
    LLM 容易产生幻觉、提示注入和越狱漏洞,这对它们的广泛采用和负责任的使用构成了重大但可克服的挑战。我们认为这些问题是固有的,当然在当前这一代模型中是这样,并且可能在 LLM 本身中也是如此,因此我们的方法永远不能基于消除它们;相反,我们应该应用“深度防御”策略来缓解它们,并且在构建和使用这些系统时,要假设它们有时会在这些方向上失败。


    Sonja Johnson-Yu, Sanket Shah - 你对 AI 一窍不通
    长期以来,很难确定 AI 究竟是什么。几年前,这样的讨论会演变成长达数小时的会议,绘制维恩图并尝试绘制出 AI 的不同子领域。快进到 2024 年,我们现在都确切地知道 AI 是什么。AI = ChatGPT。或者不是。


    Jim Waldo, Soline Boussard - GPT 和幻觉
    这项实验的发现支持了以下假设:基于 LLM 的 GPT 在更受欢迎且已达成普遍共识的提示上表现良好,但在有争议的主题或数据有限的主题上表现不佳。应用程序响应的可变性突显了模型依赖于其训练数据的数量和质量,这与依赖于多样化和可信贡献的众包系统类似。因此,虽然 GPT 可以作为许多日常任务的有用工具,但应谨慎解释它们对晦涩和两极分化主题的参与。


    Erik Meijer - 虚拟阴谋:将大型语言模型用作神经计算机
    我们探讨了大型语言模型 (LLM) 如何不仅可以充当数据库,还可以充当动态的、最终用户可编程的神经计算机。这种神经计算机的本机编程语言是一种受逻辑编程启发的声明性语言,它将思维链推理形式化和外部化,因为它可能发生在一个大型语言模型内部。





    © 保留所有权利。

    © . All rights reserved.