Is Neuron Coverage a Meaningful Measure for Testing Deep Neural Networks?
本文设计了一个新的多样性促进正则器来注入现有的对抗攻击算法中。然后来评估增加NC的方式生成的测试套件能否使得:
成功的检测对抗性攻击
产生自然的输入
对特定类的预测公正性
基于结果,作者给出的结论是,NC增加反而使得测试套件更无效,减少了检测到的缺陷,产生了更少的自然输入和有偏的预测结果。
这一结论可以说从根本上驳斥了现有的一系列基于神经元覆盖的方法,或者说,作者认为,基于神经元覆盖率的标准是彻底的歧途。
介绍
NC及其变体建立于代码覆盖率。通过捕获每个独立神经元的输出,进行度量,并基于此希望通过增加NC可以提高测试组件的质量,来最终指导测试生成。
为了系统的在测试生成过程中增加NC,本文开发了一种新的促进多样性的正则化器,并通过插入现有对抗攻击算法,来惩罚倾斜的分层激活权重,从而可以更好的促进多样性的神经元激活分布。
理解为:让之前难以激活的神经元活跃,从而使得所有神经元有多样性表现
然后再通过三个标准来评估生成的测试套件。第一个是缺陷检测能力,来检测对抗性攻击的发现能力。第二个是测试输入的自然性,通过IS和FID来评估输入真实性。第三个输出公正性,即预测模型是否对于特定标签有偏向性,这一度量通过Pielou's evenness来量化。
这个结论和传统软工中近期的测试充分性观点具有一定的一致性,即,尽管代码覆盖率是一个广泛使用的测试充分性度量标准,但实际上它可能与错误检测率无关联性因而不是一个有意义的指标。 需要注意,作者指出,他们的研究和code coverage类似,关注的是相关性而非因果。所以结论不可直接视为NC无用论。
实际上,作者的观点是,不该单纯基于提高NC进行测试生成。而需要同时考虑自然醒和输出公平性,来生成更“真实的”输入,以期待更多样的输出表现。
本文的输出公平性,与ML里的不同,指的是,测试套件如何在ML模型中,执行不同输出行为的偏差度的度量。
本文选择基于范数的对抗攻击生成方法。并选择无目标攻击方法,以提供给扰动更高的自由度。
研究方法
数据集和DNN
注意,研究自然度的时候,不考虑MNIST,因为它的图像集同时包括背景和前景。
度量神经元覆盖率
(简单理解为对应位置输出的占最大值的比例)
考虑2,3层所有节点,然后根据某一个阈值t,来计算NC
本文选定的阈值参考了其他工作,
对抗攻击算法
使用以下两种广泛应用的算法。
- Carlini-Wagner
优化公式:
y表示x的标签,L是合适的损失函数,h是目标模型,表示p范数,是一个比例常数。
通俗理解:目标是找到能够改变预测结果的,尽可能小的扰动
- Projected Gradient Descent(PGD)
优化公式:
通俗理解:目标时找到在某一个阈值范围下的,能够最大化模型预测误差的扰动
该方法使用投影梯度下降来求解,用∞范数来约束。L在分类中选择交叉熵,回归中选择均方误差。
使用一组不同的阈值
拓展攻击算法,以提高NC率
之前的研究指出,上面提到的对抗性方法,并不会在NC中有任何显著性变化。因此,为了实现对抗样本与NC率的关联,本文设计了一个新的正则调节器。
其中是一个超参数,来控制与NC的关联性强弱。表示多样性函数,表示扰动输入在第l层DNN对应的神经元激活值,U表示一个均匀分布。本文使用无穷范数,并用KL散度来度量多样性div,实际上任何能够度量两个分布的距离的函数都是合适的。
当超参数较大的时候,这个目标方程可以帮助诱导激活以前不活跃的神经元,并进一步促进增加NC。
增加这个正则器,并不一定会降低攻击成功率。(23%的攻击有100%成功率)
但是,增大超参数,则会显著降低成功率。
图二说明了对于神经元激活数量的显著增加。
表二说明该正则器提高NC的效果。(尤其是在t稍大的NC上
这个正则器可以作用特定层,连续或者非连续层子集,或者是所有层。作者在实验中每次变动一个层,来评估NC对这种正则化的敏感性程度。小模型测了所有层,大模型选了随机的k层。
发现
每次配置都随机选均等标签分布的100个图像组成的测试套件。以避免标签公正性影响。
首先,用NC增强对抗性来生成对抗攻击,再计算对于t下的NC率与攻击成功率ASR的关系。
只有加粗的能支持“基于提高NC来生成对抗样本可以增加攻击成功率(即,更好的发现模型漏洞)”
缺陷检测
作者将ASR(攻击成功率)和DDR(缺陷检测率)等同。
pert_acc 表示T生成的测试套件的分类正确率。
(自动驾驶的回归模型,通过离散化输出,来得到一致的度量方法)
结合表四,得到结论。
研究结果否定了NC与缺陷检测具有强的正相关的假设。只有3%的配置支持该假说。
自然性
主要是来判断最大化NC是否能够生成足够自然真实的测试组件。
作者用的是在生成对抗模型里比较常用的两个度量自然度的指标。
-
Inception Score(IS)
将自然度细分为两个子概念:
突出:可以应用于单个图像的可能的类标签中,只有一个是高概率的,其他的概率都很低。(对应图像的高度可识别性
多样性:集合中所有图像都有许多不同类型的类。
-
Frèchet Inception Distance (FID)
是一种两组图像集的相似度度量方法。计算最终平均池化层特征表示中匹配的两个高斯函数的Frechet距离来计算。该度量比IS与人的视觉质量判断有更好的相关性。FID是个越低越好(真实)的度量,所以看负相关性。
结合直观图像:
高覆盖率带来了图像的失真。(FID的正相关性也佐证了这个观点)
只有3%的实验结果支持NC与自然度有强烈正相关的假设。56%的测试套件实际上是负相关的,这意味着最大化神经元的覆盖率可能会破坏自然性。
输出公平性
在传统的软件测试中,它认为一个测试套件必须执行不同的输出行为,不应该只喜欢几个输出值。
考虑一个均衡的测试套件,它由均匀地从多个类提取的输入组成。假设测试套件被提供给一个模型,并且模型预测总是相同的类标签。这表示输出倾斜。
定义为在均匀输入分布下的类预测分布的度量(即初始测试集包含来自每个类的相同数量的输入)。具体是从过Pielou的均匀度评分来进行度量:
越高说明公平性越好,其中表示类的基数,表示t分类到类的概率。
基于上面的结果,作者又做了一个实验,来观察最大NC时,生成的扰动测试集,更偏向哪部分。
进一步实验
基于CIFAR10
生成十份测试集:每一份表示一类,每类随机选100个
然后用这些测试集,计算对应类的NC基线(NC baseline)
(因为NC与t相关,所以选择0,0.1,...,0.9分别计算NC基线
然后根据基线结果高低,排序对应的类别
因为有十个基线,所以最后每份(每类)测试集就可以得到10个排名,然后作者对这个排名取平均
作者这里给出一个断言:
NC排名更高的类,意味着该类具有更高的覆盖率,更可能会被过生成(不公平的样本生成偏向排名更靠前的类)
接下来,在每个类标签上给定30个输入,构造一组公平性为1的输出(所有类都被正确分类到对应的标签
然后使用NC增加正则器来生成扰动输入集以提高NC,结果用柱状图表示,每个柱子表示对应类的预测百分比;热图表示每一类产生的扰动,都去向了另一类。
- 结论:NC提高为指导的测试生成技术,实际上在做的的是简单的把其他类的数据集扰动到基线覆盖率最高的类上。
只有5%的实验结果支持NC与输出公正性强且正相关的假设。当一些类标签比其他类标签具有更高的NC基线时,增加的NC偏差会使测试套件主要合并这个首选子集的特征。
讨论:
比较DeepXplore&DeepTest
因为存在着不止一种生成用例方法,因此作者类似的也对这两篇文章中对应的生成方法度量了提出来的三个指标。
DeepXplore的结果是,没有一个结果能够支持三个指标的假设。DeepTest的结果是,只有输出公平性中的一项是强支持的。
而且作者指出,实际上这两种方法都生成了很多纯白图片,但是仍然标记原有的标签。这种图片是非常不真实不自然的生成用例。
然后作者也简单比较了一下不同提高NC方法的优劣。
DeepXplore是多模型依赖的,因此DNN越大,成本迅速增加
直接基于对抗样本生成算法产生的攻击用例,能够是缺陷行为小同时与原始距离也小,所以测试套件会更自然(真实)(通过比较FID的值
单个神经元是否有意义?
这一讨论可以理解为对于NC的本质想法的驳斥。即NC是基于“每个神经元独立提取特定的输入特征”这一观点来设计的,然而现在的一些可视化技术的研究表明,这一观点并不正确。
相反,一层中的神经元相互作用,将信息传递给后续的层,而NC无法捕捉到这种神经元相互作用的丰富程度。
NC最大化对于测试DNN是否有意义?
作者这里讲的有点乱,我就转述个我的想法,不一定准确
当神经元可能是通过相互组合的方式来向下一层传递信息的时候,实际上,我们每一层要考虑的激活情况就不再是n个神经元,对应n个信息了,而是这n个神经元的任意组合情况所对应的激活状态信息,也就是个情况,这种信息的膨胀会让基于组合神经元提取特征的观点下的神经元覆盖率难以实现。