软件测试论文读后报告,论文题目:Black-Box Testing of Deep Neural Networks through Test Case Diversity

论文题目:Black-Box Testing of Deep Neural Networks through Test Case Diversity(基于测试用例多样性的深度神经网络黑盒测试)
论文地址:https://ieeexplore.ieee.org/document/10041782
发表时间:TSE 2023年5月

一、简介

1.1研究背景

本文研究的是深度神经网络(DNNs)的测试方法。与传统软件一样,深度神经网络也需要进行有效的测试,以确保其可靠性和安全性。传统的白盒测试方法,因为它们需要访问DNNs内部结构,但深度神经网络结构和执行过程通常是未知的,因此白盒测试方法,可能对于深度神经网络测试并不适用。
如图1所示,当传统软件测试时,软件的内部结构是清晰可见的,当测试者给一个测试用例,我们可以清晰的推断出,这个测试用例的执行路径。相比而言,如图二所示,将这个测试用例放入一个已经训练好的深度神经网络里,我们是很难弄清楚这个测试用例的执行路径的。换句话来讲,就是我们很难弄清参与这个测试用例计算的神经元的个数和相应的权重。因此,传统的白盒测试,例如条件覆盖,语句覆盖,可能对于这个深度神经网络的测试可能并不适用。
图1   传统软件 图2 深度神经网络

1.2主要贡献

本文贡献主要有三个方面:
①本文提出一种黑盒多样性指标,即使用输入集几何多样性来指导深度神经网络的测试。
②引入并验证了一种基于聚类的方法来估计DNN(深度神经网络)中的故障(错误)。
③探究了DNN模型中的多样性和覆盖率两者与故障之间的相关性。
接下来会详细解释几何多样性和基于聚类的估计深度神经网络中故障的方法。最后探究了深度神经网络测试中的样性和覆盖率两者与故障之间的相关性。
图3 几何多样性
如图3所示,这个图展示的是两个图片的几何多样性。上图中的两个平行四边形的两条边向量,分别对应各自的上下两张图。这张图左面的上下两个车,相似度比较高,几何多样性比较小,所以左面的两个向量之间的夹角就比较小,距离比较近。右面的上下两张图片,一张是车,一张是路牌,两者的差异性比较大,几何多样性比较大,所以两张图片对应的两个向量之间的夹角比较大,距离比较远。

二、输入集的多样性指标

2.1 三种多样性指标简介

本文选择了三种多样性指标:几何多样性(GD),归一化压缩距离(STD),和标准差(NCD),来评估输入集的多样性大小。本文输入集数据类型是RGB图像,并没有使用语音和文本类型数据。
计算输入集各种多样性的统一过程:
1.使用VGG16提取输入集特征矩阵,并进行归一化处理。
2.根据第一步提取到的特征矩阵和相应的计算公式,计算三种多样性指标。

2.2 三种多样性指标的详细计算过程

我们的计算过程主要分为两步:第一步提取特征矩阵,第二步根据不同公式计算相应的多样性指标。

2.2.1 第一步:提取特征矩阵

我们使用VGG-16这个网络提取图像的特征。特征是VGG-16模型最后一个卷积层之后的层上的激活值。得到特征矩阵Vsn×m后,进行归一化。
V s j ′ ( i ) = V s j ( u ~ ) − m i n ( V s j ) m a x ( V s j ) − m i n ( V s j ) Vs_j^{\prime}(i)=\frac{Vs_j(\tilde{u})-min(Vs_j)}{max(Vs_j)-min(Vs_j)} Vsj(i)=max(Vsj)min(Vsj)Vsj(u~)min(Vsj)
上述公式是归一化公式,即最大最小归一化,并且对每一列进行归一化。
其中:
(1)特征矩阵的每一行对应测试集中某张图像的所有特征向量。
(2)特征矩阵的每一列对应这个测试集的一种特征。
例:一个输入集有200张图片,每张图片我们提取1000种特征。
那么我们最后就能得到一个20*1000大小的特征矩阵。每一行代表一张图片的所有特征,每一列代表这个数据集的一种特征。

2.2.2第二步:计算多样性指标

通过第一步得到输入集的特征矩阵Vsn×m后:
1:几何多样性(GD):
G ( S ) = d e t ( V s ∗ V s T ) G(S)=det(Vs*Vs^{T}) G(S)=det(VsVsT)
如上述公式所示,几何多样性是特征矩阵Vs和特征矩阵的转置相乘后取行列式。det(矩阵An×n)是求矩阵A的行列式。
2:归一化压缩距离(STD):
N C D 1 ( S ) = C ( S ) − m i n s ∈ S { C ( s ) } m a x s ∈ S { C ( S \ { s } ) } N C D ( S ) = m a x { N C D 1 ( S ) , m a x Y ⊂ S { N C D ( Y ) } } \begin{aligned}NCD_1(S)&=\frac{C(S)-min_{s\in S}\{C(s)\}}{max_{s\in S}\{C(S\backslash\{s\})\}}\\NCD(S)&=max\left\{NCD_1(S),max_{Y\subset S}\{NCD(Y)\}\right\}\end{aligned} NCD1(S)NCD(S)=maxsS{C(S\{s})}C(S)minsS{C(s)}=max{NCD1(S),maxYS{NCD(Y)}}
如上述公式所示,C(S),是求几何S中经过压缩算法压缩后的压缩距离。
3:标准差(NCD):
S T D ( S ) = ∥ ( ∑ i = 1 n V s i , j − μ j n , 1 ≤ j ≤ m ) ∥ STD(S)=\left\|\left(\sqrt{\sum_{i=1}^n\frac{Vs_{i,j}-\mu_j}{n}},1\leq j\leq m\right)\right\| STD(S)= (i=1nnVsi,jμj ,1jm)
如上述公式所示,是对特征矩阵的每一列的所有元素分别减去这一列的均值后求均值,然后对这个向量求二范数。

三、神经网络的故障评估方法

3.1方法简介

我们依靠聚类方法对类似的错误预测输入进行分组,这些错误输入呈现出近似的特征。我们通过这种聚类近似地估计DNN中检测到的故障的数量。因为许多错误预测的测试输入是冗余的,并且是由相同的原因造成的。即认为同一簇中的输入往往由于相同的故障而被错误预测。

图4 聚类展示图
如图4所示,图中黑色的的点是预测正确的点,红色的点是预测错误的点。图中左上角的四个红色的点,相距比较近,我们就认为他们是由一种共同的原因导致的错误。以此类推,图中错误F2中的两个红色的点,我们也是认为由于相同的原因导致的。在一个圈内的红色的点,我们认为他们是同一种错误,认为是由同一种原因造成的。这些圈就是由聚类算法得到的。

3.2详细实现过程

使用聚类方法估计DNN故障主要包括五步:错误预测特征提取,降维,聚类,评估聚类效果,输出估计结果。
图5 聚类步骤图
如图5所示,从左到右依次为错误预测特征提取,降维,聚类,评估聚类效果,输出估计结果。
第一步:错误预测的特征提取
首先,我们将训练集和测试集放入到我们已经预训练好的深度神经网络中。之后我们会得到很多错误的预测。我们依靠VGG16提取错误预测对应的输入图片的特征,并构建相应的错误特征矩阵,并在特征中添加了两个额外的特征,即每个错误分类的实际和错误预测的类别(标签)。
第二步:降维
通常,高维空间中的低密度数据使得聚类算法很难找到分离不同聚类的连续边界。因此,采用降维技术可以帮助聚类算法使输入及其相关聚类更容易区分。 我们使用UMAP这个算法对上一步得到的特征矩阵进行降维。
第三步:聚类
在降维后,我们应用HDBSCAN聚类算法对DNN模型中相似且被认为是由相同原因(故障)导致的错误预测输入进行分组。在此节中我们使用HDBSCAN这个算法进行聚类。
第四步:评估聚类效果
在这一步中,我们使用三种指标来进行评估聚类效果,然后与任何聚类算法一样,需要对超参数需要微调以获得最佳聚类结果。
最后输入聚类结果,产生集中聚类,即有几种错误。
图6 聚类结果图
如图6所示,最后一列是最后生成的聚类数。如图6所示,MNIST数据集在LeNet-5这个网络下产生了85个聚类,即有85种错误。MNIST数据集在LeNet-1这个网络下产生了137个聚类,即有137种错误。

四、实验评估

数据集和深度模型

我们使用了四个常见的图像识别数据集,Cifar-10、MNIST、Fashion-MNIST和SVHN。我们将这些数据集与五个深度神经网络模型一起使用:ConvNet、LeNet-1、LeNet-4、LeNet-5和ResNet20。

实验一:多样性指标评价实验

实验目的:
评估所选的三个多样性指标几何多样性(GD),归一化压缩距离(STD),和标准差(NCD)对输入集多样性的衡量能力。我们研究了不同的多样性分数在以可控的方式改变输入集所涵盖的图像类别数量时是如何变化的。通俗理解就是,对比一下这三个多样性指标,看哪一种指标可以更好的体现输入集
实验数据集
我们从Cifar-10和MNIST中分别选择了20个大小为100的输入集进行实验。
实验结论
在评估数据集的多样性方面,几何多样性(GD)优于归一化压缩距离(STD),和标准差(NCD)。
图7 实验一结果图
如图7所示,上面三张图是在Cifar-10数据集中,三种多样性指标GD,STD,NCD的效果图。可以明显的看到,随着横坐标增大即种类数变多,几何多样性(GD)也随之变大。然而,STD在种类数由9种变为10种时,STD的值变小了(正常应该是变大的)。而NCD指标随着种类数增多,呈波浪形变化。因此,在评估数据集的多样性方面,几何多样性(GD)优于归一化压缩距离(STD),和标准差(NCD)。

实验二:多样性与故障的相关性实验

实验目的
我们的目的是研究数据集的多样性与故障之间的相关性,研究更高的多样性是否会增加测试集的故障检测能力。
实验数据集和网络
我们从Cifar-10(12-layer ConvNet)和MNIST(LeNet-5)中分别选择了大小为{100, 200, 300, 400, 1000}的输入集进行实验。对于每个样本,我们计算了相应的多样性分数(GD和STD)和故障数量(即错误预测输入的覆盖簇的数量)。最后我们计算了多样性评分与故障数量之间的Spearman相关性和p-value。
实验结论
在DNN中几何多样性(GD)与故障呈正相关且有统计学意义。与STD相比,GD与故障更具有相关性,因此,由实验一和实验二可得,几何多样性(GD)应该作为多样性指标来指导DNN模型的测试。
图8 各种参数与故障之间相关性图
如图8所示,前两列展示的是实验数据集和网络。第三列展示的是几何多样性和故障之间的相关性,第四列展示的是归一化压缩距离和故障之间的相关性。由最后一行可以看出,GD与故障相关性最好。

实验三:覆盖率与故障的相关性实验

实验目的
我们的目的是研究覆盖率与故障之间的相关性,研究更高的覆盖率是否会增加测试集的故障检测能力。
实验数据集和网络
与实验二相同。
实验结论
基于我们实验中使用的配置和数据集,覆盖率和故障之间的显著正相关的很少。覆盖率不能良好地度量故障。
实验结果如图8所示,大家可以看最后一行,分数值越大,相关性越好。由最后一行可以看出,GD与故障相关性最好。覆盖率不能良好地度量故障。

实验四:几何多样性和覆盖率计算时间对比实验

实验目的
在此实验中,我们对比了几何多样性和相关覆盖率指标的计算时间。
图9 时间对比图
实验结论
如图9所示,我们发现GD在计算时间上优于所有覆盖率指标。例如,计算GD要比计算LSC和DSC快3到5倍。

五、总结

第一:在本文中,我们研究了输入多样性指标在指导深度神经网络模型测试中的有效性,发现几何多样性效果是最好的。
第二:此外,我们比较了为DNN定义的白盒覆盖标准和黑盒输入集多样性指标与故障之间的关系,发现几何多样性和故障相关性最好。
第三,我们找到了一种估计深度神经网络故障的方法,即通过聚类的方法估计故障。通过这种方法,我们可以更好的估计深度神经网络中的错误种类。

六、方法局限性

第一:我们的方法基于图像数据,因此与基于语音,文本的数据相比,我们的方法有效性需要进一步验证。
第二:基于我们的实验,我们发现最好的多样性度量是几何多样性,仍有改进的空间例如,研究其他多样性度量和特征提取模型。
第三,我们的方法中有很多超参数的设置,因此根据不同的超参数的设置,其能力有限,可能不是最优解。如聚类中的聚类算法和降维算法,他们需要很多超参数的设置。

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值