【.com快译】人工智能已经成为人们关注的焦点好几年了。尽管关于“机器人为你工作”的炒作和耸人听闻的头条新闻,很明显人工智能创造了价值,即使收益很小,而且它在各个行业都有多种应用。虽然人工智能、机器学习和其他智能技术正在迅速获得跨行业的牵引力,但“生产”却滞后了。人工智能质量保证完美地证明了这一点。因此,没有AI开发人员或AI测试人员。所有工作均由负责ML生命周期每个阶段的数据科学家和ML工程师完成。与软件开发相反,人工智能工程依赖于“测试最佳实践”,而不是每个人都遵循的特定规则。然而,人工智能和机器学习的QA正在迅速发展。医疗保健、银行和金融、保险、物流和通信等安全和数据敏感行业需要不断测试和微调AI/ML解决方案,以确保其数据、基础设施和关键系统受到保护。这篇文章是我对如何为AI/ML进行QA的看法。正如我所发现的,我在Provix的同事对这个过程有自己的看法。它只是表明对于所有想要测试人工智能的人来说,还有多少工作要做。关于机器学习模型的生命周期和检查的一些基本知识。图片由作者提供从QA的角度来看,机器学习模型的生命周期包括三个主要阶段:1.准备。收集、过滤和组织数据以进行后处理和分析。2.实验。功能经过精心设计,模型经过设计、构建、训练、测试和微调,为部署做准备。3.部署。一旦模型被打包和验证,它就可以部署到生产环境中供客户使用。对模型进行监控,确保模型的高精度和可靠性。这意味着在生命周期的每个阶段测试非常不同的属性,从数据和功能到模型组件和AI解决方案本身。这对QA工程师提出了重大挑战。数据测试我们不能低估干净、准备充分的数据在机器学习中的重要性。俗话说“垃圾进,垃圾出”,如果将低级数据推入高质量的机器学习模型,它会产生低级结果,反之亦然。例如,2016年,加州大学伯克利分校的一组研究人员得出结论,“[检测和修复脏数据]失败可能导致ML模型的分析不准确和决策不可靠。”我们在Provix中证明了同样的事情。我们的客户之一GoCheckKids希望通过机器学习增强其儿科照片筛选应用程序的图像分类组件。在查看视觉筛选模型的结果后,发现用于训练模型的图像中有很大一部分必须重新标记。完成后,该团队发现ML模型的召回率提高了3倍,同时保持了其精度。那么,可以测试什么?我们可以将数据集作为一个整体进行测试,也可以单独测试每个数据点。从数据质量的角度来看,检查重复项、缺失值、语法错误、格式错误和语义错误非常重要。如果你想检测统计质量问题,你应该在你的数据中寻找异常和离群值。但请记住,检查重复项、缺失值、语法错误、格式错误和语义错误非常重要。一般情况下,数据测试仍然是人工完成的。一些值得一提的工具:Deequ、GreatExpectations、Tensorflow数据验证。注:我在这里详细介绍了数据质量检查的过程——数据质量高亮系统。模型测试ML模型测试的主要原则是将模型视为一个应用程序,包括其所有功能、输入和输出。从概念上讲,如果以这种方式查看模型,测试模型会容易得多。任何应用程序的测试都从单元测试开始。你应该有许多高质量的单元测试来覆盖尽可能多的场景。尽管许多ML工程师不遵循此最佳实践,但我认为单元测试对于确保模型的高精度和性能至关重要。数据集测试是模型测试的关键阶段。您的首要任务是确保训练集和测试集在统计上是等效的;也就是说,集合之间的差异小于被认为有意义的差异,并且在统计上落在等价边界指示的区间内。下图显示了统计上不相等的数据集。数据也很重要,因为它应该用于编写用例。基本上,数据集代表用于检查模型稳健性的测试用例。例如,根据您的模型和用例,您可以使用GoldenUAT数据集、安全数据集、生产流量重放数据集、回归数据集、偏差数据集、边缘案例数据集等。您还应该测试功能。具体来说,您的目标是找出哪些特征对模型生成预测的能力影响最大。如果管道中有多个模型并且必须完成模型以选择更准确的模型,则功能测试至关重要。模型必须经过安全测试。这本身就是一个广泛的话题,我只会略微提及。与其他软件一样,模型也可能被病毒(所谓的线虫)感染。线虫会导致模型错误识别对象并生成错误的预测。例如,感染线虫的模型可以“看到”长臂猿,但在熊猫图像中看不到熊猫。最后,您需要测试模型的偏差。偏见是对想法或事物的倾向或偏见。它以多种形式存在,但从模型测试的角度来看,最具影响力的偏差类型是:选择偏差——以样本不反映真实世界分布的方式选择数据。框架偏差——信息的呈现方式可以改变人们对等价选择问题做出决定的方式。系统偏差——由于各种因素导致数据向特定方向倾斜而导致的一致且可重复值的数值误差。PersonalPerceptionBias——倾向于关注(并赋予更多价值)证实一个人先入之见的信息。仔细检查数据中的异常值并仔细检查缺失值以找到偏差和方差之间的平衡至关重要。尽量避免过拟合和欠拟合,尽可能客观地过滤数据。然而,消除数据和模型中的偏见说起来容易做起来难。首先,作为人类,我们天生就有偏见,没有人是100%客观的。其次,偏差测试几乎都是手动完成的,从长远来看只会给数据增加更多的错误。幸运的是,有几种服务可以帮助您更有效地处理偏见。一个是Pymetrics,这是一种用于一般ML应用程序的开源偏差测试工具。另一个是AmazonSageMakerClarify,这是一项完全托管的服务,可让开发人员更轻松地查看他们的训练数据和模型,以识别和限制偏差并解释预测。AmazonSagemakerClarify于2020年12月在AWSre:Invent2020上宣布。现在说该服务的有效性和实用性还为时过早,但如果AWS能够兑现承诺,SageMakerClarify可能会彻底改变偏差测试的完成方式。在复杂IT系统中测试模型机器学习模型通常设计和构建为离线解决方案。也就是说,它们是由ML工程师开发的,他们不太关心模型在实际应用中的使用方式。随着可重现机器学习、MLOps和特征存储的发展,这种情况正在迅速改变,这对QA专业人员来说非常棒。由于ML模型现在可以作为综合IT系统的一部分进行开发(和测试),因此测试人员可以更快速、更轻松地进入该领域。当模型作为整体应用程序或解决方案的一部分在IT系统中进行测试时,可以应用QA工程师习惯的所有类型的测试。例如,您可以运行集成测试来检查所有组件是否按预期工作。或者,您可以执行系统测试以确保整个系统按预期工作。此外,重要的是编写集成测试来测试API(您可以使用Postman),通过系统运行不正确的数据集以检查容错性,并检查与不同版本环境的兼容性。系统测试应涵盖配置测试、安全测试、性能测试和UI测试等领域。它们可以手动或自动执行。简单地说,在这个阶段,您正在测试整个系统和系统内的模型——您不会将任何模型视为系统的离线组件,以便在部署到生产后进行测试软件测试和ML测试之间的主要区别是,AI/ML解决方案(以及作为这些解决方案一部分的ML模型)在部署到生产环境后必须反复测试。当您部署一个模型时,它会继续发展和退化。很多模型在生产中会退化,而在现实中,它们曾经反映的东西已经发生了变化。这些流程可能会受到以下因素的影响:不断变化的客户习惯。自然异常和灾害。一次性事件。换句话说,随着模型处理的数据发生变化,其准确性和性能也会发生变化。这个过程称为数据漂移。为确保跟踪模型退化,您应该有一个日志记录和监控系统。当模型准确性和性能受到数据(以及其他因素)的影响时,它将帮助您识别关键点,并主动调整您的模型。为了补充您的测试工作,您应该运行A/B测试来比较不同的模型,选择可以部署到生产中的冠军和挑战者模型。当然,应该有一个自动化的连续测试系统来顺利高效地完成这一切。结论机器学习的质量保证仍处于起步阶段。对于愿意探索AI和ML必须提供什么(并且他们提供了很多)的QA工程师来说,这是一件好事。在本文中,我讨论了机器学习QA的主要阶段,并简要描述了QA进入该领域需要了解的知识。到目前为止,我已经总结了我的经验,非常感谢社区的反馈。(我很确定我在这里提到的一些最佳实践值得商榷)。)总而言之,主要要点是:关注数据。您必须确保用于训练和测试模型的数据是高质量的。为此,请确保将其可视化并检查异常、异常值和统计问题。查看您的模型,就好像它是一个普通的应用程序一样。作为复杂IT系统的一部分测试您的AI解决方案和模型。也就是说,运行通常会测试软件的所有类型的测试,但要记住偏见和适应性。部署后继续测试模型。考虑数据漂移和其他可能影响模型性能的因素。添加监控和日志记录以跟踪更改;通过适当的CI/CD,可以快速测试、调整和部署新模型。我希望本文能帮助您开始ML测试的职业生涯。请在评论部分分享您的反馈和想法。【翻译稿件,合作网站转载请注明原译者和出处.com】
