人工智能开发全流程解析
人工智能应用开发的全流程大致包括开发态流程和运行态流程。开发态流程是对数据源不断地进行处理并得到人工智能应用的过程;而运行态流程相对简单,主要是将人工智能应用部署起来使用的过程。当人工智能应用在运行态推理效果不好时需要将推理数据返回给开发态进行进一步迭代调优。 在开发态流程中,每个步骤都会基于一定的处理逻辑对输入数据进行处理,并得到输出数据(中间结果或最终结果),同时也可能会产生模型或知识,或其他一些可能的元信息文件(如配置项文件等)。在处理的过程中,可能会接收外部输入(如用户的输人、配置、其他外部环境的输入等)。每个处理步骤的处理逻辑可以是平台内置的处理逻辑,也可以是开发者自定义的处理逻辑(如开发者利用平台的开发调试环境开发的一套代码)。当数据源经过一系列处理之后,会得到最终的结果数据(如图像识别精度等报表数据)。在这一系列的处理步骤中,可能会出现反复,当我们对某个处理步骤输出的数据不满意时,可以重新修正输入数据或者处理逻辑。 上述一系列的处理步骤结束后,中间所产生的一些模型、知识或者配置可以一起编排成一个人工智能应用。这个人工智能应用就是开发态输出的主要成果。紧接着就进入运行态流程,将人工智能应用部署为云上的一个推理服务实例,或者打包为个SDK,业务客户端就可以调用其接口,发送请求并得到推理结果。同时,平台在被用户授权的情况下,可以对推理数据和结果进行监测,一旦发现问题,可以将推理数据重新接入开发态的数据源,进行下一步迭代开发,并生成新的人工智能应用。由此可见,人工智能应用的开发流程是一个持续选代并且不断优化的过程,如下图所示。 从抽象的角度看,下图所表达的是一个数据流图,该数据流图有几个常用的核心抽象概念。
(1)数据源。数据源指人工智能应用开发过程的主要输入,可以是原始的文件类型的数据(如在第2章中用户所需要离线上传的原始图像数据),也可以是来自某个远程服务的数据流(强化学习经常会用到这种数据源形式,还可以是人工输入的信息。数据源的存储方式多种多样,可以是对象存储,也可以是大数据系统,还可以是客户的业务系统等。 (2)处理。处理指人工智能应用开发全流程中的每个具体环节,根据输入数据和处理逻辑得到输出数据。常用的处理操作包括但不限于数据标注、模型训练、性能监测等。每个操作都有执行历史,保证过程可溯源。 (3)实体对象。实体对象指每个处理环节之间流动的数据内容。数据集、算法或规则、模型或知识应用都是典型的实体对象。以某证件类OCR开发全流程为例,上述人工智能应用开发全流程如下图所示。
可以看出,该流程基本满足图中的各类抽象。在该OCR开发全流程中,需要通过数据采集模块获取原始数据(即证件类的原始图像),考虑到证件类图像中证件位置可能倾斜,因此需要首先对证件的四个顶点进行标注然后再进行数据处理,将图像中证件位置矫正。紧接着,一方面,可以继续标注证件图像中文字框和文字类别,用于文字框检测和文字识别模型的训练;另一方面,可以根据证件四个顶点的标注信息训练四点标注模型。当这三个模型(矫正、文字框检测和文字识别模型)分别训练完成后,可以通过编排生成一个OCR应用,并经过评估之后部署起来使用。在运行态如果有推理不好的数据,则需要通过应用维护模块将其返回开发态进行进一步迭代和优化。在该流程中,数据源包括开发态数据源、运行态数据源、人工输入(如算法编写、数据标注信息、训练超参配置、模型评估检查等输入信息);处理包括数据采集、数据标注、数据处理、算法选择和开发、模型训练、模型评估和调优、应用生成、应用评估、应用发布和部署、应用维护;实体对象包括数据集、算法、模型、最终生成的应用。 整体而言,如果解决方案已经确定,那么如图3-3所示,根据处理操作所属范围的不同,可以将人工智能应用的开发流程分为:①数据准备子流程(包含数据采集、数据处理、数据标注等);②算法选择和开发子流程;③模型训练子流程;④模型评估和调优子流程;⑤应用生成、评估和发布子流程;⑥应用维护子流程。由于应用维护子流程会涉及运行态数据回流到开发态,因此这几个子流程之间就形成了一个人工智能闭环。
人工智能之专家系统探究3:专家系统的实现流程
专家系统的开发是一项综合技术,实现流程里不仅需要开发人员还需要领域专家的关键性作用,制定合适的实现流程,才能发掘出双方应有的最大价值。一个成功的专家系统的开发需要知识工程师和领域专家的密切配合和坚持不懈地努力。
参考图
1、建造专家系统的步骤
根据软件工程的生命周期方法,一个实用专家系统的开发过程可类同一般软件系统开发过程分为认识、概念化、形式化、实现和测试等阶段。
(1)认识阶段
知识工程师与领域专家合作,对领域问题进行需求分析。包括认识系统需要处理的问题范围、类型和各种重要特征、预期的效益等,并确定系统开发所需的资源、人员、经费和进度等。
(2)概念化阶段
把问题求解所需要的专门知识概念化,确定概念之间的关系,并对任务进行划分,确定求解问题的控制流程和约束条件。
(3)形式化阶段
把已整理的概念、概念之间的关系和领域专门知识用适合于计算机表示和处理的形式进行描述和表示,并选择合适的系统结构,确定数据结构、推理规则和有关控制策略,建立起问题求解模型。
(4)实现阶段。
选择适当的程序设计语言或专家系统工具建立可执行的原型系统。
(5)测试阶段
通过运行大量的实例,检测原型系统的正确性及系统性能。通过测试原型系统,对反馈信息进行分析,进而进行必要的修改,包括重新认识问题,建立新的概念或修改概念之间的联系、完善知识表示与组织形式、丰富知识厍的内容、改进推理方法等。
专家系统的这一开发过程,各阶段目标明确,逐级深化,概括如下:
认识>概念化>形式化>实现>测试
2、原型系统与快速原型法
由于领域专家的知识是长期积累的经验和专门知识,因此,知识工程师不可能在短时间内获得所需要的全部专家知识,并把它们按知识表示方式和知识库的结构要求存人知识库中。也就是说,决定专家系统性能的专门知识是逐步增加和不断完善的,这就需要采用增量式开发方法,即通过对基本功能的逐步扩大来完善系统,专家系统具有需要经常修改和完善的知识库并与相对稳定的推理机相分离的结构特点,从而适应了这种增量式开发方法。增量式开发可能保证对基本功能的有效验证,有利于在整个开发过程中得到一系列功能日趋完善的原型系统。
根据系统的复杂程度和实用性,原型系统一般可分成以下5种。
(1)演示原型。
大多数专家系统都开始于一个演示原型,它是仅能解决少量问题的一个演示型系统。演示原型主要有两个作用,一是确信人工智能和专家系统技术能有效地用于所要解决的问题;二是测定问题的定义,范围以及领域知识的表示是否正确。一个典型的基于规则的大型专家系统,其演示原型一般仅有5-100条规则,能充分地执行2-3个测试实例。
(2)研究原型
研究原型是能运行多个测试实例的原型系统,这些测试实例能显示领域问题的重要特点。大型专家系统的研究原型一般具有00~500条规则。
(3)领域原型
通过改进研究原型而获得领域原型,领域原型系统运行可靠,具有比较流畅和友善的用户接口,能基本满足用户的需要。大型专家系统的领域原型一般具有50-1000条规则,能能很好地执行许多测试实例。
(4)产品原型
产品原型是已经通过广泛的领域问题测试的原型系统,并往往用一种效率更高的语言或专家系统工具来实现,以增加推理的速度和减少存储空间。大型专家系统的产品原型一般具有500-1500条规则,求解领域问题准确快速,工作可靠。
(5)商品化系统
商品化系统是已投人商品市场实际销售和运行的系统,并能适应用户市场的需要。
利用专家系统技术和专家系统的开发工具尽快地建立专家系统的演示原型,然后进行修改、充实和完善。这也就是专家系统开发的快速原型法。虽然演示原型比较简单,只能解决少量的领域问题,也不具备许多辅助功能。但是,通过演示原型的运行和测试可以实际验证系统方案的可行性和有效性,检验应用问题的定义范围,从而在系统设计的最初阶段就能避免较大的原则性错误。而且可以提高领域专家的兴趣和信心,增强与领域专家的合作。