时间:2020.07 CCF:A会
1 动机
在DLFuzz中,为了确定突变的方向,白盒方法首先选择一组内部神经元,然后计算它们的度。因此,白盒测试的最终有效性取决于第一步中对神经元的选择。我们提出了一种新的测试技术,能够在测试过程中自适应地确定神经元选择策略,而不是使用预先确定的策略。
2 PRELIMINARIES(DNN——NC——白盒测试)
本文给出了(DNN——NC——白盒测试)非常清晰的数学定义。
2.1 DNN
对于一个总共D层的DNN系统。和
分别是输入层和输出层,
...
是隐藏层。
对于神经网络中的第d层,表示如下,其中是第d层中神经元的个数。
对于第d层,它的权重矩阵可表示如下:即第(d-1)层和第d层相连。
给出Run(DNN,I)的表达式,是隐藏层中每个神经元的值。
2.2 NC/TKNC
NC:
即Cov(Run(DNN,I)是一个由二元组(d,i)组成的集合。表明高于激活阈值的神经元的位置。
TKNC:
在每一层的神经元中,取神经元值为前k个的神经元,构成k个二元组表达神经元位置。那么TKNC的覆盖率始终为常数?
2.3 白盒测试
3 本文算法
依据下式选择得分最高的m个神经元:
本文构建了29个神经元特征如下 ,作为度量每个神经元的分数的依据。表1中的这些特征分为两类:17个常量特征和12个变量特征。常量特征与变量特征的关键区别在于,在神经网络测试过程中,特征的布尔值是否发生变化;同一神经元的常量特征值不变,而变量特征值可能发生变化。
对于一个神经元n,它的特征向量是由29个布尔值组成的。再乘以参数向量p,得到该神经元的得分。其中,参数向量p就是本文的学习对象,不同的p就是不同的神经元选择策略。数学定义如下三个式子:
表示连续均匀的概率密度函数。
在第20行,与算法1不同,我们的技术在神经网络测试期间不断更新数据H,其中H中的每个元素表示策略p和策略p覆盖的标识符集合Cp的元组。在第21行,为了使用H中最新累积的信息作为学习数据,该算法通过应用Pop函数将数据H的大小保持为η3;该函数返回最近累积的η3个元素的集合H。然后,使用Learning函数(第22行)重新生成集合P。
Learning.部分:信息集中在H(策略,期中覆盖的神经元)
1.提取
H*是H’的集合,H’是一部分二元组的集合,要求这部分策略使得覆盖的神经元最多。H*中含有多个满足条件的H’。在H*中选择出包含策略数最小的H’,把最小的H’中的每个元素的策略名称的集合作为S1。
包含个元组的集合H’,H’有多个,选择激活神经元个数最多的那个H’。把这个H’中的每个元素的策略名称的集合作为S2。
S中共有 个元素:这一步背后的直觉是提取集合S,在积累的数据H中捕获核心知识。
举例子:
2.结合
we generate new strategies by combining the features of the strategies in S, where the number of strategies to generate is given as the hyper-parameter η2. This step has a
genetic-algorithm flavor and repeats the next four phases until we have η2 new strategies.
step1:从S中随机选择2个策略
step2: 混合两种选择策略,我们生成了一个新的策略p ',一个参数向量。p '的第i个分量是随机从两个向量的第i个分量中选取的。
step3:向策略p '中添加微小噪声服从正态分布,目的是在不过多改变新策略的情况下,探索可能的策略空间。
step4:最后,剪切新策略p ',使其满足区间。
3.说明
随着整个过程(算法2)的进行,我们的技术能够基于积累的数据H生成有效的神经元选择策略,从而实现高覆盖率。