本周阅读了论文《An Empirical Evaluation of Mutation Operators for Deep Learning Systems》,实验部分特别是RQ2没太看懂,在此对该文章内容做简单总结,等待之后进一步补充。
基本概念:
变异测试:将人为故障注入系统。假设暴露(杀死)该人为故障的能力可以等同为暴露真实故障的能力。
DNN故障不一定是影响传统软件的逻辑故障,而是取决于模型怎么训练的。
DeepMutation(DM):DL变异算子框架,包含源级算子、模型级算子两种。
源级算子:在训练前修改原始训练数据或模型结构(分为全局、局部)。
模型级算子:改变已训练模型的权重、偏差或结构。
问题:
RQ1(变异算子):什么是非等价(non-equivalent)、非平凡(non-trival)的变异算子?
检查变异算子是否对测试集质量评估有用。即如果其没有被可用的最大测试套件杀死,则标记为等价变异体;同时过滤掉可以被所有测试套件杀死的平凡变异。
RQ2(致死变异体的定义):建议的变异致死标准与基于阈值的标准是否不同?它与超参数配置有何关系?
检查提出的变异致死概念是否与现有文献中使用的基于阈值的方法不同。
使用各种参数检查每个变异算子,记录每个变异导致的准确率下降,并检查它是否高于预定义的阈值。基于阈值的方法可能会为每次运行提供不同结果(精度差高于阈值或精度差低于阈值),关注两种方法不一致的情况和基于阈值的方法在不同运行中结果不一致的情况。
RQ3(句法变异):DL变异算子是否和传统句法变异算子相同?
传统测试中的变异测试是在被测软件的源代码中引入语法变化。分析其是否能影响DL系统,以及与DL特有变异算子比较。
RQ4(与其他充分性标准的比较):DL变异分数是否与其他DL充分性标准(如神经元覆盖率、意外覆盖率)相关?
在一组不同的测试套件上测量每个度量,分析度量是否对测试数据的大小和质量的变化敏感。
结论:
RQ1:20个算子中确定了17个非等价、非平凡的算子,并为它们确定了超参数。
RQ2:基于阈值的变异致死定义是有问题的,因为它经常在运行过程中产生不一致的结果,并且需要仔细选择阈值,而阈值取决于变异算子的超参数。相反,变异致死不需要设置任何精度下降阈值。
RQ3:除了从模型中删除一层外,句法变异算子与本文分析的DL特定变异算子不同。证明DL特定变异算子的定义和DL特定变异工具的构建是合理的。
RQ4:变异分数是一个非常有区分性且功能强大的充分性标准,可以提供对测试数据质量的可靠评估。在其他提出的充分性标准中,LSA是与变异分数更匹配的标准。