Advertisement

论文阅读:DeepKernel: 2D-kernels clustering based mutant reduction for cost-effectivedeep learning model

阅读量:

论文地址:DeepKernel: 2D-kernels clustering based mutant reduction for cost-effective deep learning model testing - ScienceDirect

代码地址:https://github.com/Alan-predator/DeepKernel.


摘要

突变测试是评估深度学习(DL)测试数据集质量的一种实用方法。然而,在测试过程中产生的大量突变体导致了显著的测试开销。特征聚类是一种传统方法,可以在保持突变体分布多样性的同时减少突变体的数量。分布多样性被认为对保持测试评估能力的有效性至关重要。深度学习模型依赖于卷积核来提取数据特征并构建逻辑。因此,使用卷积核来衡量深度学习突变体之间的差异是一种可行的方法。本文提出了一种基于卷积核特征聚类的减少方法——DeepKernel。具体而言,它将 2D 卷积核稀疏性和 2D 卷积核熵作为卷积核特征。通过聚类这些特征,构建一个具有与原始集合相同测试评估能力的子集 。对四个经典深度学习模型的实证研究表明:(1)突变体的分布多样性与其测试评估能力之间存在显著相关性,斯皮尔曼相关系数为 0.9689;(2)减少后的集合保持与原始集合相似的分布多样性和测试有效性;(3)在保持突变测试有效性的情况下,我们的方法减少了 63.47% 的突变体,并优于随机选择方法。

引言

突变测试是一种面向缺陷的软件测试方法,它通过提供“突变充分性评分”作为测试标准来衡量软件测试的充分性(Papadakis等,2019)。它在提高测试数据集质量和早期发现软件缺陷方面发挥着至关重要的作用。为了实现对现实场景中各种缺陷的无偏模拟,突变测试通常会生成并执行大量突变体,从而显著增加测试成本(Pizzoleto等,2019)。Ma等(2018b)将突变测试引入深度学习(DL)系统测试。他们提出了一个深度学习系统的突变测试框架,并设计了16个突变操作符,涵盖数据层、程序层和模型层。相关研究的进展,如故障检测(Ojdanic等,2023)、自动驾驶汽车的最优预言生成(Jahangirova等,2021)、深度神经网络源代码嵌入的对抗性代码片段生成(Pour等,2021)以及测试输入的优先级排序(Wang等,2021),证明了深度学习突变测试的有效性和实用性。然而,和传统突变测试一样,深度学习突变测试也存在显著的开销(Zhang等,2016)。例如,Shen等在对四个小型模型(层数少于十层)进行突变测试时,分别生成了1640、1650和1660个突变体(Shen等,2021)。显然,必须优化深度学习突变测试,以突破这一瓶颈。

基于特征聚类的突变体减少是测试优化的常见方法 (Hussain,2008;Ji等,2009)。Wei等提出了基于谱聚类的突变体减少方法(Wei等,2021)。该方法根据测试数据杀死突变体的能力将突变体分为不同的组。同一组中的突变体可以通过具有相似或相同输入特征的测试数据来杀死。Ma等提出了一种方法,通过聚类在突变体执行过程中获得相同中间结果的突变体(Ma和Kim,2016)。这些方法根据测试数据的特征将突变体分类为不同的组,同一组中的突变体具有相似性,而组间的突变体是互不相交的(Strug和Strug,2013)。通过从每组中选择突变体形成一个减少集,该方法确保减少集保持与原始集相同的互不相交特性,称为分布多样性。分布多样性在保持减少集与原始集相同的测试评估能力方面起着至关重要的作用(Strug和Strug,2013)。深度学习突变体也可以通过聚类展示分布多样性。

对于深度学习模型,卷积核从训练数据中学习特征,调整其参数并构建软件逻辑(Abadi等,2016)。训练后,卷积层可以从测试数据中提取特征(Zhang和Zhu,2018)。以图像分类模型为例,接近输入层的卷积层提取低级特征,如颜色和纹理,而接近输出层的卷积层提取更抽象的特征,如局部特征和类别(Yang等,2021)。通过突变改变模型层参数生成的深度学习突变体(Riccio等,2021),本质上是完整但不完美的深度学习模型,具有固有的缺陷。不同的突变缺陷导致其提取数据特征的能力差异。卷积层的卷积核反映了模型的数据特征提取能力(Liu等,2022)。因此, 利用卷积核特征来衡量深度学习突变体之间的差异是一种可行的方法。

在数据特征提取过程中,卷积核的特征主要考虑两个方面:2D卷积核稀疏性和2D卷积核熵(Li等,2019)。卷积操作包括两个主要步骤:2D卷积核卷积和通道融合(Son等,2018)。2D卷积核卷积的目的是从输入特征数据中提取特征,而通道融合将2D卷积的中间结果结合起来,得到输出特征数据。Li等提出了两个指标:2D卷积核稀疏性和2D卷积核熵,用于有效量化特征提取中的输入数据稀疏性和数据丰富度(Li等,2019)。因此,这些指标可以帮助衡量深度学习突变体之间的差异。

随后,通过应用特征聚类,我们期望构建一个减少集,其分布多样性与原始集相等。换句话说,减少集与原始集在测试有效性方面是等效的。

在本文中,我们提出了DeepKernel,一种利用2D卷积核聚类进行深度学习(DL)突变体减少的方法。具体而言,我们通过对突变主题(包括训练数据集、源代码和模型)进行突变和训练操作,获得一组具有不同卷积核的突变体。我们的方法首先基于模型卷积核的差异静态地提取突变体的卷积核特征。然后,我们采用基于密度的层次聚类将突变体分配到不同的组中,其中离群点形成一个少数空间。最后,应用质心选择算法从每个组中选择代表性的突变体,同时从少数空间中选择所有突变体,以获得较大的分布多样性。这两种选择的结合形成了减少集。实验在两个广泛使用的标准数据集和四个经典的深度学习模型上进行。结果显示:

  • 突变体的分布多样性与其测试数据集评估能力之间的Spearman相关系数为0.9689,且p值小于0.001。
  • DeepKernel生成的减少集保持与原始集相似的分布多样性和测试有效性。
  • 在保持突变测试有效性的情况下,DeepKernel减少了63.47%的突变体,并且优于随机选择方法。

本文的贡献如下:

  • 我们提出了首个基于特征聚类的深度学习突变体减少方法,称为DeepKernel。具体而言,我们引入2D卷积核特征来衡量深度学习突变体之间的差异,且减少集的分布多样性与原始集大致相同。
  • 我们展示了该方法的有效性。实验结果表明,DeepKernel生成的减少集在测试数据集评估能力上与原始集等效。也就是说,减少集与原始集同样有效。

方法

为了提高深度学习(DL)突变测试的效率并减少测试开销,我们的目标是找到一个子集,其测试数据集评估能力与原始突变体大致相同,可以作为测试的代表子集(Strug 和 Strug, 2013)。

图4展示了DeepKernel的概述,这是基于2D卷积核聚类的深度学习突变体减少方法。接下来,我们首先介绍静态提取单个突变体特征(2D卷积核稀疏性和2D卷积核熵)的过程,并结合卷积操作。然后,我们使用HDBSCAN聚类算法(Hao等,2023)将由特征向量表示的DL突变体MS聚类为不同的组Cluster和少数空间MSpace(聚类过程中的离群点)。之后,我们利用k-means质心选择算法(Mahmud等,2012)从每个组Cluster中选择代表性的突变体,并将其添加到减少集𝑀𝑆𝑠𝑢𝑏中。此外,为了确保突变体的分布多样性(Li等,2019),我们将少数空间MSpace中的所有突变体也纳入减少集𝑀𝑆𝑠𝑢𝑏中(第3.3节)。最后,总结了DeepKernel的使用方法。


这里的deepkernel 和我理解的不太一致。。

全部评论 (0)

还没有任何评论哟~