e-works数字化企业网  »  文章频道  »  基础信息化  »  IT综合

人工智能与软件架构

2017/6/1    来源:CIO智库    作者:佚名      
关键字:人工智能  软件架构  
因为 AlphaGo 的出现,过去的 2016 年可谓是人工智能元年。记得当时我们正在苏州封闭研发The Platform,工作之余讨论到人机对战的真正意义,并不在于技术上的突破,而在于对人们固有知识的影响,人工智能的应用会如雨后春笋般诞生,以后没有人工智能的软件以后你都不好意思开口了。
    因为 AlphaGo 的出现,过去的 2016 年可谓是人工智能元年。记得当时我们正在苏州封闭研发The Platform,工作之余讨论到人机对战的真正意义,并不在于技术上的突破,而在于对人们固有知识的影响,人工智能的应用会如雨后春笋般诞生,以后没有人工智能的软件以后你都不好意思开口了。大家都在问,自己的工作与人工智能有什么关系,如何在自己的工作中应用人工智能,如何在软件中植入人工智能的基因,使用人工智能应该从何处入手,学习人工智能应该从哪里开始,更深层次的问题是人工智能能否代替人类,作为一个程序员,人工智能是否会代替人类写程序···这里根据我们团队的实践介绍一下如何在软件中应用人工智能。
 
    人工智能(AI)的目标是增强智能(IA),而不是替代人类
 
    人工智能并不是一个新概念,40年代维纳的《控制论——关于在动物和机器中控制和通讯的科学》就是人工智能。但早年的人工智能受限于计算能力,更多在解决模型的计算速度和精度上存在着诸多问题。近年来随着云计算技术的发展,计算机的计算能力提高了,同时随着大数据的发展,更复杂的计算问题可以用更多的数据进行修正,人工智能的可用性大大提高。但是我们从目前人工智能应用的情况可以看到,人工智能并不能替代人类,例如在图像识别、语音识别等方面的突破,仅仅是让机器更加聪明而已,还远远没有达到人类的程度,作为人类的智能助手更加合适。
 
    理清人工智能、机器学习、深度学习、统计等基本概念之间的关系
 
    把人工智能的方法应用到软件中,我们先梳理清楚几个概念之间的关系:
 
    人工智能(Artificial Intelligence)是一个大的概念,是让机器像人一样思考甚至超越人类;
 
    机器学习(Mechine Learning)是实现人工智能的一种方法,机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测;
 
    深度学习(Deep learning)又是机器学习的一种实现方式,他是模拟人神经网络的方式,用更多的层数,更多的神经元,然后给系统输入海量的数据,来训练网络;
 
    统计学是机器学习和神经网络的一种基础知识,从传统分工来看,统计学一般是数学、统计等专业研究的方向,而机器学习是计算机科学的研究方向,但是目前大家的研究成果越来越殊途同归,有统计学的大师就认为统计实际上一直在从事机器学习的工作。
 
    对于深度学习、统计的专家来说,他们更加关注于模型、算法等等,找到可以普适性解决问题的办法。而对于我们应用来说,具体的算法实现不需要我们考虑太多,而是找到适合的场景、合适的模型、匹配的算法,所以应用人工智能实际上是一个计算机、统计、知识工程、行业知识的一个交叉应用。在经常涉及到的应用中,我一般在处理结构化、半结构化数据时优先考虑传统统计学的方法,例如分类、数据相关性、回归等,而处理非结构化数据时(例如图像、视频、文本)优先考虑深度学习的方法,但这些方法也需要有统计学知识。所以,需要补课:线性代数、数理统计、Python,我觉得《机器学习实战》这书入门不错,上述几方面知识都介绍了。
 
    应用人工智能实现增强智能的三个层面
 
    应用人工智能的时候,人们会有一个误区,总是希望得到一个意想不到的结果,也就是希望探索出新知识。经常有人问我,得到的结果好像没有什么我不知道的,我说这就对了,因为你是专家,要是计算机得到的结果都是不可知的,你怎么能相信他?例如AlphaGo下的棋,绝大多数都是人类已知的,非常少非常少的情况下,下出一招另类,这已经是一个顶天星的水平了。很多人失望了,这还有啥意思,其实意义很大:
 
    (1)计算机可以让常人快速获得以往专家才能具备的知识
 
    例如有经验的客户经理,肯定非常了解客户的情况,谁是优质客户,谁需要什么产品等等,不需要计算机。但是通过用户画像等人工智能的手段,计算机可以让经验不够丰富的人,也具备了上述经验,这个做法价值就非常高,毕竟专家是少的;
 
    (2)帮助专家减少重复性的工作
 
    例如医生在做病理检测时,绝大多数没有生病的情况和有典型病理特征的情况,机器都可以提醒医生,节约医生的宝贵时间。如此看来,我们就会理解,人工智能不是替代人,而是给人类增加一个智能的助手,是增强智能(IA Intelligence Augmentation)。
 
    计算机作为一个智能助手,可以在不同层面和手段帮助我们,我把他分为机械智能、实现意图的智能和创造意图的智能三个方面:
 
    (1)机械智能
 
    我们目前从事的主要工作都是这个,事先设定规则(代码也是规则),让计算机完成大量重复计算,充分利用计算机的计算能力,替代人的手工劳动,这是一个以规则为核心的模式,而这些规则来自于人现有的知识;
 
    (2)实现意图智能
 
    人知道最终结果是什么,但是并不告诉计算机采用什么样的规则计算,通过大量数据训练计算机找到规则,然后再让计算机完成大量重复计算,计算机究竟找到的规则是什么,有可能人并不一定能理解,其实往往也不需要理解,把计算机当成了黑盒;
 
    (3)创造意图智能
 
    也就是让计算机自己找到人并不知道的新知识,这也是我们最向往的场景。
 
    从具体的实现层面看,第一种情况无疑是最多的,我们需要提炼总结规则,用好第一种情况很重要;第二种情况以前相对少一些,但恰恰是目前需要改进的,在第二种情况下我们往往优先用统计学的方法处理结构化、半结构化数据(例如格式化日志),用深度学习的方法处理非结构化数据,这就需要让我们的团队具备人工智能的思维。
 
    实践人工智能应用需要新思维,不能再用规则理解计算机实现智能的方式
 
    实践人工智能,需要在在思维上进行调整。我们往往习惯于用制定规则的方式指挥计算机,输入计算规则和输出结果都是已知的,也就是我上面说的机械智能方式。但后两种模式就不是规则方式了,因为规则是计算机找到的,这也就是经常说的数据训练。
 
    这里我举一个我们自己实现的例子,让大家理解一下什么是模型、算法和数据训练。
 
    先说一个背景,我们在梳理现有企业数据架构的时候,需要建立数据间的关联,用人进行梳理费工费力,我们就打算用计算机自动完成一部分,然后人工修正,这就是一个增强智能(IA)的例子。这里面就有一个情况,如果数据库中没有建立外键,如何把这种实际的外键关系找出来,我们就用这个例子解释一下机械智能和实现意图智能的方法:
 
    (1)用规则的方式查找外键关系
 
    首先要定义规则,外键关联的规则包括字段类型一致、长度一致、包含相同数据等等,然后在所有数据中遍历,进行匹配。这种方式需要有完整的数据,而且是否为外键关系的判断规则往往有些模糊,在没有得到全量数据时有一定局限性;
 
    (2)用统计学方法查找外键关系
 
    首先,我们定义出字段的特征(类似用户画像),字段特征是一个向量,就是一个一维数组,包括表名、字段名、字段类型、注释、样例数据最大长度、样例数据最小长度等等,由于表名、字段名不是数值,我们要把他们变成数值,可以和同一个标准字符串作比较,也就是通过移位的方式把字符串移动成标准字符串,移动次数越少,相似度就越高,这样就得到了一个真正的一维数组(向量)了。
 
    其次,我们拿出一部分已知关系的表和字段,作为训练样本,逐一计算两个字段之间的相关系数(相关系数的计算方法是现成的,我这里就不介绍了,一上公式我就晕,Python的发行版Anaconda里面就有,用了这个就体会到 Python 是最好的语言了),相关系数高的说明特征类似,认定为外键关系。这时候人工判断一下,如果结果不错,那这个模型就是正确的,如果结果不好就换一种相关系数计算方法,或者改变数据特征,或者对数据特征进行加工,总之,外键特征作为一个客观存在,一定能够找到符合的特征,这就是数据训练。通过数据训练,找到合适的字段特征(模型)和计算方法(算法),也可以交给计算机做处理了,把所有的外键找出来。
 
    你看,这里没有定义规则,处理方法是通过数据训练的方式,让计算机自己找出来的,我不需要知道相关系数这玩意到底是什么意思,这就是上面说的,计算机是一个黑盒。
 
    需要说明的事,在上述例子中,我简化了不少动作,实际上最开始还找出来很多不是外键关系的字段,例如 createTime,我们还要把这种噪音字段的特征训练出来,剔除噪音。
 
    这个示例说明了应用人工智能时不同的两种思维模式,简单的说不能再用创造规则的方式指挥计算机,而是训练计算机自己找出规律。
 
    上面我们分析了人工智能相应的基本概念,人工智能的几种模式以及应用人工智能时需要的思维突破,下面我们从软件架构发展和面临的挑战,看看应用人工智能时的切入点在哪里,哪里更容易爆发出人工智能的火花。

责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐