AI系统测试的数据分布研究

最近正在学习关于数据分布的DNN测试技术,涉及到OOD数据的相关讨论。阅读了论文《Distribution Awareness for AI System Testing》。

摘要:

很难判断识别的错误是否确实是DL应用程序有意义的错误。因此提出了一种新的OOD指导的测试技术,旨在生成与底层DL系统任务相关的新的unseen的测试用例。结果表明,该技术能够在CIFAR-10上滤除高达55.44%的错误测试用例,在增强鲁棒性方面效率提高了10.05%。

(通俗总结:提出了一种引入了OOD检测的覆盖准则,以生成更有意义的测试用例,更能保证DL系统已识别错误是有效的、有研究价值的)

背景:

深度学习的基本假设是训练数据遵循某种分布,即分布内(ID)。当测试框架生成新的错误测试用例时,目前尚不清楚此类错误是由 DL 系统的缺陷引起的,还是错误测试用例遵循不同的分布并且与 DL 任务无关,即分布外 (OOD)。因此,可以通过分析数据分布行为来确定错误的根本原因,需要重新思考如何应用最先进的测试框架。

工作:

当前的测试框架使用覆盖标准来指导测试用例生成,以识别新的unseen数据。为了弥合从数据分布到DL测试活动的差距,提出了第一个分布引导的覆盖标准,以指导测试用例生成新的unseen数据,同时为DL系统任务的已识别错误的有效性提供更高的保证。

实验结果表明,该技术能够在CIFAR-10上滤除高达55.44%的错误测试用例,在增强鲁棒性方面效率提高了10.05%。

方法:

AI系统测试的数据分布研究_第1张图片

  1. 按照使用OOD基准数据集的相关工作提出的常用评估程序确定最佳方法,将OOD集成到覆盖标准中(没看懂怎么集成)。

  2. 然后,将8个常见的变异算子(包括仿射和颜色转换)分别应用于种子(种子取自训练集),从而生成测试用例。

  3. 将这些测试用例作为输入提供给 DNN 模型。

  4. 之后,将预测结果与覆盖率分析一起进行分析,并结合 OOD 引导的神经行为分析:

    ① 如果测试用例被正确预测并在遵循经过训练的分布(unseen ID)时增加覆盖率,则将其放回种子数据池中;

    ② 如果测试用例导致错误,则使用 OOD 覆盖率标准分析错误,查看它是否与基础系统任务相关。

  5. 最后,在经历了定义数量的迭代测试周期后,使用错误测试用例来重新训练 DNN 模型。

本文展示了 DeepXplore 和 DeepTest 使用的覆盖标准 Neural Coverage (NC) 以及 DeepHunter 使用的 DeepGauge 的 k-Multisection Neuron Coverage (KMNC) 的结果。与训练数据相比,NC 测量神经元的总激活,而 KMNC 应用更细粒度的分析来测量激活 k 的激活范围。

OOD数据裁定方法:按照最先进的 OOD 检测方法来检测 OOD 分数,并从训练数据中检索 OOD 分数分布。如果一个新的测试用例的 OOD 分数超过了定义的阈值,则将其定义为 OOD。

OOD指导的测试的有效性判定:检索了 2000 个错误测试用例用作测试集。然后在原始训练集上重新训练 DNN 模型,包括 10000 个单独的已识别错误测试用例。一共研究了三种设置:随机选择的错误作为基线,遵循训练分布的错误(本文得到的)以及仅作为额外比较的 OOD 错误。

实验:

选择了两个基准数据集 MNIST 、 CIFAR-10,它们分别在常用的 DNN 模型架构 LeNet-5 和 DenseNet-121 上进行训练,以及性能最佳的 OOD 方法 Outlier-Exposure 用于覆盖标准集成。对于每个 DNN 模型,评估在本文提出的覆盖标准增强之前和之后检索到多少良性和错误测试用例。

你可能感兴趣的:(TEST,FOR,AI,人工智能,测试用例,深度学习)