人工智能和机器学习的质量保证

译文
人工智能 机器学习
人工智能和机器学校(ML)的质量检查正在快速发展。了解它为什么重要以及数据质量与机器学习(Machine Learning,以下简称ML)模型的准确性以及AI计划的成功有何关系。

【51CTO.com快译】人工智能几年来一直是人们关注的焦点。尽管有关“机器人为您工作”的广泛宣传和耸人听闻的头条新闻,很明显,人工智能创造了价值,即使收益微乎其微, 但它在各个行业中都有多种应用。

尽管人工智能、机器学习和其他智能技术在各个行业中迅速获得关注,但“生产化”进程却相对滞后。人工智能的质量保证完美地证明了这一点。

就其本身而言,不存在人工智能开发人员或人工智能测试人员。所有工作都是由负责ML生命周期各个阶段的数据科学家和ML工程师完成的。与软件开发相比,人工智能工程依赖于“测试最佳实践”,而不是每个人都遵循的具体规则。

但是,人工智能和机器学习的QA正在快速发展。医疗保健、银行和金融、保险、物流和通信等安全且对数据敏感的行业需要不断测试和微调AI/ML解决方案,以确保其数据、基础设施和关键系统受到保护。

本文是我对如何进行AI / ML的质量检查的看法。正如我发现的那样,我在普罗维克斯的同事们对这个过程有自己的看法。这只能证明,对于所有想测试人工智能的人来说,还有多少工作要做。

机器学习模型的生命周期与检验

几句基础知识。

图片由作者提供

从质量检查的角度来看,机器学习模型的生命周期包括三个主要阶段:
1、准备。收集、过滤和整理数据,以便于后期处理和分析。
2、实验。功能经过精心设计,模型经过设计、构建、训练、测试和微调,为部署做准备。
3、部署。一旦对模型进行了打包和验证,就可以将其部署到生产环境中供客户使用。对模型进行监控,保证了模型的高精度和可靠性。
这意味着在生命周期的每个阶段都要测试非常不同的属性,从数据和特性到模型组件和人工智能解决方案本身。这给质量检查工程师带来了一个重大挑战。

数据测试

我们不能低估干净、准备充分的数据在机器学习中的重要性。俗话说“垃圾进,垃圾出”,如果将低级数据推入高质量的机器学习模型中,它将提供低价结果,反之亦然。

例如,在2016年,加州大学伯克利分校(UC Berkeley)的一组研究人员就得出结论说,“ [检测和修复脏数据]失败可能会导致ML模型的分析不准确且决策不可靠。”

我们在普罗维克斯证明了同样的事情。

我们的一个客户GoCheck Kids希望通过机器学习增强其儿科照片筛选应用程序的图像分类组件。在回顾视觉筛选模型的结果后,发现用于训练模型的相当一部分图像必须重新标记。完成后,团队发现ML模型的召回率提高了3倍,同时保持了它的精确性。

那么,可以测试什么呢?

我们可以将数据集作为一个整体进行测试,并单独测试每个数据点。

从数据质量的角度来看,检查重复、缺少值、语法错误、格式错误和语义错误非常重要。如果要检测统计质量问题,则应在数据中查找异常和异常值。

但是请记住,检查重复、缺少值、语法错误、格式错误和语义错误非常重要一般来说,数据测试仍然是手工完成的。

需要提及的一些工具: Deequ、GreatExpectations、Tensorflow数据验证。

注:我在这里详细介绍了数据质量检查的过程-数据质量突出显示系统。

模型测试

ML模型测试的主要原则是将模型视为一个应用程序,包括它的所有特性、输入和输出。从概念上讲,如果您以这种方式查看模型,则测试它们会容易得多。

任何应用程序的测试都从单元测试开始。您应该具有许多高质量的单元测试,以涵盖尽可能多的场景。尽管许多ML工程师并没有遵循这种最佳实践,但是我认为单元测试对于确保模型的高精度和高性能至关重要。

数据集测试是模型测试的关键阶段。您的首要任务是确保训练集和测试集在统计上是等效的;也就是说,集合之间的差异小于被认为有意义的差异,并且统计上落在等价边界指示的区间内。下图显示了统计上不等价的数据集。

数据也很重要,因为应该使用它来编写用例。基本上,数据集表示用于检查模型健壮性的测试用例。例如,根据您的模型和用例,您可以使用Golden UAT数据集、安全性数据集、生产流量重播数据集、回归数据集、偏差数据集、边缘情况数据集等。

您还应该测试功能。具体来说,您的目标是找出哪些特性对模型生成预测的影响最大。如果管线中有多个模型并且必须完成模型以选择更准确的模型,则功能测试至关重要。

模型必须经过安全性测试。这本身就是一个广泛的话题,我只会稍微介绍一下。与其他软件一样,模型也可以被病毒(所谓的线虫)感染。线虫可能导致模型错误识别对象并生成错误的预测。例如,被线虫感染的模型可以“看到”长臂猿,而不是熊猫图像中的熊猫。


最后,您需要测试模型是否存在偏差。偏差是对一个想法或事物的倾向或偏见。它以多种形式存在,但是从模型测试的角度来看,最有影响力的偏差类型是:

  • 选择偏差—选择数据的方式使样本不能反映真实世界的分布。
  • 框架偏见—信息的呈现方式会改变人们对等价选择问题的决策方式。
  • 系统偏差—由各种因素导致的值一致且可重复的数值误差,这些因素使数据向特定方向倾斜。
  • 个人感知偏见—倾向于关注(并为之分配更多价值)确认某人的先入之见的信息的倾向。

仔细检查异常数据和密切检查缺失值以在偏差和方差之间找到一个平衡点是至关重要的。尽量避免过度拟合和拟合不足,并尽可能客观地过滤数据。
不过,消除数据和模型中的偏差比说起来容易做起来难。

首先,作为人类,我们天生就有偏见,没有一个人是百分之百客观的。其次,偏差测试几乎都是手动完成的,从长远来看,这只会给数据增加更多的错误。

幸运的是,有几种服务可以帮助您更有效地处理偏见。一个是Pymetrics,一个面向通用ML应用程序的开源偏差测试工具。另一个是Amazon SageMaker Clarify,这是一个完全管理的服务,它使开发人员更容易查看他们的培训数据和模型,以识别和限制偏差并解释预测。


Amazon Sagemaker Clarify于2020年12月在AWS re:Invent 2020上宣布。要断言该服务的有效性和实用性还为时过早,但如果AWS能够兑现承诺,SageMaker Clarify可以彻底改变偏差测试的方式。

在复杂的IT系统中测试模型

机器学习模型通常被设计和构建为离线解决方案。也就是说,它们是由ML工程师开发的,他们并不十分担心这些模型在实际应用中的使用。

随着可重现的机器学习,MLOps和功能存储的发展,这种情况正在快速变化,这对于QA专业人员来说是非常棒的。由于现在可以将ML模型作为综合IT系统的一部分进行开发(和测试),因此测试人员可以更快,更轻松地进入该领域。

当模型在IT系统中作为整个应用程序或解决方案的一部分进行测试时,可以应用QA工程师习惯的所有类型的测试。例如,您可以运行集成测试以检查所有组件是否均按预期工作。或者,您可以进行系统测试,以确保整个系统是否按预期工作。

此外,编写集成测试以测试API(可以使用Postman),在系统中运行不正确的数据集来检查容错能力,以及检查与不同版本环境的兼容性,这一点很重要。

系统测试应该涵盖配置测试、安全性测试、性能测试和UI测试之类的领域。它们既可以手动执行,也可以自动执行。

简单地说,在这个阶段,您将测试整个系统和系统中的模型—您不会将任何模型视为系统的脱机组件

部署到生产后进行测试

软件测试和ML测试之间的主要区别在于,AI / ML解决方案(以及ML模型作为这些解决方案的一部分)在部署到生产环境后必须重复进行测试。

当您部署模型时,它将继续发展和降级。许多模型在生产中会降级,实际上,它们曾经反映出的情况已经发生了变化。这些过程可能会受到以下因素的影响:

  • 改变客户习惯。
  •  自然异常和灾难。
  • 一次性事件。

换句话说,随着模型处理的数据发生变化,其准确性和性能也会发生变化。此过程称为数据漂移。

为了确保跟踪模型降级,您应该有一个日志记录和监视系统。当模型的准确性和性能受数据(其他因素)影响时,它将帮助您确定关键点,并主动调整模型。

为了补充您在测试方面的工作,您应该运行A / B测试以比较不同的模型,选择可以部署到生产中的champion和challenger模型。当然,应该有一个自动化的连续测试系统来顺利,高效地完成所有这些工作。

结论

机器学习的质量保证仍处于起步阶段。对于愿意探索AI和ML提供的东西(而且他们提供了很多东西)的QA工程师来说,这是一件好事。

在本文中,我讨论了机器学习质量保证的主要阶段,并简要介绍了质量保证进入该领域需要了解的内容。到目前为止,我已经总结了自己的经验,非常感谢社区的反馈。(我很确定我在这里提到的一些最佳做法值得商)。)

总结一下,主要的收获是:

  • 专注于数据。您必须确保用于训练和测试模型的数据是高质量的。为此,请确保对其进行可视化并检查是否存在异常,异常值和统计问题。
  • 看一下您的模型,就好像它是一个普通的应用程序一样。作为复杂IT系统的一部分,测试您的AI解决方案并测试您的模型。也就是说,运行通常会测试软件的所有类型的测试,但要记住偏差和适合性。
  • 部署后继续测试模型。考虑数据漂移和其他可能影响模型性能的因素。添加监视和日志记录以跟踪更改;使用适当的CI / CD可以快速测试,调整和部署新模型。

我希望本文能帮助您开始ML测试的职业。请在评论部分分享您的反馈和想法。

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:梁菲 来源: DZone
相关推荐

2019-10-08 05:54:07

人工智能质量保证AI

2021-04-16 09:53:45

人工智能机器学习深度学习

2020-09-07 11:28:09

人工智能机器学习AI

2019-03-06 09:00:00

机器学习人工智能

2015-10-10 09:32:24

机器学习人工智能

2017-03-18 16:28:40

人工智能机器学习深度学习

2021-12-01 22:55:45

人工智能机器学习深度学习

2022-06-01 14:33:59

人工智能交通运输机器学习

2021-02-26 10:02:13

人工智能深度学习机器学习

2020-10-16 10:19:10

智能

2017-04-18 15:49:24

人工智能机器学习数据

2016-12-05 14:37:25

人工智能机器学习

2023-10-12 15:55:42

人工智能机器学习

2021-10-08 10:26:37

人工智能机器学习AI

2021-03-30 13:45:00

人工智能

2017-11-29 12:01:03

AWS机器学习人工智能

2017-11-17 08:17:48

2020-12-28 14:59:46

人工智能机器学习物联网

2019-09-09 10:00:09

人工智能机器学习技术

2023-01-17 13:55:39

点赞
收藏

51CTO技术栈公众号