【产品经理必看】人工智能产品开发流程

人工智能
后台-插件-广告管理-内容页头部广告(手机)

1996年的时候,SPSS,戴姆勒-克莱斯勒和NCR公司发起共同成立了一个兴趣小组,目的是为了建立数据挖掘方法和过程的标准。

1999年正式提炼出了业内最早的设计流程CRISP-DM(Cross-Industry Standard Process forData Mining,跨行业数据挖掘标准流程)。

这个流程确定了一个数据挖掘项目的生命周期,包括以下六个阶段:

  • 商业理解:了解进行数据挖掘的业务原因和目标,细节应落实到算法各项指标的任务。

  • 数据理解:深入了解可用于挖掘的数据。

  • 数据准备:对待挖掘数据进行合并,汇总,排序,样本选取等操作。

  • 建立模型:根据前期准备的(训练、测试)数据选取合适的模型。

  • 模型评估:使用在商业理解阶段设立的业务成功标准对模型进行评估。

  • 结果部署:使用挖掘后的结果提升业务的过程。

随着时代发展,人工智能项目开发的基本流程在CRISP-DM基础上推陈出新,常被划分为四个阶段:需求分析、数据采集&处理、模型训练&评估、模型测试&部署

需求分析

人工智能项目需求分析是确定我们开发的项目需要做一些什么

经过调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求。是确定一个AI解决方案所需的功能和性能的过程。

关键步骤包括:

  1. 确定业务需求:了解需要解决哪些问题和实现哪些目标。如,需要开发一个能够自动分类文本的AI系统,需要一个能够识别图像并进行自动标记的系统。

  2. 收集数据: AI需求分析中,数据至关重要,AI系统的性能很大程度取决于它所依赖的数据。因此,需要确定哪些数据是必要的以及应该具有的属性和格式。

  3. 确定功能需求:明确了业务需求和数据需求,还需要确定AI系统应该具有哪些功能,例如自动化分类、预测、推荐等。

  4. 确定性能需求:确定AI系统所需功能后,还要确定性能指标,如准确性、召回率、响应时间等。

  5. 确定技术需求:最后,要确定AI系统的技术需求,如应该使用哪种算法、应该使用哪种编程语言和开发框架等。

需求分析的过程中,要考虑实际的业务情况和数据情况,不单纯追求技术上的完美。需求分析是一个不断迭代的过程,要不断地收集反馈并对需求进行更新和调整。

这个过程中,还要把需求进行分析整理,确认形成完整、清晰、规范的文档。

数据采集&处理

数据是人工智能项目的首要材料之一,不可或缺,获得良好数据是处理好数据的第一步,没有质量保证的数据,难以达到数据处理结果需要的标准

数据要求根据项目最终的要求而定,比如:图像处理项目,模型需要图像数据,什么样的图像数据是好数据?利于模型学习?当然是对现实物体还原度越高越好,可以从图像的“色彩三要素”和“图像像素值"来判断。

数据来源主要分为通用数据和行业数据两大类。

好的数据来源,能拿到和使用场景匹配度最高的数据。现场实地采集数据这么做非常有必要。因为采集数据的过程中,稍微不注意的一些细节就能将模型的优势抵消。

比如:采集数据是从互联网上爬下来的,数据质量可能就不会太好。如果去实际工作环境,室内或室外固定场景,采集到不同时间、日期、天气情况下的数据。

后面做法采集到的数据资源,就算使用一般的模型,也能得到较好的结果。

反之,如果前种方法采集的数据,由于和实际应用场景的数据差异过大,就算使用SOTA模型,也很难达到预期的效果。

当然,再好的数据,采集回来也要做处理,数据处理的任务是过滤掉不符合要求的一些数据,不符合要求数据有3类:残缺数据、错误数据和重复数据

  • 残缺数据:指数据不完整,如供应商名称,客户区域信息有一部分缺失

  • 错误数据:指数据值是错的、或编码、格式是错误的

  • 重复数据:是数据表中存在相同的数据

对于这3类数据要求,数据处理完之后要从完整性、一致性和准确性三个方面评估数据是否达到预期设定质量要求。

处理过的数据接下来要进行数据标注,数据标注在整个流程当中非常重要的一环。数据标注前需要确定以下内容:

  1. 确定标注标准:这是保证数据质量关键的一步,确保有一个可以参考的标准。确定标准标准有两种方式,一设置标注样例,或是用模版,如颜色的标准底色卡。

  2. 对不确定的数据设置统一处理方式:如统一器用或是统一进行标注。并对标注形式进行确认,如定制能够识别问句的文本分类模型,这样可以对句子进行零或一的标注,一代表问号,零代表不是问号。

  3. 统一标注工具:对标注工具进行选择。

标注过程是为了构建一个像人类一样的人工智能模型,需要大量的数据,对这些数据针对特定用例进行适当的分类和标注,数据标注质量会直接影响网络性能质量。

模型训练&评估

数据是食材,模型是锅,好食材配好锅,才能做好菜。

模型发展是深度学习技术发展中重要的一环,早期卷积神经网络模型LeNet,后来的AlexNet,最新的Transformer模型,模型的发展都有一个共同的目标:

更高的mAp值、更高的训练效率、更快的推理速度、更大的平台适应性。

工程界和学术界对模型新技术发展的关注度有差异,一个是纯学术研究,一个落地应用。

学术界做研究时,部分条件是人为固定的,只需要模型的设计训练提高性能和效率。,轻微提升,就可以发表一篇论文,甚至在顶层期刊。

工程界每个具体的项目要求都不一样,不同项目的数据也是大相径庭,所有条件都是不确定的,设备、数据、平台、外部环境等。

这时,同样的模型在不同条件下会出现不同的结果,而且弱的模型效果有可能会好过优秀模型效果,因为模型再好,变量带来负面影响太多时,模型一样搞不动。

模型训练最考验实战经验的,比如主干模型、微调,选择优化方法、是否进行多阶段训练、是否对图像数据进行多尺度训练、如何提高训练速度等,都和具体的设备类型相关。

总之,为了获得一个满意的模型,需要反复调整算法参数和数据集,不断评估训练生成的模型。

有经验的训练人员训练模型时,通常先做小批量的数据训练,用小批量数据验证模型是否合适。当确定模型没有问题了,再加载大批量的数据训练。

模型评估是和模型训练伴随而行的,可以说训练一开始,评估也随之开始。模型训练负责如何把模型训练好,训练到什么程度才算合适模型评估说了算。

模型评估一般可以通过验证集和训练集的损失或精度的差距来做判断,常用模型评估指标有:准确率、精确率、召回率等。

模型测试&部署

模型测试是项目交付前的最后一次试验,测试的目的是和目标指标做对比,如精度、速度等指标。

所以,测试数据最好从项目方实际工作场景采集,不仅质量要接近真实场景数据,数量也要达到一定量级,测试结果才能更接近真实场景下的结果。

大规模数据测试有2种情况:

  • 测试结果和指标相差甚远:即模型测试出的指标比项目方要求的指标低。这时要对模型或样本数据调整后重新训练模型。

  • 模型测试时指标急速下降:这种情况和测试与训练、验证数据差距太大有关,即训练集、验证集数据差异不大,如都是互联网获得的数据,而测试集数据来自真实场景数据,数据差异造成测试集结果指标急速下降。这时,需要换掉训练集、验证集数据,也从真实场景采集。

最好的情况是训练集、验证集、测试集来自统一场景数据,测试结果达到满意的效果,这时部署后,通常不会出现算法指标问题。

模型部署是把模型部署到真实的业务场景当中去,意义在于处理预测新数据,为公司提供数据决策或者对接其他需求部门提供模型支持。这是整个人工智能开发当中最后一部分。

模型部署包括不同编程语言的部署,如C/C++、JAVA、Python,语言特性不同部署时方法也不一样。

整个部署需要考虑的因素还是有很多的。比如是部署在移动端还是服务器端,部署的环境选择CPU还是其他,以及内存要进行如何分配。

部署设备可以分为PC端(个人电脑)、Server端(服务器)、Mobil端(移动设置:iOS,Android)、IOT端(传感器、板卡:Android),各种部署的方法也是大同小异。

新上模型一般会测试能够返回正常数据,返回数据是否可信。确定没问题,再进行小流量测试观察一天,如果效果通过再进一步扩大流量。

一段时间效果都没问题时,才会全扩或近百分之一百流量。

后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。