精读论文《Correlations between Deep Neural Network Model Coverage Criteria and Model Quality》。记录阅读笔记。
研究问题:
神经网络模型覆盖率与模型质量之间是否存在与传统软件测试中相似的单调性。
1 introduction
DNN:
由输入层、输出层和多个内层组成,每层包含一组神经元。在模型推理or预测过程中,某一层的神经元激活值根据上一层的值计算,如果该值小于0,则将其设置为0,并对后续层的贡献为0,即神经元没有被激活。
DNN测试:
从激活神经元与软件覆盖的相似处入手。状态覆盖类比神经元覆盖(测量被激活的神经元的百分比);路径覆盖类比神经元模式覆盖(测量激活路径)。
但是,DNN模型语义与程序语义有很大不同。程序行为离散而模型行为连续(程序语句每一句都执行了相应功能,但单个被激活的神经元可能没有什么具体含义,而是整体起作用)。
四个问题:
- 模型覆盖率的提高与模型质量之间是否存在单调关系?(没有)
- 覆盖率驱动的测试生成在揭示DNN缺陷方面是否有效?它与其他常用的对抗性示例生成技术相比如何?
- 使用模型覆盖标准生成的测试用例在提高模型质量方面是否具有优势?
- 各种模型覆盖标准之间是否存在相关性?
实验:
8个模型,3个数据集。使用DeepXplore、DeepGauge、DeepHunter、SADL中基于模型覆盖的测试生成技术,以及基于优化的对抗性示例生成技术C&W、PGD来生成导致不同覆盖级别的测试用例,用这些测试用例再训练模型。然后使用度量标准来衡量质量改进。
结论:
- 没有单调关系。
- 虽然DNN覆盖标准可以指导寻找对抗性示例,但有效的对抗性示例可能不会导致更高的覆盖率。
- 与现有的基于梯度的方法相比,基于覆盖标准生成对抗性示例的现有方法通常添加人类可见扰动(扰动很大)。类似于可能违反软件输入前提条件的程序输入。
- 由DNN覆盖率为指导生成的对抗性示例重新训练模型可以提高模型鲁棒性,但不能提高模型对基于梯度的攻击(PGD)的鲁棒性;同样,基于PGD的对抗性训练可以提高模型对PGD攻击的鲁棒性,但不能以覆盖率为指导提高模型对PGD攻击的鲁棒性。
- 现有大多数DNN覆盖准则都是相互关联的,有些强相关。但目前还不清楚它们之间是否也有类似代码覆盖标准的偏序关系。
2 background
DNN、对抗性示例以及鲁棒性
两种攻击:
CW攻击、PGD攻击
对抗性训练:
提高DNN鲁棒性的最有效方法之一。总体思想是将对抗性示例纳入模型训练(在每次训练迭代期间,生成对抗性示例,然后将其用作优化模型参数的训练数据)。
3 coverage based DNN test
神经元覆盖标准:
DeepXplore(白盒)、DeepGauge、DeepHunter、SADL(LSA、DSA)
研究问题:
- DNN覆盖指标是否与DNN模型的稳健性相关?
实验设计:设主题模型F0。生成大量对抗性示例,选择能够导致最显著覆盖改进的示例,不断添加到训练套件T0中,直到覆盖完全或无法再改善;使用这一系列测试套件(T1,T2,…,Tr)进行对抗性训练,产生模型F1,F2,…,Fr。如果该问题成立,则模型鲁棒性应该是越来越强的。
- 覆盖率驱动的测试生成在揭示DNN缺陷方面是否有效?它与其他常用的对抗性示例生成技术相比如何?
实验设计:使用DeepHunter(基于覆盖)和PGD(基于梯度)对相同DNN生成测试用例DH、DP。比较:i. DH、DP中可能导致发现DNN缺陷的样本的百分比;ii. 通过计算样本与原始良性图像相似度来比较生成样本的质量;iii. 计算DP的覆盖度量,查看新的对抗性示例是否会导致覆盖范围增长。
- 基于DNN覆盖的测试生成的对抗性示例在提高模型鲁棒性方面是否有效?与基于梯度下降技术产生的对抗性示例相比如何?
实验设计:使用DeepXplore和SADL生成对抗性示例,将它们与原始数据混合重新训练模型。然后对模型进行PGD对抗性训练。比较该两组再训练模型的有效性。
- 不同的DNN覆盖标准有何关联?
实验设计:给定模型F。不断添加新的输入样本来测试模型,收集覆盖信息以获得每个测试标准的值序列。即收集NCF、KMNCF、NBCF等,进行相关性分析。
4 DNN model quality metrics
度量思想分类:
- 在对抗性示例存在的情况下模型的准确性(传统测试中的类比:测量主体软件在压力测试时失败的频率。指标:MR、ACAC、ACTC)
- 衡量对抗性示例看起来是否自然的对抗性示例不变性(传统测试中的类比:当提供给主体软件的输入违反输入前提条件时,主体软件可能失败;该情况导致的故障不能作为软件质量低下的证据。指标:ALDp、ASS、PSD)
- 对抗性示例健壮性(即不健壮的对抗性示例不应该被用作模型质量低的证据。传统测试中的类比:暂时性故障(例如由非确定性因素引起)可能并不表示软件质量低。指标:NTE、RGB、RIC)
5 experiments and results
数据集和模型:
MINIST(LeNet-1、LeNet-4、LeNet-5)、CIFAR-10(VGG-16、ResNet-20)、SVHN(SADL-1、SADL-2、SADL-3)
参数设置
结果与分析:
RQ1
覆盖×训练集:r=10,总共11个训练数据集(包括T0);每一步向数据集中添加250个新图像,总共2500个。与DeepXplore和SADL相比引入了更多新训练样本(结论:有了新的训练样本,所有覆盖指标都在增长)。
鲁棒性×训练集:均不单调(结论:从攻击的角度看,增加新的样本以提高覆盖率并不总是导致模型鲁棒性的提高)。
攻击标准×覆盖标准:Kendall方法对两者相关性分析(结论:无明确关系)。
RQ2
对每种方法每个模型生成1000张图像,测MR比较攻击成功率(结论:PGD成功率几乎100%但DeepHunter成功率低);计算良性输入和对抗性示例的平均ℓ∞来比较所生成对抗性示例的质量(结论:PGD生成的质量更高)。其中,DeepHunter具有较大ℓ∞扰动的原因是它使用了仿射变换,会产生较大ℓ∞值,但保持了语义。因此,ℓ∞并不是最理想的度量,论文使用它是因为PGD和DeepHunter都用它来确定生成的示例是否为有效输入,如何选择更好的度量有待讨论。
覆盖×对抗:为了了解PGD生成的对抗性示例和覆盖标准的关联,在每个步骤添加10幅图像计算覆盖度量值的变化。观察到除了TKNP以外的所有线条都先快速增长后趋于平缓(结论:新的对抗性示例确实增加了覆盖面,但不一定会增加覆盖面)。为了进一步演示这一点,使用了基于自适应梯度的攻击来限制优化过程中的覆盖变化,生成对抗性示例,结果仍能生成几乎100%的对抗性示例。
TKNP与新样本数量几乎呈线性关系:为进一步研究这一点,添加良性样本计算覆盖度量的增长,结果和对抗性样本一样线性(结论:TKNP不能区分良性样本和对抗性样本)。
RQ3
分别使用基于覆盖和PGD训练模型:用覆盖引导的对抗性示例再训练模型和PGD再训练模型分别在良性样本、覆盖、PGD攻击下的准确性。观察到:i. PGD模型在良性样本上准确率较低;ii. DeepHunter生成的图像存在很大扰动,且重新训练过程很难收敛;iii. 对抗性训练并不一定能提高模型精度(SVHN);iv. 基于覆盖的再训练可以提高模型在使用相同图像扰动策略攻击下的鲁棒性,但不能提高模型在基于梯度攻击下的鲁棒性(Adv.×PGD),同理PGD。
RQ4
分析所有覆盖标准之间的相关性:NBC与SNAC强相关,NC、KNC、TKNC、LSA、DSA之间也存在一定相关性,但不强。
6 threat to validity and discussion
有效性威胁:
- 现有大多数覆盖标准都只集中在基于DNN的图像分类上
- 模型、数据集、训练参数都是特定的,可能不够有代表性
- 研究很大程度上基于现有模型覆盖标准和测试生成技术,本文可能没有忠实复现
讨论:
未来对模型的评估应制定一套标准来包括测试各种模型属性、架构和任务,以便结果具有可比性。
7 related work
DNN测试和验证
对抗性机器学习
8 conclusion
论文研究了现有的神经网络覆盖准则,发现其与模型鲁棒性无关,虽然其可以用来生成对抗性示例并在有限场景中提高模型鲁棒性(RQ3,攻击者使用相同的扰动策略),但它们倾向于生成具有实质性扰动的对抗性示例并因此可被人类感知。相比之下,现有的基于优化的对抗性示例生成技术可以生成较不易察觉的示例。现有覆盖标准之间存在相关性,但目前还不清楚是否有偏序关系。