一、人工智能(AI)的目标是增强智能(IA),而不是替代人类
二、应对软件架构分而治之带来集成的挑战,探索智能的连接
三、从智能连接入手探索在软件架构中应用人工智能
四、总结
因为 AlphaGo 的出现,过去的 2016 年可谓是人工智能元年。记得当时我们正在苏州封闭研发The Platform,工作之余讨论到人机对战的真正意义,并不在于技术上的突破,而在于对人们固有知识的影响,人工智能的应用会如雨后春笋般诞生,以后没有人工智能的软件你都不好意思开口了。
大家都在问,自己的工作与人工智能有什么关系,如何在自己的工作中应用人工智能,如何在软件中植入人工智能的基因,使用人工智能应该从何处入手,学习人工智能应该从哪里开始,更深层次的问题是人工智能能否代替人类,作为一个程序员,在人工智能能否代替人类写程序的问题上,根据我们团队的实践介绍一下如何在软件中应用人工智能。
一、人工智能(AI)的目标是增强智能(IA),而不是替代人类
人工智能并不是一个新概念,40年代维纳的《控制论——关于在动物和机器中控制和通讯的科学》就是人工智能。但早年的人工智能受限于计算能力,更多在解决模型的计算速度和精度上,近年来随着云计算技术的发展,计算能力提高了,随着大数据的发展,更复杂的计算问题可以用更多的数据进行修正,人工智能的可用性大大提高。但是我们从目前人工智能应用的情况可以看到,人工智能并不能替代人类,例如在图像识别、语音方面的突破,仅仅是让机器更加聪明而已,还远远没有达到人类的程度,作为人类的智能助手更加合适。
理清人工智能、机器学习、深度学习、统计等基本概念之间的关系
把人工智能的方法应用到软件中,我们先梳理清楚几个概念之间的关系:人工智能(Artificial Intelligence)是一个大的概念,是让机器像人一样思考甚至超越人类;而机器学习(Machine Learning)是实现人工智能的一种方法,机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测;深度学习(Deep learning)又是机器学习的一种实现方式,他是模拟人神经 络的方式,用更多的层数,更多的神经元,然后给系统输入海量的数据,来训练 络。而统计学是机器学习和神经 络的一种基础知识,从传统分工来看,统计学一般是数学、统计等专业研究的方向,而机器学习是计算机科学的研究方向,但是目前大家的研究成果越来越殊途同归,有统计学的大师就认为统计实际上一直在从事机器学习的工作。
(3)系统的联动问题。当一个业务事件产生时,有很多相关联的系统都会需要作出关联性反映,例如一个航班延误,就会涉及机票的改签、酒店的改期、接车服务的改期、会议安排的变更、日程计划的变更。一般我们会设计一个事件中心,为各个系统开发出监听的程序,当事件到来时判断上下文信息,决定产生的动作。如果事先没有设定的规则,就无法产生联动,我们期待更加自动化的建立这种联动关系,让计算机智能的产生动作而不仅仅通过人为设置。
类似问题还有很多,我们期待能够更加智能的集成。
需要集成的部分不只是软件本身,软件过程也是一个复杂的集成/协作工作
分而治之的软件需要通过集成方式整体交付,软件的生产过程也是一个多人、多组织协作的过程,也需要集成。把软件看成是一个产品,产品就有策划、研发、运营和退出各个阶段,每个阶段可能由不同的人或组织完成。软件的研发阶段就是一个一个项目的实施过程,包括立项、执行和完工。这样的过程组织起来,就是一条软件生产的流水线。从早期瀑布式的软件研发,到后来敏捷研发过程、CMM,到目前风头正劲的DevOps,都是在解决软件生产流水线不同阶段的协作问题,敏捷针对软件定义、设计、构建(开发)阶段的协作,持续集成是构建(开发)与测试阶段的协作,持续交付是从定义阶段到部署(交付)阶段的协作。
三、从智能连接入手探索在软件架构中应用人工智能
从何处入手,探索人工智能在软件中的应用,是大家最关注的话题,这里我把普元在探索人工智能初期经历的几个案例,给大家做一个介绍。普元董事长刘亚东博士早年就从事神经 络的研究,他指出在目前并行计算等技术充分发展的今天,算法已经不是人工智能的瓶颈,应用人工智能需要有两个突破(1)找到人工智能应用的切入点(2)团队具备人工智能应用的思维。所以我们在应用人工智能的时候,不是成立一个专门的小组做研究,而是百花齐放的方式。了解普元的朋友会知道,普元的研发分为云计算&SOA、大数据、移动、工程效率与技术平台、产品支持中心几个团队,我们让每个团队从数据+连接方向上入手,各自探索人工智能在领域上的应用场景,通过找到切入点和初步实践,逐步建立团队的人工智能思维。其中云计算&SOA团队的方向是通过服务画像方式解决微服务的智能运维与智能匹配,大数据团队的方向是通过知识图谱实现数据自服务,移动团队的方向是UI的智能化开发,工程效率与技术平台团队的方向是深度学习在流程与智能制造的应用。由于篇幅有限,这里我把普元大数据团队和移动团队所做的工作做一个介绍。
案例一:基于知识图谱,实现数据的自服务能力
先简单介绍一下背景:大家经常会听到有人问我们有哪些数据,这些数据在哪里,如何获取数据的问题,能否建立一个平台,让我们象百度搜索一样,根据我们的知识(业务术语)找到相关的数据,提交申请,得到数据,这就是一个获取数据的自助服务。
以往数据在哪里往往通过人工梳理完成,我们希望能够自动化一些,为专家提供一个智能的助手,这里的工作分为三部分:
(2)梳理技术元数据。整理各个系统内部数据,以及数据之间的关系,形成数据地图。这里的难度是数据之间的关系,例如数据的血缘关系、影响度关系、关联关系、主数据关系等,这里我们采用字段特征的相关性、数据处理逻辑的词法/语法分析等手段,配合强化学习来完成,前面列举的查找外键示例,就是一部分;
(3)建立知识图谱与技术元数据之间的关系,这里就要通过分析界面/服务与代码之间的关联,建立起映射关系。最终效果就是,使用数据搜索,录入希望查找的业务术语,得到相关结果,查看样例数据,如果是需要的数据,提交使用申请,如果不是,继续根据相关知识进行数据探索。提供数据自服务能力,就是在应用的设计师、数据科学家或者业务分析师与数据之间建立起连接,我们的团队就是从连接的思路出发,找到了人工智能的切入点。实际上,数据自服务包含有找、获、用等众多环节,我这里说的是找的环节如何实现,这种找的方法,也不可能100%准确,还需要专家进行调整,以及通过强化学习等手段不断修正,可以看出,应用人工智能也是一个渐进完善的过程。
案例二:通过深度学习,实现移动UI的智能化开发
移动UI的智能化开发,是我们移动团队应用人工智能的第一个尝试,现在看来,就是在UI设计师与开发工程师之间建立连接。大家会发现,设计师的设计在变成代码实现时总会有偏差,即使一个像素的差异,也会影响界面的效果,以往我们采取不同业务模板的方式,建立一些规范对设计和开发做约束,后来移动团队觉得,可以用深度学习的方式做一些尝试,寻找不同的界面设计效果,首先通过数据标签方式确定页面的风格,再通过图像片段的方式学习和识别设计稿中的组件,最终经过多次的处理,变成一个树状的结构,把这个树状结构与代码进行映射,就产生了和设计图一致的代码。
这个案例中,基于图片的神经 络学习是一个关键技术,但是如果单纯使用这个技术,计算量会无法承受,所以我们将处理过程分成了几个阶段,每个阶段进行分类,每个阶段都可以配合强化学习的方式,由人工指定策略,指导计算机的学习,提高了工程化的能力(类似做法在深蓝对阵卡斯帕罗夫的时候就有应用,有一位特级大师会指导深蓝当前的策略,例如进攻还是防守,具体招数由深蓝决定)。
上述两个案例中,我们首先在各个领域中找到可能的切入点,针对不同场景使用了不同的方案,并不是都采用了深度学习/神经 络的方法。我们没有首先从Tensorflow等框架学起,而是在结构化、半结构化优先使用统计方法,非结构化数据再使用深度学习,是用业务驱动的方式逐步推进,有效的避免了“深度泛滥”。
四、总结
未来的软件必将是人工智能的软件,但人工智能是通过技术手段实现智能增强,帮助普通人迅速具备部分专家的技能,帮助专家减少重复性的劳动,探索新的知识,而不是取代人。应用人工智能,应该在数据+连接的模式下,从智能的集成入手,探索人工智能在软件中的应用。而这种探索,既包括传统利用规则实现的机械智能,也包括利用统计学和深度学习方法支撑的实现意图智能,还有创造意图/寻找新知识的探索,而统计学方法往往用在结构化数据和半结构化的数据中,深度学习往往要利用非结构化数据。总之,人工智能是计算机科学、统计学、知识工程、领域知识的一个交叉学科,不能仅仅站在某个角度去理解和尝试,正所谓“君子不群”。
相关资源:一店通服装店POS收银系统软件3.0破解版-管理软件其他资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!