AI测试的思考与探索
人工智能(AI) 已无处不在, AI正在为各行各业赋能,改变人们生活、生产的方式。然而,由于AI是一种新的编程范式,无论是学术界还是工业界,对于AI测试的研究还刚刚起步。
AI测试及挑战
AI 作为一项变革性的技术已经渗透到了各行各业,随着AI在各行各业的应用日益广泛,对AI系统测试的需求也与日俱增。以自动驾驶为例,如果自动驾驶的智能系统做出错误的决策或响应时间慢,则将大大增加车祸的风险。类似地,金融领域AI的错误决策可能导致不可估量的经济损失。
我们首先来分析为什么AI测评那么困难。经典的程序设计中,我们输入的是规则(程序)和需要这些规则处理的数据,系统输出的是答案。因此,经典的软件测试,我们可以通过对比答案来验证和确认程序的正确性。然而,数据驱动的AI系统,不是通过编写明确的逻辑,而是通过数据来训练程序,输入是数据和从这些数据中预期得到的答案,AI系统输出的是规则,这些规则可应用于新的数据,自动计算出答案。可见,数据驱动的AI系统是一种新的编程范式,这种编程范式给测试带来了极大的挑战。
(1)AI系统输出结果很难预测。比如,基于深度神经网络的图像分类问题,网络的输入是图像(高维空间的分布),模型学到的规则是图像中模式的统计规律,因此输出的是图像属于某个类别的概率,这个概率值是无法事先预测的。
(2)AI系统测试通过的准则很难确定。比如,生成对抗网络(GAN)中如何判定GAN生成图像的质量与真实样本足够相似?这个问题,目前只能靠人眼主观判定,定量测评方式的研究才刚刚起步。
(3)AI 系统的输出结果随时间变化。比如,推荐系统的准确率,在某一段时间可以满足业务需求,但随着用户数据的变化,一段时间后其准确率可能会下降,而无法满足需求,模型则需要重新训练,重新评估与测试。
(4)AI系统需要更高效的持续测试方法。由于AI模型随着时间的变化,数据的演化,性能会下降,这时说明该模型已经无法拟合当前的数据,因此需要高效的测试方法,尽快训练、测评、部署更新版的模型。
(5)AI系统的性能依赖于数据。模型训练的数据规模、数据质量、数据类别的平衡性都会影响AI系统的性能。而且,在验证阶段性能好的模型,未必在真实测试环境中也表现出好的性能。比如,一个过拟合的模型,在验证阶段可以获得很高的准确率,但在真实的用户数据中准确率却大大降低。
综上所述,数据驱动的AI系统相对于传统软件测试更复杂,更具有挑战。同样,还需要测试人员掌握更加全面的知识,比如机器学习、统计学、大数据分析等。
AI测试的方法论
AI测试从流程上来分大致可以分为5个步骤,分别为测试需求分析、测试环境准备、测试数据准备与验证、AI测试执行与分析、模型上线与监控。
2.1 AI测试需求分析
AI测试需求分析与传统软件测试的要求基本一致,需要明确测试的对象、测试的范围、测试的方法和工具、测试通过的准则等。但是测试需求分析不再仅仅是测试团队的任务,而需要算法开发人员、测试人员、系统运营人员共同参与讨论,确定AI系统测试通过的准则。而且,由于AI系统的行为或结果无法完全确定或预测,因此还需要开发、测试和系统运营人员共同定义可允许的风险,风险可根据技术的限制和社会共识来确定。
2.2 测试环境准备
目前AI算法,比如推荐系统、搜索引擎、图像分类、自然语言处理都依赖于大数据基础架构,因此AI算法模型的测试环境准备,通常需要考虑数据量、计算量、测试时间等因素。此外,AI测试需要高效的持续测试,所以AI测试尤其需要测试环境快速部署的能力。
2.3测试数据准备与验证
AI系统,不管是机器学习、推荐系统、计算机视觉,还是自然语言处理,都需要一定量的测试数据来进行模型的评估与测试。测试人员使用的测试数据集,需要尽可能的覆盖真实环境用户产生的数据情况。测试数据集的验证可遵循以下原则:
(1)测试数据与训练数据的比例要合适,这个比例应根据实际算法和应用场景确定。
(2)测试数据与训练数据需要独立同分布。
(3)测试数据与训练数据正负样本的比例也需要尽量保持一致。
(4)对于监督模型,测试数据的标签需要保证正确。
2.4 AI系统测试与分析
比如,模型离线评估主要是评测AI模型对未知新数据的预测能力,即泛化能力。泛化能力越强,模型的预测能力越好。可靠性测试,包括了鲁棒性、可用性、容错性、易恢复性等指标。对于无人驾驶、人脸识别等安全攸关的AI系统,需尽可能采用异常数据来进行测试,如对抗样本、易出错的样本等;对于推荐系统和搜索引擎等智能程序则需要测试反作弊能力。
2.5 AI模型上线与监控
AI模型上线后,根据实际业务每隔几天或几星期,对模型各类指标进行评估。指标应设置对应阀值,当低于阀值时应触发报警。如果模型随着数据的演化而性能下降,说明模型在新数据下性能不佳,就需要利用新数据重新训练模型。此外,在一些场景中,我们还需要对用户输入数据进行监控。比如,2016年微软在Twitter上发布的一款聊天机器人Tay开始表达法西斯思想,其原因就是用户输入数据的失控,人们“教坏”了聊天机器人。
结语
AI是一种新的编程范式,需要测试人员具备机器学习、统计学、大数据分析等综合知识和能力,因此AI测试人员的稀缺将成为AI企业的现实问题。AI的全流程的测试将不仅仅是测试团队的任务,而需要算法开发人员、系统运营人员的共同参与。
此外,AI测试技术也需要不断演进,来适应并解决AI测试带来的挑战。比如,蜕变测试可以缓解输出结果很难预测的问题;对抗样本与对抗训练,则可大大提升AI系统的鲁棒性;
众包测试技术可以实现用户体验类指标的测评;DevOps技术可提供高效的持续测试。
目前,AI测试虽然实现了部分的自动化,但我们相信未来能够实现自我评估、自我测试的自循环AI测试系统将会出现,并为AI的广泛应用提供质量保证。我们期待这一天的到来!
作者:叉叉敌
博客:https://chasays.github.io/
微信公众号:Chasays, 欢迎关注一起吹牛逼,也可以加个人微信号「xxd_0225」互吹。
本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。