论文《Effective White-Box Testing of Deep Neural Networks with Adaptive Neuron-Selection Strategy》阅读笔记。
摘要
本文提出一种用于DNN的新白盒测试技术ADAPT,该技术使用了一种新方法来改进现有的神经元选择策略,通过不断适应正在进行的测试过程来有效地进行神经元选择。对现实世界网络模型和数据集的实验表明,就覆盖率和发现的对抗性输入而言,ADAPT比现有的测试技术更有效。
背景
传统软件测试的覆盖率指标(如分支覆盖率、代码覆盖率),不足以区分不同深度状态的神经网络。因此,现有白盒测试方法利用了神经网络的内部结构以实现更高覆盖率:
-
选择内部神经元;
-
计算所选神经元相对于输入的输出梯度;
-
通过在增加输出值的方向上将梯度添加到原始测试用例来生成新的测试用例。
其中,第一步的神经元选择策略非常重要。目前,已经提出了许多启发式神经元选择策略,以在有限的时间预算内最大化覆盖范围。例如,DeepXplore提出的神经元覆盖率NC,其使用一种随机选择未激活神经元的策略;DLFuzz提出了四种不同的神经元选择策略,用于优先考虑经常和很少覆盖的神经元、具有最高权重的神经元和接近激活阈值的神经元;以及DeepGauge提出的Top-k神经元覆盖等。
但是,现有白盒技术使用一组选定的内部神经元的梯度,其选择是通过预先确定的策略完成的,即整个过程使用固定的神经元选择策略是现有白盒方法的主要限制。因此,本文考虑在测试过程中自适应地确定神经元选择策略——提出一种参数化神经元选择策略,并提供了一种在线学习算法来调整其参数。
参数化神经元选择策略
首先将神经元选择策略进行参数化,方法是将一个神经元选择策略表示为一个实数向量,该向量对定义的特征进行加权。因此,评判选择哪种神经元选择策略就转化为判断该实数向量是否最优。神经元选择是通过将神经元表示为特征向量,对特征向量进行评分来完成的。
本文为神经元设计了29个原子特征,分为17个常量特征(在测试过程中不会改变)和12个变量特征(随着测试进行而不断变化)。例如:特征1是位于前25%层的神经元;特征6是池化层中的神经元;特征18用于检查是否存在生成对抗输入的关键神经元;特征12和19分别来自DLFuzz和DeepXplore中使用的策略。这 29 个特征用布尔向量表示神经元的不同状态,神经元选择策略就将用29维实数向量表示。
首先,使用每个神经元的特征向量和选择策略的点积作为神经元的评分,然后选择前 k 个神经元。基于上述神经元的特征,本文设计了一个在线学习算法,能在测试过程中自适应地寻找神经元选择策略。
在线学习算法
在线学习过程分为两大阶段:测试阶段和学习阶段;学习阶段又分为两个阶段:提取阶段和合并阶段。
-
测试阶段:迭代使用由学习阶段生成的m个神经元选择策略来测试给定的深度神经网络(第一次迭代使用随机m个)。该阶段完成后,神经元选择策略和每个策略的覆盖神经元集被传递到提取阶段。
-
提取阶段:从测试阶段的结果中提取k个更优的神经元选择策略。该过程使用两个标准:① 选择最多k个神经元选择策略,共同实现最高覆盖率(S1);② 若①中提取出的策略数量S1小于k,则额外再选择出k-|S1|个仅自身覆盖率高的策略。
-
合并阶段:合并提取出的神经元选择策略来生成m个新的策略。该过程分为四步:① 随机抽取2个策略;② 通过混合采样这两个策略,生成新策略;③ 添加小噪声并进行归一化处理;④ 按此步骤生成m个新策略。
以上步骤可以帮助找到更优的神经元选择策略。