[论文解读] DeepCT:Tomographic Combinatorial Testing for Deep Learning Systems

DeepCT: Tomographic Combinatorial Testing for Deep Learning Systems

简介


论文标题

  • DeepCT: Tomographic Combinatorial Testing for Deep Learning Systems
  • DeepCT:深度学习系统的层析组合测试
  • 2019

贡献

  • 提出了一套专门针对DL系统的组合测试准则
  • 我们还提出了一种通用的CT覆盖引导的DL系统测试生成技术。·
  • 我们对DeepCT进行了研究,以证明CT在DL测试中的潜在用处。

论文提出了几个层覆盖标准,并给出了一基于该标准的测试生成算法,并证明该算法比随机选择用例生成更能找到对抗用例

摘要

深度学习(DL)在过去的十年中取得了显著的进步,并在许多工业领域得到了广泛的应用。然而,DL系统的鲁棒性近年来受到极大的关注,输入的微小扰动可能会导致DL故障。当DL系统部署到安全关键型应用程序时,这些健壮性问题可能会潜在地导致严重后果,并阻碍DL系统的实际部署。测试技术能够在早期阶段对DL系统进行健壮性评估和易受攻击问题的检测。测试DL系统的主要挑战在于其输入的高维性和巨大的内部潜在特征空间,这使得测试每个状态几乎是不可能的。对于传统软件来说,组合测试(CT)是一种平衡测试探索和缺陷检测能力的有效测试技术。在本文中,我们对下行系统中的CT进行了探索性的研究。我们提出了一套专门针对DL系统的组合测试准则,以及一种CT覆盖制导的测试生成技术。我们的评估表明,CT为测试DL系统提供了一条很有前途的途径。

层析组合的背景和动机

传统CT

CT : Combinatorial testing 组合测试

了在获得期望的CT覆盖率的同时最小化测试集大小,CT通常将测试生成问题转化为约束求解问题。因此,对CT[10]的研究经历了一次向约束CT的转变,它被分解为元启发式方法[11]、基于SAT的方法[12]和贪婪方法[13]。

DL CT

为了更好地推动这项工作,我们从以下两个角度讨论了本文的意图:

PER1:为什么是“层析 ‘tomographic’,”,即CT侧重于每层内更密集的测试?

PER2:为什么是“组合 ‘combinatorial’,”,即CT系统地检查每层内神经元之间的相互作用?

PER1:

对于CNN,一个主要的假设是数据(图像、视频、音频)是由模式组成的:本地的、固定的,最重要的是,多尺度(分层)。因此,为了测试DNN模型的稳健性,由于DNN函数在不同的尺度上具有不同的层次,因此对它进行逐层测试并像计算机层析扫描一样系统地探索其潜在特征空间是一种很好的做法。因此,我们称之为“tomographic”。

[论文解读] DeepCT:Tomographic Combinatorial Testing for Deep Learning Systems

图1:对于CNN,特征由多个卷积和汇聚层组成。DeepCT检查每一层内神经元之间的相互作用,就像计算机断层扫描一样。

PER2:

至于PER2,有几个有趣的方面需要讨论。首先,如果我们放大到DNN中的两个相邻层,所有神经元只与下一层的神经元交互(在前向通道中),而在反向传播期间,所有神经元只与上一层的神经元交互(在后向通道中)。我们可以将这种局部两层结构视为无向二分图形模型,其中该层内不会发生任何交互。这类似于在受限玻尔兹曼机器中所指的‘受限’,图2显示了使用标准卷积、两个变体(本地连接的卷积和平铺卷积)以及本质上是DNN情况的完全连接的版本的两个相邻层之间的相互作用。很明显,每一层内都没有神经相互作用。

逻辑单元之间可能存在逻辑(无形)的相互作用,其中当前层的神经元共同决定其下一层神经元的逻辑。我们想用CT捕捉和检查每一层神经元之间的这些无形的相互作用。因此,我们称之为“combinatorial.”。

[论文解读] DeepCT:Tomographic Combinatorial Testing for Deep Learning Systems

图2:相邻两层之间的相互作用,用于(A)标准卷积,(B)局部连接卷积,©平铺卷积,以及最后(D)全连通情况(DNN)。

组合测试标准

Neuron-activation configuration

我们用A(nix)01A(ni,x)∈{0,1}来表示神经元nin_{i}在给定x的**状态,其中1对应于**,而0对应于未**

对于一组神经元M={n1,n2,,nk}LiM=\left\{n_{1}, n_{2}, \ldots, n_{k}\right\} \subseteq L_{i}在第iilil_{i}中,M的神经元**配置是元组c=(b1,b2,,bk)c=\left(b_{1}, b_{2}, \dots, b_{k}\right),其中bi={0,1}.2b_{i}=\{0,1\} .^{2}。如果存在至少一个测试输入xTx∈T,使得对于所有iibi=A(ni,x)b_{i}=A\left(n_{i}, \mathbf{x}\right),其中1ik1≤i≤k,则神经元**配置c=(b1,b2,,bk)c=\left(b_{1}, b_{2}, \dots, b_{k}\right)由T覆盖。

给定一个测试集T和第i层的神经元Li,我们用Θ(tLi)Θ(t,Li)来表示Li中神经元的所有t-路组合的集合。每个元素θθ(即θΘ(tLi)θ∈Θ(t,Li)是t个神经元的集合,总共有2t2^{t}个神经元**配置。

此外,我们使用ΘFull(tLiT)ΘFull(t,Li,T)(即ΘFull(tLiT)Θ(tLi)ΘFull(t,Li,T)⊆Θ(t,Li))来表示LI的神经元的所有t向组合,其中θFullΘFull(tLiT)θFull∈ΘFull(t,Li,T)的所有神经元**构型都被T完全覆盖。对于一个t向神经元组合θΘ(tLi)θ∈Θ(t,Li),我们用C(tθT)C(t,θ,T)来表示T所覆盖的θ的神经元**构型集。

t-way combination sparse coverage

我们将t路组合稀疏覆盖定义为LiL_{i}中t路神经元组合的百分比,其中所有神经元配置都由T覆盖,
 SparseCov (t,Li,T)={θΘ(t,Li)θΘfull(t,Li,T)}Θ(t,Li) \text { SparseCov }\left(t, L_{i}, T\right)=\frac{\left|\left\{\theta \in \Theta\left(t, L_{i}\right) | \theta \in \Theta_{\text {full}}\left(t, L_{i}, T\right)\right\}\right|}{\left|\Theta\left(t, L_{i}\right)\right|}​

T元组的组合稀疏覆盖=覆盖了所有神经元配置的组合数 / 所有组合数,2路的组合数为C_n^2

例子

[论文解读] DeepCT:Tomographic Combinatorial Testing for Deep Learning Systems

Li层*有4个神经元{n1,n2,n3,n4},
2-way组合共有六种:{n1,n2},{n1,n3},{n1,n4},{n2,n3},{n2,n4},{n3,n4}
每个2-way组合有四种神经元**配置(0,0)、(0,1)、(1,0)和(1,1)
在6个双向组合中,T只覆盖了{n1,n2},{n1,n4},{n2,n3}和{n3,n4}的四种神经元**配置(只有这四个组合出现了四种神经元**配置)
则Li层的2-way组合稀疏覆盖率= 4 / 6= 66.6%

由于t-way组合稀疏覆盖不能考虑每个神经元组合内的覆盖,接下来我们引入t-way组合稠密覆盖。

t-way combination dense coverage

对于一组测试输入T和一组神经元Li,t路组合密集覆盖定义如下
 DenseCov (t,Li,T)=θΘ(t,Li)C(t,θ,T)2tΘ(t,Li) \text { DenseCov }\left(t, L_{i}, T\right)=\frac{\sum_{\theta \in \Theta\left(t, L_{i}\right)}|C(t, \theta, T)|}{2^{t}\left|\Theta\left(t, L_{i}\right)\right|}
例子

例子同上图

考虑图3中给定测试集T的LI的神经元**状态。由于LI中有六个神经元的双向组合,并且每个组合有四个神经元**配置,总共有24种**配置

测试集T可以覆盖20种配置,未覆盖的神经元**配置为{n1,n3}=(0,1),{n1,n3}=(1,0),{n2,n4}=(0,1)和{n2,n4}=(1,0),因此,T的双向组合密集覆盖率为83.3%。

稀疏就是只看完全覆盖的,稠密就是全都统计

(p, t)-completeness

对于一组神经元Li和测试输入T,(p,t)-完备性定义为这些θΘ(tLi)θ∈Θ(t,Li)的比例,其中θ的覆盖t向神经元**构型比至少为p(即C(t,θ,T)/2tp)\left.C(t, \theta, T) / 2^{t} \geq p\right))。

例子

我们再次以图3为例。在神经元的双向组合中,{n1,n2},{n1,n4},{n2,n3}和{n3,n4}的覆盖双向构型比为100%,{n1,n3}和{n2,n4}的覆盖双向构型比为50%。根据定义III.4,LI的(0.5,2)-完备性为100%,LI的(1,2)-完备性为66.6%。
就是达到100%覆盖的有4个,达到50%以上覆盖的有6个

深度学习的CT稳健性测试

d-locally-robust
x:xxdC(x)=C(x) \forall \mathbf{x}^{\prime}:\left\|\mathbf{x}^{\prime}-\mathbf{x}\right\| \leq d \Rightarrow \mathcal{C}(\mathbf{x})=\mathcal{C}\left(\mathbf{x}^{\prime}\right)​
表示局部鲁棒性,即对图片添加扰动但不会改变预测结果

测试生成算法

当前版本的DeepCT提供了一个基于LP约束求解的测试生成器,我们用它来研究CT和我们提出的标准是否对测试DNNs有用。

[论文解读] DeepCT:Tomographic Combinatorial Testing for Deep Learning Systems

实验

Random Testing

具体来说,我们为每个种子测试随机生成10000个测试,并分析是否可以检测到健壮性问题。4实验结果表明,RT已经能够检测到DNN1上的194个种子测试和DNN2上的178个种子测试的健壮性问题,总共266个独特的问题,其中106个是DNN1和DNN2上的共享问题。这与我们的直觉一致,即DNN处理不同测试输入的健壮性可能不同。DNN决策边界附近的测试输入可能更容易引发健壮性问题。我们的实验结果证实了这一观察结果,并表明作为第一次尝试,RT可以用于检测脆弱的测试输入。

DeepCT

对于1000个种子测试,我们筛选出266个测试,它们的健壮性问题已经可以通过随机测试检测到。对于剩余的734个测试,我们随机抽样50个测试,以便根据随机测试生成的相应测试,通过DeepCT进一步分析d-局部鲁棒性(其中d=0.15,并且我们使用双向定义的CT标准,也参见算法1)。DeepCT递增地生成测试,以逐层覆盖CT覆盖目标。表一总结了平均结果。

实验结果

使用上述算法去做实验,观察对抗例子的比例

[论文解读] DeepCT:Tomographic Combinatorial Testing for Deep Learning Systems

第一行的对抗样本为0个是因为只在随机选择没有找到错误的种子中去找

第8栏Tests给出了生成的测试的累计总数,

第9栏Adv显示了相应的检测到的对抗性测试比率。

这表明不同的层对通过CT检测敌意示例的贡献可能不同,并且某些层可能需要进行更密集的测试

https://blog.****.net/weixin_39329746/article/details/91994637