【自有技术大讲堂】数据驱动的AI(系列3):AI模型部署中的数据管理
一、AI技术债务的定义与分析
目前机器学习中已引入了技术债务(Technical debt)的概念. 技术债务的概念最初来自软件工程领域,人们经常发现推动快速开发软件会产生必须在以后偿还的长期维护成本,而且如果不加以解决,随着时间的推移,债务会积累的越来越多。为了快速开发软件,忍受债务的积累是一种有用的策略,但我们应该谨慎选择何时何地这样做——并为以后如何偿还债务制定一个可靠的计划。造成技术债务的原因包括但不限于功能超预定义范围、糟糕的文档、缺乏单元测试和系统测试。可以偿还技术债务的动作包括重构、改进文档以及创建单元测试和集成测试等。
机器学习和人工智能系统同样具有产生大量技术债务的特殊能力,原因是机器学习系统具有传统软件系统的所有品质,因为它们当然是建立在代码之上的。但它们还存在第二层问题,因为这些系统的行为无法提前准确指定。相反,它们的行为由模型算法的特定选择、超参数设置,当然还有所使用的训练数据隐含地定义。因此,举个例子,这与为排序算法编写单元测试不同,该排序算法的前置条件和后置条件已为任何可能的输入预先定义好,面对实践中可能呈现的大量输入数据,要指定 AI系统的“正确”行为应该是什么是非常困难的。这使得重构、文档和严格测试等事情变得具有挑战性。
二、数据是AI系统中最大的潜在技术债务来源
从以数据为中心的人工智能的角度来看,我们甚至可以证明数据本身是AI系统中最大的潜在技术债务来源。有两种方法可以看出这是真的。首先让我们典型生产级 AI 系统的整体组件:
需要注意的是 AI算法 代码——我们倾向于认为很酷的部分– 实际上是整个系统的一小部分,就整体代码而言,可能是 5% 或更少。数据收集、数据验证和特征提取等构成了整个系统更大的部分,并且显然都是以数据为中心的方法的核心。但是,即使是有助于部署模型以在实时系统的上下文中进行预测的典型服务基础设施,也需要广泛的数据管道(pipeline),以确保在预测时向模型提供所有相关的准确的信息。任何称职的AI 数据工程师都会把数据分布管控看做是重中之重。总的来说,这意味着我们整个系统复杂性的 70% 与数据相关——数据处理、数据维护、和分布管控——这些任务可以连接多个系统或子系统。所以它是技术债务的主要来源。
还有另一种可能更重要的方法可以看出数据可能是意外巨额技术债务的来源。这是因为数据定义了我们模型的行为,并以这种方式扮演了代码的角色。如果我们想要一个视觉模型在识别昆虫方面做得很好,或者一个音频模型来识别一个口头命令,或者一个电影推荐模型来帮助用户选择周五晚上的娱乐,我们模型的能力和行为将是主要由我们收集和用于训练的数据来定义。
随着时间的推移,从业者发现收集和训练更大的数据集用于模型训练是有益的。近年来,许多模型的数据集大小的增长速度呈指数级增长。值得考虑为什么这是有必要的,因为在很多情况下,获取越来越多的数据实际上在统计上没有用。例如,如果我们想估计给定硬币正面朝上的概率,经典统计告诉我们额外随机轨迹的价值会迅速减少。即使对于像民意调查这样的高风险信息收集,从统计的角度来看,收集超过几千个回复也很少有用。那么,为什么 AI 人员要花费如此多的时间、精力和计算来收集可能包含亿万个训练示例的数据集呢?
答案是我们希望我们的模型在各种情况下表现良好,并且更大的数据集很有用,因为它们具有更大的多样性。这使我们的模型能够更多地了解罕见或异常情况(尤其是长尾化制造业缺陷形态),以及它们在其中应该如何表现。事实上,当我们谈论大型数据集整体上提高模型准确性时,这通常是一种最为方便的方法,可以说我们正在提高模型对困难、罕见或不寻常样例的良好预测能力。简单的情况几乎总是已经得到很好的处理。
这意味着,当我们增加数据集的大小时——在许多情况下,这再次以指数速度发生——我们这样做是因为我们希望增加AI系统的适用范围。这意味着我们现在有更广泛的系统行为来测试、监控和验证,但是,如果不注意这些行为,就会变成无偿的,并且会加重技术债务。
三、如何缓解与偿还技术债务-数据
上文提到的技术债务的来源似乎听起来很难避免,但我们可以做一些事情来偿还我们的机器学习和人工智能系统以数据为中心的技术债务。可以从三个地方开始:
-
审计和监控数据质量。 在许多情况下,手动检查数据仍然是关键步骤,因此我们可以了解数据中原本不明显的问题和问题。自动监控数据质量,甚至是基本的分布统计,也有助于尽快发现任何问题。
-
为数据集创建数据表。为训练数据创建标准化文档。我们将在下一篇文章中详细描述次方法。这个做法类似于为传统的基于代码的系统编写开发和交付文档,同样具有减少基于 AI 的技术债务的显着能力。
-
使用数据创建和应用压力测试。 部署在现实世界中的 AI 系统最终会遇到数据分布和输入与历史训练数据显着不同的情况。这意味着我们不能仅仅通过纯粹基于随机保留的训练数据来评估模型的传统做法来可靠地估计我们系统的性能。相反,我们应该创建各种特定的“压力测试”数据集,以帮助探索我们模型的局限性及其稳健性。包括一些罕见的CASE或基于专家知识创建基于特定用例的特定评估集也很有用。
公平地说,以上这些步骤需要大量工作,而且从组织的角度来看可能代价高昂。但从以数据为中心的角度来看,很明显,这些领域将对我们的 AI 系统的长期健康和可靠性产生最大影响。
四、高视科技AI平台数据管理相关介绍
高视科技的GoMind平台,提供针对不同工业机器视觉场景的数据集样本管理。提供基础的新增,更新,删除数据等功能,同时对同一数据集提供版本管理,方便记录数据集更新与数据对比。另外可视化提供数据查看界面,方便审计和监控各数据集分布。