引言
现如今,机器学习(ML)已经普遍运用于各种领域,机器学习技术的应用已经成为许多创新领域的关键。然而机器学习推理结果的不确定性和本身的脆弱性导致机器学习系统可能出现误判,给该系统的应用领域带来不可预计的问题,因此需要通过验证和测试技术来保障机器学习的正确性和可靠性。挪威Simula研究实验室Dusica Marijan和Arnaud Gotlieb两位作者讨论了机器学习测试中最具挑战的六个领域,综合了应对这些挑战最可行的方法,指出了现阶段存在的问题,并设想了下一步的工作方向。该论文的标题为《Software Testing for Machine Learning》,2020年发表于AAAI。
机器学习测试的挑战源自于机器学习潜在的随机推理的复杂性。在论文中,作者定义了六个关于机器学习测试的关键挑战。
1.1 无法预测测试输出
在软件测试过程中,测试用例通常定义为被测系统的特定输入和这些输入的预期输出。机器学习系统的行为可能会随着时间变化,无法预测它的输出,所以也无法确定机器学习测试中的输出正确性,这很大程度上使得测试用例规范变得复杂。
1.2 完全测试不可行
机器学习系统通常部署在需要处理大量数据的领域,这产生了大量的不同的测试输入。在检测被测系统正确性时,很难覆盖所有的有效输入和它们的组合。
1.3 难以评估测试数据集质量
训练机器学习模型时,通常使用测试数据集来验证训练效果,测试数据集的质量对于能否测出被测系统的缺陷至关重要。然而测试数据集质量很难评估。
1.4 攻击脆弱性
机器学习分类器极易受到攻击,对输入数据做出很小的改动,就有可能导致机器学习系统错误分类和系统故障,这种对输入的改动称为对抗样本。对抗样本只对原始输入做非常微小的扰动,但能够破坏系统的正确性。现有的实验已经证实对抗样本能够对图像、文本和语言识别等机器学习推断结果产生影响。
1.5 缺乏机器学习模型鲁棒性评估指标和测试框架
为了降低机器学习分类器的攻击脆弱性,除了研究如何对抗攻击的方法,另一方面还缺少机器学习模型鲁棒性的评估指标,以及机器学习鲁棒性基准测试的框架。
1.6 机器推理的伦理难以验证
机器学习系统可能被部署在存在伦理影响的环境中,比如自动驾驶汽车,因此机器学习系统要有能力推断涉及伦理问题的情况。在该领域虽然已经提出了多种将伦理纳入机器学习的方法,但是真正的研究挑战在于构建用于验证机器伦理的方法。
论文总结了应对以上六个重要挑战的目前最可行的测试技术和该技术的局限性。
2.1 测试预言
2.1.1 伪预言
伪预言是一种差分测试技术,通过运行多个相似系统与被测系统进行比较,给所有系统相同的输入并观察其输出,输出的差异被认为是被测系统的错误。差分测试的局限在于,运行多个系统可能导致资源不足,且多个系统可能存在相同的错误。
2.1.2 蜕变测试
蜕变测试是无预言的软件测试方法。使用转换函数修改现有的测试用例输入然后产生新的输出。如果修改输入后的输出与预期输出不同,则表明被测系统存在错误。但是如果被测系统有很大的输入空间,编写蜕变函数的工作量相当庞大。
2.2 衡量测试充分性的测试技术
2.2.1 测试覆盖率
DeepXplore定义了一种用于测试DNN的测试指标,称为神经元覆盖率。它度量一组输入在DNN中激活的神经元的总数来表示一组测试的覆盖情况。DeepGauge进一步扩展了神经元覆盖,以神经元边界覆盖为代表,通过覆盖DNN的关键功能区和极端案例来测试DNN。DeepCruiser 是一项测试循环神经网络的工具,将RNN表示为一个抽象的状态转换系统,并且为生成有状态深度神经网络系统的测试用例定义了一组测试覆盖标准。基于神经元覆盖技术的普遍局限是它们容易导致组合爆炸。
2.2.2 模糊测试
模糊测试是一种通过生成大量的随机数据来应对DNN输入范围广泛问题的方法,通过生成大量随机输入来测试系统故障。TensorFuzz就是一种应用于测试TensorFlow DNN的模糊测试方法。它使用由用户指定约束组成的覆盖指标来随机改变输入,采用快速近似最近邻算法计算测试覆盖率。另一种方法是DeepHunter,它是第一个用于DNN的自动反向传播的模糊测试。它通过变形生成新的测试用例,并使用多个覆盖标准作为条件引导测试用例的生成。模糊测试普遍的局限在于它不能保证满足测试目标。
2.2.3 混合测试
DeepConcolic是一种混合测试方法,该方法将一组覆盖率需求参数化来生成测试输入,目的是通过在具体执行和符号执行之间来回切换来提高测试需求覆盖率。
2.3 测试数据集的质量评估
2.3.1 变异测试
DeepMutation方法设计了一组变异算子,使训练集数据产生变异。然后用变异后的训练集重新训练模型生成变异的模型,这样这个模型中就存在被注入的错误。随后用测试集测试变异模型,通过分析检测到注入错误的程度来评估测试集的质量。这种方法的局限性在于它采用的基本突变算子只能覆盖有限的深度学习系统,它注入的错误可能不足以代表真实情况下的系统错误。
MuNN 是另一种测试神经网络的变异测试方法,它在变异算子上做了进一步的研究。它提出不同深度的神经网络需要不同的变异算子,还阐述了开发依赖于域的变异算子而不是基本变异算子的重要性。
2.4 应对机器学习攻击脆弱性的技术
2.4.1 生成对抗样本
生成对抗样本是一种提升机器学习防御的有效方法。生成对抗样本的方法目前有以下几种:
快速梯度符号法(FGSM)表明高维空间的线性行为足以产生对抗样本。DeepFool是另一种生成对抗样本的方法,它基于分类器的线性化迭代生成足以改变分类标签的最小扰动。这种方法的局限性在于它是一种贪婪启发式方法,不能保证找到最佳的对抗样本。Moosavi-Dezfooli扩展了DeepFool的思想,开发了一种通用的对抗攻击方法。该方法使用一组较小的输入数据集生成通用扰动,然后使用DeepFool获得输入数据的最小扰动样本,最后将其修改为最终扰动。Wicker等人开发了一种基于双方随机博弈生成对抗样本的方法。通过两个角色相互合作或对抗来寻找对全局扰动最小的对抗图像,此方法的局限是耗时过长。对抗样本还可以通过生成对抗网络生成,比如AdvGAN,它可以为任意实例生成扰动,可以提示对抗训练的速度。它的局限在于生成的对抗样本基于小范围的有界扰动。Song等人通过开发不受限的对抗样本进一步解决了这个问题。
总体来说,对抗样本生成方法利用了分类器的脆弱性,但对输入数据的不同分布比较敏感。
2.5 机器学习鲁棒性评估指标和基准测试
2.5.1 鲁棒性指标
提高神经网络鲁棒性的典型方法是找出使神经网络出错的对抗样本,然后用这些样本扩充训练集再训练另一个神经网络。新网络的鲁棒性被定义为使原网络错误的对抗样本数量与他们导致新网络错误的对抗样本数量的比值。Bastani 等人提出了使用线性规划评估DNN鲁棒性的指标。其他方法还包括定义分类器对对抗性扰动的鲁棒性上限。该方法发现:非线性分类器对抗对抗性扰动时比线性的更鲁棒;神经网络的深度对对抗性鲁棒具有关键作用。
2.5.2 评估鲁棒性的基准测试
Cleverhans 和Foolbox 是两个为对抗攻击和防御开发的基准测试库,在测试过程中,不同的基准测试可以相互比较。这两个框架的局限在于缺少防御对抗生成的策略。Robust Vision Benchmark 2扩展了Foolbox的思想,它开发了进一步加强机器学习模型鲁棒性评估的新型攻击。
2.5.3 鲁棒性形式化认证
对于需要符合安全法规和认证的安全关键领域,提供机器学习在对抗性输入扰动下的性能保证至关重要。这方面的研究包括:在训练中使用正则化、通过更新训练目标来满足鲁棒性约束。上述方法目前被证明只能达到中等水平的鲁棒性,在为机器学习模型提供鲁棒性保证方面需要进一步的研究。
2.6 机器推理的伦理验证方法
该领域的研究成果比较有限。Dennis等人提出一个可以验证自主系统伦理决策的理论框架,该框架假设系统控制与上层决策分离,使用模型检测验证理性代理(模型检测是验证机器推理伦理使用最广泛的方法)。但是使用这个方法的前提是需要事先明确伦理问题产生的后果,而这本身难以保证;其次,代理验证的过程非常缓慢;第三,由于传感器输入模式的不确定,该框架对传感器数量和数据值的支持都不理想。
关于自主推理认证,Webster 等人开发了一种概念验证方法,用于为自主驾驶飞机形式验证和飞行模拟生成认证证据。但是该方法依赖于一组假设。比如系统的需求是已知的,或者它们已经被准确的翻译成正式规范的语言,可是这些假设并不总能成立。
3 总结与展望
论文详细阐述了机器学习软件测试面临的上述的六个关键挑战和应对方法,各个领域都需要进一步的研究来解决现阶段存在的局限性问题,或者扩大现有方法的适用范围。在无法预测输出的问题上,蜕变测试是目前最具代表性的方法,该领域未来的研究方向是让机器学习自动地生成蜕变关系;现有机器学习测试覆盖率指标仍然不够完善。高神经元覆盖率并不意味着更强的对抗攻击的能力,还可能导致输入空间爆炸。组合测试技术被认为是该领域的未来发展方向;对于机器学习数据集质量的评估的研究工作还不够深入,变异测试是目前该领域普遍认可的方法,但是通用的变异算子还不足以应对DNN的测试;目前对对抗样本的生成策略需要进一步改进,降低计算复杂度的同时提升对不同分类器的有效性。机器学习模型的鲁棒性评估指标和对抗攻击有效性评估指标都需要进一步的研究。开发和评估新对抗性攻击和防御的开源框架可以成为提升防御鲁棒性的有效工具。机器学习鲁棒性认证方法,目前只能提供近似的认证,此外还需要进一步研究来克服认证过程的高计算复杂度。机器伦理验证下一步工作是提升已有方法在实时运行的真实系统中的可扩展性,并且降低其计算复杂度。需要在实现伦理决策过程的透明度方面取得进展。
我们的优势
上海计算机软件技术开发中心是全国最早开展软件测试的第三方评测机构,多年来深耕测试领域,以丰富的实战经验服务客户上万家,同时牵头制定性能测试国家标准,参与制定性能测试国际标准,2019年CNAS性能测试能力验证活动中以满分成绩领跑全国144家测评机构。
上海软件中心坚持为上海信息系统高效、稳定、健康运行保驾护航的服务宗旨,肩负起服务企业、服务行业、服务政府的使命。以雄厚的技术实力,为信息系统建设提供科学保障;以严谨的科学态度,走在软件质量学术研究领域的最前线;以高度的责任感和公信力,打造权威的第三方测试品牌。客户的满意是对我们工作的最大认可,同时也是鞭策我们不断前行的动力。

上海市计算机软件测评重点实验室(简称SSTL),由上海市科委批准成立于1997年,是全国最早开展信息系统质量与安全测评的第三方专业机构之一,隶属于上海计算机软件技术开发中心。







