博舍

人工智能简介(一)——深度AI科普调研团队 ai人工智能简介范文怎么写的好

人工智能简介(一)——深度AI科普调研团队

人工智能科普

​人们在日常生活中接触人工智能的频率越来越高,有可以帮用户买菜的京东智能冰箱;可以做自动翻译的机器;还有Siri、Alexa和Cortana这样的机器人助理;以及无人车、AlphaGo等已经把人工智能技术带到了“看得到摸得着”的境地。人工智能正以前所未有的态势汹涌而来,相关领域的融资总额一直在逐年稳步增长,到2016年达到数十亿美元的火爆程度。那么人工智能到底是什么?这个领域涉及哪些方面?人工智能要完成的目标和任务有哪些?接下来的内容将做一一介绍。

1.什么是人工智能

​AlanTuring定义的AI是:能使计算机完成那些需要人类智力才能完成的工作的科学。斯坦福大学的学者认为AI是智能机器的科学和工程,特别是智能计算机程序。维基百科定义AI是指由人工制造出来的系统所表现出来的智能,该词同时也指研究这样的智能系统是否能够实现,以及如何实现的科学领域。不管怎样定义,都离不开智能,然而到目前为止人类还没能统一地给出智能的定义,通常所说的智能也只是参考人类智慧的表现形式。原中国人工智能学会理事长钟义信教授,认为人类智慧包含发现问题、定义问题、解决问题三方面,而人工智能目前只做到了解决问题的程度。笔者认为智能是一种有序,是信息的体现,也是使世界朝着有序的方向发展的能力。可悲的是,根据熵增原理,无论智能体做怎样的努力,整个宇宙总是朝着熵增加的方向发展,即越来越无序和混乱。不知道这是上帝故意的安排,还是人类观察到的宇宙之外另有天地。

​人工智能的研究领域在不断扩大,各个分支主要包括专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等。

2.人工智能的历史

​智慧生物这一概念由来已久。确切地说,早在中国和埃及开始建造机械的时候,古希腊就已经有关于机器人的神话传说了。而现代人工智能的起源则可以追溯到古典哲学家对于人类思维符号系统的描述。再到上世纪40年代和50年代,大量来自于不同领域的科学家发起了关于构建类脑的可能性的讨论,掀起了有关人工智能的研究热潮,并且于1956年在新罕布尔州汉诺威市达特茅斯学院的一次学术会议上,明确成立了人工智能这一学科。“ArtificialIntelligence”就是由McCarthy创造的,McCarthy现在是公认的AI之父。尽管在过去的几十年里,科学家们得到了良好的基金资助,并且付出了持续努力,但是仍旧没能够使得机器具备智能。因此,70年代到90年代,科学家们不得不面临基金资助的缩减,这一时期也被成为“人工智能的冬天”。幸运的是,1990年底,美国公司又再次对AI提起兴趣。同时,日本政府也提出开发第五代计算机助力推进AI发展的政府计划。直至1997年,IBM开发的深蓝里程碑式地打败国际象棋冠军GarryKasparov。

​得益于计算机硬件的进步,AI不断发展。政府、公司、企业都开始在某些领域成功地应用AI技术。过去15年间,Amazon,Google,Baidu等公司都通过AI技术撬动了巨大的商业利益。今天的AI,已经被嵌入进我们日常使用的网络服务。并且AI在各个行业发挥作用的同时,也极大地带动了股票市场。

​历史上人工智能有三大学派:符号主义(symbolicism),又称为逻辑主义(logicism)、心理学派(psychologism)或计算机学派(computerism),其原理主要为物理符号系统(即符号操作系统)假设和有限合理性原理。连接主义(connectionism),又称为仿生学派(bionicsism)或生理学派(physiologism),其主要原理为神经网络及神经网络间的连接机制与学习算法。行为主义(actionism),又称为进化主义(evolutionism)或控制论学派(cyberneticsism),其原理为控制论及感知-动作型控制系统。

​符号主义认为人工智能源于数理逻辑。其早在1956年首先采用“人工智能”这个术语。后来又发展了启发式算法->专家系统->知识工程理论与技术,并在20世纪80年代取得很大发展。

​连接主义认为人工智能源于仿生学,特别是对人脑模型的研究。20世纪60~70年代,连接主义对以感知机(perceptron)为代表的脑模型的研究出现过热潮,由于受到当时的理论模型、生物原型和技术条件的限制,脑模型研究在20世纪70年代后期至80年代初期落入低潮。直到Hopfield教授在1982年和1984年发表两篇重要论文,提出用硬件模拟神经网络以后,连接主义才又重新抬头。1986年,鲁梅尔哈特(Rumelhart)等人提出多层网络中的反向传播算法(BP)算法。此后又有卷积神经网络(CNN)的研究,连接主义势头大振,从模型到算法,从理论分析到工程实现,为神经网络计算机走向市场打下基础。2006年,Hinton在《Science》和相关期刊上发表了论文,首次提出了深度信念网络(DBN)的概念,将深度学习推向学术界并成为当前人工智能领域非常热门的研究方向。

​行为主义认为人工智能源于控制论。控制论思想早在20世纪40~50年代就成为时代思潮的重要部分,影响了早期的人工智能工作者。。维纳(Wiener)和麦克洛克(McCulloch)等人提出的控制论和自组织系统以及钱学森等人提出的工程控制论和生物控制论,影响了许多领域。控制论把神经系统的工作原理与信息理论、控制理论、逻辑以及计算机联系起来。早期的研究工作重点是模拟人在控制过程中的智能行为和作用,如对自寻优、自适应、自镇定、自组织和自学习等控制论系统的研究,并进行“控制论动物”的研制。到20世纪60-70年代,上述这些控制论系统的研究取得一定进展,播下智能控制和智能机器人的种子,并在20世纪80年代诞生了智能控制和智能机器人系统。行为主义是20世纪末才以人工智能新学派的面孔出现的,引起许多人的兴趣。这一学派的代表作者首推布鲁克斯(Brooks)的六足行走机器人,它被看作是新一代的“控制论动物”,是一个基于感知-动作模式模拟昆虫行为的控制系统。

3.人工智能的目标

​人工智能的目标包括:推理、知识表示、自动规划、机器学习、自然语言理解、计算机视觉、机器人学和强人工智能八个方面。知识表示和推理包括:命题演算和归结,谓词演算和归结,可以进行一些公式或定理的推导。自动规划包括机器人的计划、动作和学习,状态空间搜索,敌对搜索,规划等内容。机器学习这一研究领域是由AI的一个子目标发展而来,用来帮助机器和软件进行自我学习来解决遇到的问题。自然语言处理是另一个由AI的一个子目标发展而来的研究领域,用来帮助机器与真人进行沟通交流。计算机视觉是由AI的目标而兴起的一个领域,用来辨认和识别机器所能看到的物体。机器人学也是脱胎于AI的目标,用来给一个机器赋予实际的形态以完成实际的动作。

​人工智能、机器学习、数据挖掘这些非常相关的术语或知识我们经常看到,也见到很多关于三者关系的文章和讨论。一般来说,人工智能是一个很大的研究领域;机器学习是人工智能的一个目标,提供很多算法;而数据挖掘是偏向算法应用的部分。三者相辅相成,另外也需要其他领域的知识支持。具体关系请参考下图。

4.人工智能的方法

​为了达到人工智能的目标,下面依次梳理一下学术和工业界研究的各种方法和成果。

4.1知识的表示和推理

​知识表示包括:基于知识的系统,表示常识知识等。传统的知识表示已经很成熟了,包括了描述逻辑,也包括了语义网(资源描述框架RDF)。知识推理建立在逻辑上,首先需要庞大的数据集,比如freebase;其次需要关系抽取自动化工具;最后需要合理的知识存储结构,比如资源描述框架RDF。谷歌提的知识图谱概念就是一种知识工程,它有庞大的知识库和基于知识库的各种服务。早年业界研究的知识本体也是一种知识工程,研究成果有FrameNet、WordNet、中文知网HowNet等。具体的知识本体的例子请参考下图。

​IBM在2011年研发了Watson问答系统。谷歌在2012年提出知识图谱,作为谷歌的两大重要技术储备,一个是深度学习,形成了谷歌大脑;另一个就是知识图谱,用来支撑下一代搜索和在线广告业务。脸谱公司利用知识图谱技术构建兴趣图谱,用来连接人、分享的信息等,并基于此构建了graphsearch。其他的工业应用还有:SIRI、EVI、GoogleNow、Dbpedia、freebase等。一般一个知识工程的底层技术架构,请参考以下图示。

4.2自动规划

​首先要说一下有限状态机(FSM),一般应用于游戏机器人,网络协议,正则表达式,词法语法分析,自动客服等。如下图是一个简单的游戏机器人状态转移和行动图。

​其次是状态空间搜索,最简单粗暴的是盲目搜索,就像特斯拉评价爱迪生:“如果说有一根针掉进草垛了,让他去找,他会毫不犹豫的,一根一根草挑出来找”。优化改进的版本是启发式搜索,如A*算法。这方面的应用有国际象棋Deepblue,围棋AlphaGo。AlphaGo在蒙特卡洛树搜索(MonteCarloTreeSearch,MCTS)基础上使用了深度学习,监督学习和增强学习等方法。“蒙特卡洛树搜索”是一类启发式的搜索策略,能够基于对搜索空间的随机抽样来扩大搜索树,始终保证选取当前抽样中的最优策略从而不断接近全局最优,确定每一步棋应该怎么走才能够创造更好机会。另外还包括:计划、动作和学习,敌对搜索,基于逻辑的规划方法,状态演算等内容。

4.3机器学习

​谷歌CEO桑德尔·皮蔡在一封致股东信中,把机器学习誉为人工智能和计算的真正未来,可想而知机器学习在人工智能研究领域的重要地位。机器学习的方式包括:有监督学习、无监督学习、半监督学习和强化学习。其中的算法有:回归算法(最小二乘法、LR等),基于实例的算法(KNN、LVQ等),正则化方法(LASSO等),决策树算法(CART、C4.5、RF等),贝叶斯方法(朴素贝叶斯、BBN等),基于核的算法(SVM、LDA等),聚类算法(K-Means、DBSCAN、EM等),关联规则(Apriori、FP-Grouth),遗传算法,人工神经网络(PNN、BP等),深度学习(RBN、DBN、CNN、DNN、LSTM、GAN等),降维方法(PCA、PLS等),集成方法(Boosting、Bagging、AdaBoost、RF、GBDT等)。想要深入学习的同学请参考《机器学习知识表格》和《机器学习方法汇总》。

​深度学习是机器学习中人工神经网络算法的延伸和发展,近期深度学习的研究非常火热,就在这里介绍一下神经网络和深度学习。先说两层网络,如下图,其中a是“单元”的值,w表示“连线”权重,g是激活函数,一般为方便求导采用sigmoid函数。采用矩阵运算来简化图中公式:a(2)=g(a(1)*w(1)),z=g(a(2)*w(2))。设训练样本的真实值为y,预测值为z,定义损失函数loss=(z–y)2,所有参数w优化的目标就是使对所有训练数据的损失和尽可能的小,此时这个问题就被转化为一个优化问题,常用梯度下降算法求解。一般使用反向传播算法,从后往前逐层计算梯度,并最终求解各参数矩阵。

​深度学习采用多层神经网络,在求解参数矩阵时计算量随层数呈指数上升。假设处理一张300300像素的图片,采用8层网络,每层6个节点,那么在全联接的情况下将有300300*6^8个参数需要计算求解。卷积神经网络(CNN)提出卷积算子和权值共享来大幅减少参数个数。另外一个问题是梯度弥散,由于sigmoid函数求导后的函数小于0.25,标准化正态分布产生的初始随机参数w也都在0-1之间。而各层的梯度是从后往前逐层求解,且前面层的梯度是来自后面层的值乘积。因此会有一个剃度指数,一旦初始值小于1,经过多层乘积后将会迅速变小。一个有效的解决方案是使用ReLU做激活函数。介于篇幅这里只做简介,想要深入了解深度学习的同学请参考《一文读懂深度学习》。

4.4自然语言处理NLP

​NLP是人工智能的另一个目标,用于分析、理解和生成自然语言,以方便人和计算机设备进行交流,以及人与人之间的交流。它的应用领域包括:机器翻译,文本、语音、图片转换,聊天机器人,自动摘要,情感分析,文本分类,信息提取等。以下给出了自然语言处理简要的知识架构图。

4.5机器人视觉

​视觉对人很重要,人类获得讯息90%以上是依靠眼睛的,那么对于机器人要想获得人获取信息的能力,重点是解决机器人视觉系统。目前机器视觉已经可以做到很多事情,比如识别人脸、标志和文字;探测物体并了解其环境的应用,如自动驾驶无人车等;检测的事件,对视频监控和人数统计;组织信息,如对于图像和图像序列的索引数据库;造型对象或环境,医学图像分析系统或地形模型;自动检测,如在制造业的应用程序。

4.6机器人学和强人工智能

​机器人学是一个交叉学科,主要研究包括环境适应机器仿生,机器人自主行为,人机协作,微纳操作机器人,制造装备机器人、科学工程机器人、服务型机器人等。目前国内的机器人行业还没有形成规模,商业化做得好的比如大疆、沈阳新松机器人公司。

​强人工智能是人工智能研究的最主要目标之一,强人工智能也指通用人工智能(artificialgeneralintelligence,AGI),或具备执行一般智慧行为的能力。强人工智能通常把人工智能和意识、感性、知识和自觉等人类的特征互相连结。实现强人工智能至少需要拥有以下能力:

自动推理,使用一些策略来解决问题,在不确定性的环境中作出决策;知识表示,包括常识知识库;自动规划;学习;使用自然语言进行沟通;整合以上这些手段来达到同一个的目标。

​目前的强人工智能主要出现在电影或小说里,比如斯皮尔伯格导演的《人工智能》里面的机器男孩大卫。

​最后,再回到人类智慧和人工智能的讨论上,人类智慧是人类的“隐性智慧”与“显性智慧”相互作用相互促进相辅相成的能力体系。其中,“隐性智慧”主要是指人类发现问题和定义问题从而设定工作框架的能力,由目的、知识、直觉能力、抽象能力、想象能力、灵感能力、顿悟能力和艺术创造能力所支持,具有很强的内隐性,因而不容易被确切理解,更难以在机器上进行模拟;“显性智慧”主要是指人类在隐性智慧所设定工作框架内解决问题的能力,依赖于收集信息、生成知识和创生解决问题的策略并转换为行动等能力的支持,具有较为明确的外显性,因而有可能被逐步理解并在机器上模拟出来。目前几乎所有的人工智能都只能模仿人类的解决问题的能力,而没有发现问题、定义问题的能力。因此,“人工智能将全面超越人类智慧”的说法没有科学根据,目前的人工智能只是帮助人类提高生产力的工具而已。

人工智能项目的开发流程概述

人工智能作为当下最热门的行业之一,不管是高考的专业选择中,还是各行各业的工作中,基本都会听到人工智能这个词,主要原因就是社会上各行各业对人工智能的需求越来越大了。在国内,从2015年开始,人工智能技术就已经逐渐渗透到了各行各业了。那么实现人工智能的过程是怎么样的呢?我们所看到的人工智能产品到底是怎么一步步走到我们眼前的呢?接下来我们就以人工智能领域最为火热的深度学习为例,详细分析一下人工智能项目的研发流程。

1、数据处理-AI的粮食加工

人工智能项目研发的首要阶段就是数据处理,既然是数据处理,那么需要有数据才能处理。数据作为人工智能项目的首要材料之一,是不可或缺的,怎么获得良好的数据,是处理好数据的第一步,没有质量保证的数据,无论如何处理,也很难达到数据处理结果的要求。

数据的要求一般是根据项目最终的要求而定的,比如拿图像视觉方向的项目来说,模型所需要的当然就是图像数据了,那么什么样的图像数据才算是比较好的数据,有利于模型的学习呢?一般来说图像数据对于现实物体的还原度越高越好,一般可以从图像的色彩三要素和图像像素的值来判断。

数据的还原度从根本上影响了模型最终输出的效果,但是如果拿到的原始数据质量就不是很好的时候,就只能想办法对原始数据做一些处理,以期望数据的质量更好一些。但是话说回来,数据处理只是治标不治本,也就是说如果数据的质量真的不怎么好,那么无论如何处理也是很难达到使用的效果的。

所以最好的办法就是采集和使用场景匹配度最高的数据,比如让工作人员到现场实地采集数据。这个做法是非常有必要的,不要光看现在顶会论文上的哪些指标,人家是在做学术研究的,大家使用的数据集都是一样的,比如coco,voc等等,只有使用同样的数据集才能分出大家谁的模型比较好,比如最近比较火热的YOLOX也是在COCO数据集做的测试,和以前各版本的YOLO做的比较。

比如说最近的某某模型增加了Attention后,发现accuracy、flops、mAp都提升了不少,又一次SOTA了,等过了一段时间作者针对不同的任务对模型又做了一些Finetune,结果比以前还更好。但实际上这些学术界看似超越之前的研究成果在实际工程应用中却没有想象中的那么美好,因为时间工程中,不可能出现两个不同的项目使用同样的数据集的情况。

在实际工程中,在采集数据的过程中,稍微不注意的一些细节就将模型的优势抵消了。比如采集数据的时候,是从互联网上爬下来的数据,那么数据的质量可能就不会太好,如果实际工作环境是室内或室外固定的场景,那么最好是到实地去采集不同时间、日期、天气情况下的数据,如果采集到好的数据资源,那么就算使用一个一般的模型,也能得到较好的结果。反之,如果训练数据和实际应用场景的数据差异过大,那么就算使用当前的SOTA模型,也很难达到预期的效果。

当然,再好的数据,采集回来后还是要做处理的,最直接的就是打标签,标签的设置确定了模型最终要学习的目标是什么。如果采集的数据数量不够,那么还需要做一些相应的数据增强来扩充数据量。

2、模型设计-AI的灵魂熔炉

如果数据是材料,那么模型就是容器,好的材料配上好的丹炉,才有产出好的丹药的可能。模型的发展是深度学习技术发展中较为重要的一环,无论是早期的卷积神经网络模型LeNet,还是后来的AlexNet,以及后面陆续出现的VggNet、GoogLeNet、SqueezeNet、ResNet、DenseNet、DarkNet、MobileNet、ShuffleNet、EfficientNet,又或者是这两年异军突起的Transformer模型,以及CNN和Transformer的结合体,都有一个共同特点,那就是这些模型的发展都朝着一个共同的目标前进,这个目标就是更高的mAp值、更高的训练效率、更快的推理速度、更大的平台适应性。

可以从模型的发展历程中看出,深度学习的知识体系更新迭代非常之快,想要保持在技术知识上的前沿性,就需要不断的学习新知识。如果在企业工作,那么还需要将这些新的知识融入到工程应用当中,产生一定的实际价值。

如果单从神经网络模型的发展来看,似乎想要在行业中出头,只能依靠不断的学习新知识,但是很明显,这样的成本太高,一般的企业从业人员不可能每天都有很充裕的时间来学习的,所以工程界和学术界对于新技术的关注度还是有些差异的,毕竟一个纯粹的学术研究,一个是落地的实际应用。

在学术界,模型的轻微提升,就可以发表一篇论文,甚至可以发表在顶会期刊上面,因为学术研究的就是在固定条件下的模型性能和效率。而工程界的条件不可能像学术界那样固定,每个具体的项目要求都不一样的,而且不同项目的数据也是大相径庭,这样就会造成同样的模型,在不同条件下会出现不同的结果,由于工程界实际项目的变量太多,将学术界影响结果的不确定性条件扩大了,需要解决的问题自然也就增加了。

在学术界做研究的时候,有部分条件是人为固定的,只需要在模型的设计训练上提高效果即可,而到了工程界就变成了所有的条件都具有了不确定性,比如设备、数据、平台、外部环境等这些变量对于最终结果的影响,一点都不亚于模型对于结果的影响。所以在工程界,当影响结果的这些变量在发生变化的时候,会出现使用较弱的模型效果却超出较好模型效果的情况,其原因就是模型上提升不足以抵消其他变量带来的负面影响。

好的丹炉虽具有炼出好丹药的可能,但是如果丹炉放置的位置不好,经常刮风下雨、伴随地震海啸,那么这个丹炉的优势就不如放在一个稳定地面上的丹炉的效果了,更不用说所使用的材料出了问题了。当然学术界和工程界是互相促进发展的,学术界的技术研究为工程界实际应用做技术方向指导,而工程界反过来监督验证学术界的研究成果是否有效。

3、训练优化-AI的学习成长

模型训练是最考验算法工程师的实战经验的,比如选择什么样的主干模型,进行怎么样的微调,以及选择什么样的损失函数和优化方法,是否进行多阶段训练,或者对图像数据进行多尺度训练等。此外还包括进行多大batch的采样,如何提高训练的速度,而这些都和具体的设备类型相关。

一般来说,有经验的训练人员,在训练模型的时候,不会一开始就输入大量的数据,而是做小批量的数据的训练,目的是先通过小批量数据来检验模型的好坏,然后再根据检验情况进行下一步的操作。很少会出现直接一上来就使用大批量的数据训练模型的情况,因为这样的做法有点像豪赌,一旦模型出现了问题,那么前面辛辛苦苦花费的大量时间将会毫无成果,一切都要重新再来,这种大量的试错时间成本在真实项目开发当中是有可能造成项目延期的。

一般模型训练开始之前先使用少量的数据快速的训练出一个过拟合的结果,用来验证模型是否合适。在实际工作中过拟合往往是不好的表现,但是我们可以使用它来做一些有意义的事情,比如用过拟合来验证模型是否合理,过拟合往往意味着参数过大,或者数据过少,导致模型测试的时候泛化能力太差,但是却能够告诉我们,模型本身是没有问题的,问题就在于训练过度,或者数据集过少。既然都过拟合了,说明模型的参数是足够多的,而且也得到了正确的结果,这正是我们想要的,至于过拟合,可以通过增加更多的数据来解决。

如果模型有问题,那么想要得到一个过拟合的结果都是不可能的。如果在前期先训练一个过拟合模型,那么将能够大大的加强我们工程当中的容错率,哪怕训练出了问题,再调整模型也不会浪费太多的时间,甚至可以再来一次,训练一个新的模型,因为过拟合模型的训练本来就花不了太长时间。

如果太过自信,模型训练一开始就把全部数据加载进去,那么模型的训练有可能会是几个星期甚至更长的时间,然而一旦出现错误,那么浪费的时间就太长了,有可能会导致项目的工期延误。最好的办法就是使用少量数据训练过拟合的结果来不断测测试模型的正确性,当确定模型没有问题了,再加载大批量的数据训练。

4、评估验证-AI的监理指导

模型评估是和模型训练伴随而行的,可以说训练一开始,评估也随之开始。训练和评估如同部队上的司令员和政委,一个负责攻城掠地,一个负责监督指导。可以对比一下电视剧《亮剑》里的李云龙和赵刚,李云龙的职务是团长,负责指挥前线士兵冲锋陷阵,赵刚的职务是政委,负责后勤和监督政策的执行。在剧里李云龙和赵刚经常吵架,因为李云龙的目标是如何打胜仗,而赵刚的目标不光要打胜仗,还要负责部队整体的思想工作,监督政策的执行,防止一些冒险的做法。

对比模型训练和模型评估,两者的关系也是如此。模型训练只负责如何把模型训练好,至于要训练到什么程度才算合适,需要模型评估说了算。所以在开始一项任务的时候,模型训练和模型评估是同时进行的,正常情况下,模型训练一次,则评估一次,但是我们认为模型训练的前几次是不需要评估的,因为模型训练的前期,参数还没有学习到正确的数值。

根据经验,一般模型在训练到一定的次数之后,再启动模型验证部分,相比模型训练一开始就启动模型评估,这样的操作可以在保证模型有效评估的前提下加快模型训练速度,因为模型在训练到后期的时候,只凭经验是很难确定模型是否已经训练到合适的程度的。有了评估验证的过程,就可以根据验证的结果来判断模型是否需要继续训练了。

如果没有模型评估,那么模型训练就只能凭运气了,有时候模型训练结束后,可能模型并没有训练到位,这种情况还比较容易处理,可以接着继续训练。但是如果模型训练过度了,就不太好处理了,一般来说模型训练过度之后的副作用就是过拟合,过拟合情况相信大家都比较清楚,模型过拟合之后会导致泛化能力大大的降低,这肯定不是我们想要看到的。

模型评估一般可以通过验证集和训练集的损失或精度的差距来做判断,看模型训练是否已经到位,需要停止训练。模型训练只管训练是否有效,是否是否能够持续快速的降低模型输出与目标直接的差距。模型评估要监督模型训练何时应该停止,不需要继续训练。

5、测试调整-AI的战前试炼

模型测试是项目交付前的最后一次试验,测试的目的就是和项目方给出的指标做对比,比如精度、速度等指标。所以作为项目交付前的最后一次测试实验,一定要按照项目方提出的指标要求做测试,测试的数据最好是从项目方实际的工作场景中采集,如果条件不允许,那么测试数据一定要最大可能的接近项目方实际工作场景的数据,只有这样才有可能在项目交付后不会出现算法指标上的问题。

测试数据不仅从质量上要接近真实场景的数据,而且在数量上也要达到一定的量级,测试的结果才会更加接近真实场景下的结果。根据大数定律,在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率。偶然中包含着某种必然。所以当数据的数量达到一定的量级,也就意味着测试的结果也会越多,最终所有测试结果的期望也就越接近真实结果。

在实际场景下的大规模数据测试中,如果出现测试结果和项目方给出的指标相差太远,当然这里所说的是模型测试出来的指标比项目方给出的指标要低。那么就需要对模型或者样本数据做调整之后再训练,或者重新训练模型。

如果模型在训练和验证的时候各项指标都没有问题,但是在测试的时候,却出现了指标急速下降的情况,一般出现这种情况,大部分原因都是由于测试数据与训练数据、验证数据差距太大造成的,也就是说训练集和验证集的数据差距不大,属于相似的数据场景分布,很有可能是从互联网获得的数据,而测试集的数据很有可能来自真实场景下采集到的数据,因此测测试集与训练集、验证集之间就会有很大的差距,而数据差距则是造成测试集的结果急速下降的主要原因,解决方案就是替换训练集和验证集的数据,最好也是从真实场景中采集。

当训练集、验证集、测试集都来自于统一场景下的数据的时候,不仅测试结果能够达到满意的效果,而且往往在部署之后,也不会出现算法指标上的问题。

6、部署实施-AI的落地成型

模型部署是模型在实际项目中的落地应用,模型部署包括了各种不同的编程语言的部署,比如常见的C/C++、JAVA、Python,以及其他语言,各种语言由于其自身的特性,在部署的时候部署方法也不大一样,比如按照某些定义而言,C/C++属于编译型语言,Python属于解释型语言,总之两者的程序执行过程的差异导致它们在部署的时候要考虑跨平台性的问题。

粗略的来说,由于C/C++的编译特性,它会将原生的程序代码生成一个可执行的二进制文件,这个过程称为编译过程,这个二进制文件相当于一个中间文件,执行这个中间文件的效率要比执行原生代码的速度快的多,这也是为什么很多算法程序使用python来开发,但是在推理部署的时候却要换成C++,其主要原因之一就是C++生成的中间程序能够加快推理速度,另外在安全性上也是比python要超出不少的,因为C++的打包程序是很难被反编译的,而python在这点上就要逊色不少。

另外,C/C++在不同的系统平台下生成的中间程序,在执行的时候只能在当前的系统平台上运行,一旦放到其他系统平台上就运行不了了,比如在Windows平台上生成的中间程序,只能在Windows平台上运行,在Linux平台或者其他平台上是运行不了,如果需要在其他平台上运行,则需要在对应的平台上重新编译才行。

而python就不一样了,解释型语言的特性使它具有跨平台的方便性,在一个平台上编写的语言可以放在其他任何平台上运行。但是由于解释型语言的特点,python程序的运行速度是没有C/C++的速度快的,所以如果是实现自己的算法想法,那么python无疑是最好的选择,但是如果要部署在工程应用上C/C++则更具有优势一些。

从部署的设备上来说,大概可以分为PC端(个人电脑)、Server端(服务器)、Mobil端(移动设置:iOS,Android)、IOT端(传感器、板卡:Android),各种部署的方法也是大同小异,拿英伟达的JetSonnano系列来说,部署方法非常简单,只要你买回来按照上面的说明部署,基本都能够成功的部署上的。

这里简单说一下在pytorch框架下的部署,在pytorch框架下部署基本可以分为三种方法,第一种是使用指定的编程语言(C/C++/JAVA)调用Libtorch在对应的平台(Windows/Linux)编写程序,然后直接部署。

第二种方法是先使用python在任意平台编写模型(跨平台),然后使用torch.jit.trace()将python文件转成c++文件,最后使用save()方法打包成.pt文件,然后使用C/C++/JAVA或其他语言在其他平台上调用。

第三种将python模型转换成onnx,再转成caffe,tensorflow等其他框架的模型。

后记:目前人工智能项目的开发流程相对来说还没有形成标准,各种方法都有,以上流程只是根据当前大部分人工智能项目的开发经验而总结,难免有遗漏之处,欢迎各位大牛们前来指正,做为一名炼丹学徒,这条路才刚刚开始,希望各位行业同仁共勉!

关注微信公众号:深度人工智能学院,获取更多人工智能方面的知识!

        

        官方公众号                          官方微信号

人工智能的历史、现状和未来

如同蒸汽时代的蒸汽机、电气时代的发电机、信息时代的计算机和互联网,人工智能正成为推动人类进入智能时代的决定性力量。全球产业界充分认识到人工智能技术引领新一轮产业变革的重大意义,纷纷转型发展,抢滩布局人工智能创新生态。世界主要发达国家均把发展人工智能作为提升国家竞争力、维护国家安全的重大战略,力图在国际科技竞争中掌握主导权。习近平总书记在十九届中央政治局第九次集体学习时深刻指出,加快发展新一代人工智能是事关我国能否抓住新一轮科技革命和产业变革机遇的战略问题。错失一个机遇,就有可能错过整整一个时代。新一轮科技革命与产业变革已曙光可见,在这场关乎前途命运的大赛场上,我们必须抢抓机遇、奋起直追、力争超越。

概念与历程

了解人工智能向何处去,首先要知道人工智能从何处来。1956年夏,麦卡锡、明斯基等科学家在美国达特茅斯学院开会研讨“如何用机器模拟人的智能”,首次提出“人工智能(ArtificialIntelligence,简称AI)”这一概念,标志着人工智能学科的诞生。

人工智能是研究开发能够模拟、延伸和扩展人类智能的理论、方法、技术及应用系统的一门新的技术科学,研究目的是促使智能机器会听(语音识别、机器翻译等)、会看(图像识别、文字识别等)、会说(语音合成、人机对话等)、会思考(人机对弈、定理证明等)、会学习(机器学习、知识表示等)、会行动(机器人、自动驾驶汽车等)。

人工智能充满未知的探索道路曲折起伏。如何描述人工智能自1956年以来60余年的发展历程,学术界可谓仁者见仁、智者见智。我们将人工智能的发展历程划分为以下6个阶段:

一是起步发展期:1956年—20世纪60年代初。人工智能概念提出后,相继取得了一批令人瞩目的研究成果,如机器定理证明、跳棋程序等,掀起人工智能发展的第一个高潮。

二是反思发展期:20世纪60年代—70年代初。人工智能发展初期的突破性进展大大提升了人们对人工智能的期望,人们开始尝试更具挑战性的任务,并提出了一些不切实际的研发目标。然而,接二连三的失败和预期目标的落空(例如,无法用机器证明两个连续函数之和还是连续函数、机器翻译闹出笑话等),使人工智能的发展走入低谷。

三是应用发展期:20世纪70年代初—80年代中。20世纪70年代出现的专家系统模拟人类专家的知识和经验解决特定领域的问题,实现了人工智能从理论研究走向实际应用、从一般推理策略探讨转向运用专门知识的重大突破。专家系统在医疗、化学、地质等领域取得成功,推动人工智能走入应用发展的新高潮。

四是低迷发展期:20世纪80年代中—90年代中。随着人工智能的应用规模不断扩大,专家系统存在的应用领域狭窄、缺乏常识性知识、知识获取困难、推理方法单一、缺乏分布式功能、难以与现有数据库兼容等问题逐渐暴露出来。

五是稳步发展期:20世纪90年代中—2010年。由于网络技术特别是互联网技术的发展,加速了人工智能的创新研究,促使人工智能技术进一步走向实用化。1997年国际商业机器公司(简称IBM)深蓝超级计算机战胜了国际象棋世界冠军卡斯帕罗夫,2008年IBM提出“智慧地球”的概念。以上都是这一时期的标志性事件。

六是蓬勃发展期:2011年至今。随着大数据、云计算、互联网、物联网等信息技术的发展,泛在感知数据和图形处理器等计算平台推动以深度神经网络为代表的人工智能技术飞速发展,大幅跨越了科学与应用之间的“技术鸿沟”,诸如图像分类、语音识别、知识问答、人机对弈、无人驾驶等人工智能技术实现了从“不能用、不好用”到“可以用”的技术突破,迎来爆发式增长的新高潮。

现状与影响

对于人工智能的发展现状,社会上存在一些“炒作”。比如说,认为人工智能系统的智能水平即将全面超越人类水平、30年内机器人将统治世界、人类将成为人工智能的奴隶,等等。这些有意无意的“炒作”和错误认识会给人工智能的发展带来不利影响。因此,制定人工智能发展的战略、方针和政策,首先要准确把握人工智能技术和产业发展的现状。

专用人工智能取得重要突破。从可应用性看,人工智能大体可分为专用人工智能和通用人工智能。面向特定任务(比如下围棋)的专用人工智能系统由于任务单一、需求明确、应用边界清晰、领域知识丰富、建模相对简单,形成了人工智能领域的单点突破,在局部智能水平的单项测试中可以超越人类智能。人工智能的近期进展主要集中在专用智能领域。例如,阿尔法狗(AlphaGo)在围棋比赛中战胜人类冠军,人工智能程序在大规模图像识别和人脸识别中达到了超越人类的水平,人工智能系统诊断皮肤癌达到专业医生水平。

通用人工智能尚处于起步阶段。人的大脑是一个通用的智能系统,能举一反三、融会贯通,可处理视觉、听觉、判断、推理、学习、思考、规划、设计等各类问题,可谓“一脑万用”。真正意义上完备的人工智能系统应该是一个通用的智能系统。目前,虽然专用人工智能领域已取得突破性进展,但是通用人工智能领域的研究与应用仍然任重而道远,人工智能总体发展水平仍处于起步阶段。当前的人工智能系统在信息感知、机器学习等“浅层智能”方面进步显著,但是在概念抽象和推理决策等“深层智能”方面的能力还很薄弱。总体上看,目前的人工智能系统可谓有智能没智慧、有智商没情商、会计算不会“算计”、有专才而无通才。因此,人工智能依旧存在明显的局限性,依然还有很多“不能”,与人类智慧还相差甚远。

人工智能创新创业如火如荼。全球产业界充分认识到人工智能技术引领新一轮产业变革的重大意义,纷纷调整发展战略。比如,谷歌在其2017年年度开发者大会上明确提出发展战略从“移动优先”转向“人工智能优先”,微软2017财年年报首次将人工智能作为公司发展愿景。人工智能领域处于创新创业的前沿。麦肯锡公司报告指出,2016年全球人工智能研发投入超300亿美元并处于高速增长阶段;全球知名风投调研机构CBInsights报告显示,2017年全球新成立人工智能创业公司1100家,人工智能领域共获得投资152亿美元,同比增长141%。

创新生态布局成为人工智能产业发展的战略高地。信息技术和产业的发展史,就是新老信息产业巨头抢滩布局信息产业创新生态的更替史。例如,传统信息产业代表企业有微软、英特尔、IBM、甲骨文等,互联网和移动互联网时代信息产业代表企业有谷歌、苹果、脸书、亚马逊、阿里巴巴、腾讯、百度等。人工智能创新生态包括纵向的数据平台、开源算法、计算芯片、基础软件、图形处理器等技术生态系统和横向的智能制造、智能医疗、智能安防、智能零售、智能家居等商业和应用生态系统。目前智能科技时代的信息产业格局还没有形成垄断,因此全球科技产业巨头都在积极推动人工智能技术生态的研发布局,全力抢占人工智能相关产业的制高点。

人工智能的社会影响日益凸显。一方面,人工智能作为新一轮科技革命和产业变革的核心力量,正在推动传统产业升级换代,驱动“无人经济”快速发展,在智能交通、智能家居、智能医疗等民生领域产生积极正面影响。另一方面,个人信息和隐私保护、人工智能创作内容的知识产权、人工智能系统可能存在的歧视和偏见、无人驾驶系统的交通法规、脑机接口和人机共生的科技伦理等问题已经显现出来,需要抓紧提供解决方案。

趋势与展望

经过60多年的发展,人工智能在算法、算力(计算能力)和算料(数据)等“三算”方面取得了重要突破,正处于从“不能用”到“可以用”的技术拐点,但是距离“很好用”还有诸多瓶颈。那么在可以预见的未来,人工智能发展将会出现怎样的趋势与特征呢?

从专用智能向通用智能发展。如何实现从专用人工智能向通用人工智能的跨越式发展,既是下一代人工智能发展的必然趋势,也是研究与应用领域的重大挑战。2016年10月,美国国家科学技术委员会发布《国家人工智能研究与发展战略计划》,提出在美国的人工智能中长期发展策略中要着重研究通用人工智能。阿尔法狗系统开发团队创始人戴密斯·哈萨比斯提出朝着“创造解决世界上一切问题的通用人工智能”这一目标前进。微软在2017年成立了通用人工智能实验室,众多感知、学习、推理、自然语言理解等方面的科学家参与其中。

从人工智能向人机混合智能发展。借鉴脑科学和认知科学的研究成果是人工智能的一个重要研究方向。人机混合智能旨在将人的作用或认知模型引入到人工智能系统中,提升人工智能系统的性能,使人工智能成为人类智能的自然延伸和拓展,通过人机协同更加高效地解决复杂问题。在我国新一代人工智能规划和美国脑计划中,人机混合智能都是重要的研发方向。

从“人工+智能”向自主智能系统发展。当前人工智能领域的大量研究集中在深度学习,但是深度学习的局限是需要大量人工干预,比如人工设计深度神经网络模型、人工设定应用场景、人工采集和标注大量训练数据、用户需要人工适配智能系统等,非常费时费力。因此,科研人员开始关注减少人工干预的自主智能方法,提高机器智能对环境的自主学习能力。例如阿尔法狗系统的后续版本阿尔法元从零开始,通过自我对弈强化学习实现围棋、国际象棋、日本将棋的“通用棋类人工智能”。在人工智能系统的自动化设计方面,2017年谷歌提出的自动化学习系统(AutoML)试图通过自动创建机器学习系统降低人员成本。

人工智能将加速与其他学科领域交叉渗透。人工智能本身是一门综合性的前沿学科和高度交叉的复合型学科,研究范畴广泛而又异常复杂,其发展需要与计算机科学、数学、认知科学、神经科学和社会科学等学科深度融合。随着超分辨率光学成像、光遗传学调控、透明脑、体细胞克隆等技术的突破,脑与认知科学的发展开启了新时代,能够大规模、更精细解析智力的神经环路基础和机制,人工智能将进入生物启发的智能阶段,依赖于生物学、脑科学、生命科学和心理学等学科的发现,将机理变为可计算的模型,同时人工智能也会促进脑科学、认知科学、生命科学甚至化学、物理、天文学等传统科学的发展。

人工智能产业将蓬勃发展。随着人工智能技术的进一步成熟以及政府和产业界投入的日益增长,人工智能应用的云端化将不断加速,全球人工智能产业规模在未来10年将进入高速增长期。例如,2016年9月,咨询公司埃森哲发布报告指出,人工智能技术的应用将为经济发展注入新动力,可在现有基础上将劳动生产率提高40%;到2035年,美、日、英、德、法等12个发达国家的年均经济增长率可以翻一番。2018年麦肯锡公司的研究报告预测,到2030年,约70%的公司将采用至少一种形式的人工智能,人工智能新增经济规模将达到13万亿美元。

人工智能将推动人类进入普惠型智能社会。“人工智能+X”的创新模式将随着技术和产业的发展日趋成熟,对生产力和产业结构产生革命性影响,并推动人类进入普惠型智能社会。2017年国际数据公司IDC在《信息流引领人工智能新时代》白皮书中指出,未来5年人工智能将提升各行业运转效率。我国经济社会转型升级对人工智能有重大需求,在消费场景和行业应用的需求牵引下,需要打破人工智能的感知瓶颈、交互瓶颈和决策瓶颈,促进人工智能技术与社会各行各业的融合提升,建设若干标杆性的应用场景创新,实现低成本、高效益、广范围的普惠型智能社会。

人工智能领域的国际竞争将日益激烈。当前,人工智能领域的国际竞赛已经拉开帷幕,并且将日趋白热化。2018年4月,欧盟委员会计划2018—2020年在人工智能领域投资240亿美元;法国总统在2018年5月宣布《法国人工智能战略》,目的是迎接人工智能发展的新时代,使法国成为人工智能强国;2018年6月,日本《未来投资战略2018》重点推动物联网建设和人工智能的应用。世界军事强国也已逐步形成以加速发展智能化武器装备为核心的竞争态势,例如美国特朗普政府发布的首份《国防战略》报告即谋求通过人工智能等技术创新保持军事优势,确保美国打赢未来战争;俄罗斯2017年提出军工拥抱“智能化”,让导弹和无人机这样的“传统”兵器威力倍增。

人工智能的社会学将提上议程。为了确保人工智能的健康可持续发展,使其发展成果造福于民,需要从社会学的角度系统全面地研究人工智能对人类社会的影响,制定完善人工智能法律法规,规避可能的风险。2017年9月,联合国犯罪和司法研究所(UNICRI)决定在海牙成立第一个联合国人工智能和机器人中心,规范人工智能的发展。美国白宫多次组织人工智能领域法律法规问题的研讨会、咨询会。特斯拉等产业巨头牵头成立OpenAI等机构,旨在“以有利于整个人类的方式促进和发展友好的人工智能”。

态势与思考

当前,我国人工智能发展的总体态势良好。但是我们也要清醒看到,我国人工智能发展存在过热和泡沫化风险,特别在基础研究、技术体系、应用生态、创新人才、法律规范等方面仍然存在不少值得重视的问题。总体而言,我国人工智能发展现状可以用“高度重视,态势喜人,差距不小,前景看好”来概括。

高度重视。党中央、国务院高度重视并大力支持发展人工智能。习近平总书记在党的十九大、2018年两院院士大会、全国网络安全和信息化工作会议、十九届中央政治局第九次集体学习等场合多次强调要加快推进新一代人工智能的发展。2017年7月,国务院发布《新一代人工智能发展规划》,将新一代人工智能放在国家战略层面进行部署,描绘了面向2030年的我国人工智能发展路线图,旨在构筑人工智能先发优势,把握新一轮科技革命战略主动。国家发改委、工信部、科技部、教育部等国家部委和北京、上海、广东、江苏、浙江等地方政府都推出了发展人工智能的鼓励政策。

态势喜人。据清华大学发布的《中国人工智能发展报告2018》统计,我国已成为全球人工智能投融资规模最大的国家,我国人工智能企业在人脸识别、语音识别、安防监控、智能音箱、智能家居等人工智能应用领域处于国际前列。根据2017年爱思唯尔文献数据库统计结果,我国在人工智能领域发表的论文数量已居世界第一。近两年,中国科学院大学、清华大学、北京大学等高校纷纷成立人工智能学院,2015年开始的中国人工智能大会已连续成功召开四届并且规模不断扩大。总体来说,我国人工智能领域的创新创业、教育科研活动非常活跃。

差距不小。目前我国在人工智能前沿理论创新方面总体上尚处于“跟跑”地位,大部分创新偏重于技术应用,在基础研究、原创成果、顶尖人才、技术生态、基础平台、标准规范等方面距离世界领先水平还存在明显差距。在全球人工智能人才700强中,中国虽然入选人数名列第二,但远远低于约占总量一半的美国。2018年市场研究顾问公司CompassIntelligence对全球100多家人工智能计算芯片企业进行了排名,我国没有一家企业进入前十。另外,我国人工智能开源社区和技术生态布局相对滞后,技术平台建设力度有待加强,国际影响力有待提高。我国参与制定人工智能国际标准的积极性和力度不够,国内标准制定和实施也较为滞后。我国对人工智能可能产生的社会影响还缺少深度分析,制定完善人工智能相关法律法规的进程需要加快。

前景看好。我国发展人工智能具有市场规模、应用场景、数据资源、人力资源、智能手机普及、资金投入、国家政策支持等多方面的综合优势,人工智能发展前景看好。全球顶尖管理咨询公司埃森哲于2017年发布的《人工智能:助力中国经济增长》报告显示,到2035年人工智能有望推动中国劳动生产率提高27%。我国发布的《新一代人工智能发展规划》提出,到2030年人工智能核心产业规模超过1万亿元,带动相关产业规模超过10万亿元。在我国未来的发展征程中,“智能红利”将有望弥补人口红利的不足。

当前是我国加强人工智能布局、收获人工智能红利、引领智能时代的重大历史机遇期,如何在人工智能蓬勃发展的浪潮中选择好中国路径、抢抓中国机遇、展现中国智慧等,需要深入思考。

树立理性务实的发展理念。任何事物的发展不可能一直处于高位,有高潮必有低谷,这是客观规律。实现机器在任意现实环境的自主智能和通用智能,仍然需要中长期理论和技术积累,并且人工智能对工业、交通、医疗等传统领域的渗透和融合是个长期过程,很难一蹴而就。因此,发展人工智能要充分考虑到人工智能技术的局限性,充分认识到人工智能重塑传统产业的长期性和艰巨性,理性分析人工智能发展需求,理性设定人工智能发展目标,理性选择人工智能发展路径,务实推进人工智能发展举措,只有这样才能确保人工智能健康可持续发展。

重视固本强基的原创研究。人工智能前沿基础理论是人工智能技术突破、行业革新、产业化推进的基石。面临发展的临界点,要想取得最终的话语权,必须在人工智能基础理论和前沿技术方面取得重大突破。我们要按照习近平总书记提出的支持科学家勇闯人工智能科技前沿“无人区”的要求,努力在人工智能发展方向和理论、方法、工具、系统等方面取得变革性、颠覆性突破,形成具有国际影响力的人工智能原创理论体系,为构建我国自主可控的人工智能技术创新生态提供领先跨越的理论支撑。

构建自主可控的创新生态。我国人工智能开源社区和技术创新生态布局相对滞后,技术平台建设力度有待加强。我们要以问题为导向,主攻关键核心技术,加快建立新一代人工智能关键共性技术体系,全面增强人工智能科技创新能力,确保人工智能关键核心技术牢牢掌握在自己手里。要着力防范人工智能时代“空心化”风险,系统布局并重点发展人工智能领域的“新核高基”:“新”指新型开放创新生态,如产学研融合等;“核”指核心关键技术与器件,如先进机器学习技术、鲁棒模式识别技术、低功耗智能计算芯片等;“高”指高端综合应用系统与平台,如机器学习软硬件平台、大型数据平台等;“基”指具有重大原创意义和技术带动性的基础理论与方法,如脑机接口、类脑智能等。同时,我们要重视人工智能技术标准的建设、产品性能与系统安全的测试。特别是我国在人工智能技术应用方面走在世界前列,在人工智能国际标准制定方面应当掌握话语权,并通过实施标准加速人工智能驱动经济社会转型升级的进程。

推动共担共享的全球治理。目前看,发达国家通过人工智能技术创新掌控了产业链上游资源,难以逾越的技术鸿沟和产业壁垒有可能进一步拉大发达国家和发展中国家的生产力发展水平差距。在发展中国家中,我国有望成为全球人工智能竞争中的领跑者,应布局构建开放共享、质优价廉、普惠全球的人工智能技术和应用平台,配合“一带一路”建设,让“智能红利”助推共建人类命运共同体。

(作者:中央人民政府驻香港特别行政区联络办公室副主任、中国科学院院士)

人工智能(AI)简介

     目前常见的AI模型包括FSM(有限状态机)和BehaviorTree(行为树)两大类。

一、FSM(有限状态机) 相对于switch-case来说,FSM编程与人类思维相似从而便于梳理,更加灵活。当每种状态被封装之后,就不会再有一个“中央”函数来控制所有的逻辑,每个状态只要管好它自己就好了。这样复杂的决策系统就被切分两个子系统,不同状态以及状态之间的转化。切分后的这两个子系统的复杂度与原系统比都大大简化,从而使得代码变得可以维护。FSM在相当多的游戏中被应用,甚至UnrealEngine的脚本语言是直接支持状态编程的。 当游戏中的NPC决策并不太复杂时候,FSM是非常有效的。比如Half-Life这款游戏,里面的AI被业界称赞了很久,而其中的AI就是通过FSM来实现的。 我们接下来通过一个简单的例子来认识一下FSM。 比如一个AI文字表述如下: 1、平时的状态是巡逻 2、如果遇到敌人之后打量一下敌人 3、如果敌人比自己弱小,那就打攻击 4、如果敌人比自己强大,那就跑逃跑 那么这个可以很自然的转换成FSM,然后进行编程实现

带边框的节点表示状态,而箭头上的条件表示状态切换的条件。

虽然FSM简洁,和人的直觉思维相近,但是FSM也是有缺点的: A、由于我们所能做的仅是编辑从一状态到另一状态的转换,而无法做出更高层次的模式功能,所以会导致我们发现自己总是在构建相似的行为,这会花费我们大部分时间。 B、使用FSM实现目标导向的行为需要做很多工作。这是一个大问题,因为大部分有针对性的AI需要处理长远目标。 C、FSM难以并发。当并行运行多个状态机,要么死锁,要么我们通过手工编辑来确保它们在某个程度上能够兼容。 D、大规模支持较差,即使是分层的有限状态机,也难以大规模扩展。它们往往是在其中夹杂一大块逻辑代码,而非行为编辑模块化。 E、用FSM实现任何设计都需要做大量工作,需要花费设计师的大量时间(并非编程时间),甚至最终这还会成行为中的bugs的来源。

二、BehaviorTree(行为树)

    行为树是在Next-GenAI中提出的模型,虽说是Next-GenAI,但距其原型提出已有约10年时间。其中Spore(孢子),Crysis(孤岛危机)2,RedDeadRedemption(荒野大镖客:救赎)等就是用行为树作为它们的AI模型。而越来越多的引擎也都开始直接支持行为树,比如CryEngine,Havok等。 对于用行为树定模型构造的AI系统来说,每次执行AI时,系统都会从根节点遍历整个树,父节点执行子节点,子节点执行完后将结果返回父节点,然后父节点根据子节点的结果来决定接下来怎么做。 行为树常见的基本类型节点有5种(当然也可以扩展更多类型): 1、顺序节点(Sequence):属于组合节点,顺序执行子节点,只要碰到一个子节点返回false,则停止继续执行,并返回false,否则返回true,类似于程序中的逻辑与。 2、选择节点(Selector):属于组合节点,顺序执行子节点,只要碰到一个子节点返回true,则停止继续执行,并返回true,否则返回false,类似于程序中的逻辑或。 3、平行节点(ParallelNode):提供了平行的概念,无论子节点返回值是什么都会遍历所有子节点。所以不需要像Selector/Sequence那样预判哪个ChildNode应摆前,哪个应摆后。ParallelNode增加方便性的同时,也增加实现和维护复杂度。 4、条件节点(Condition):属于叶子节点,判断条件是否成立。 5、执行节点(Action):属于叶子节点,执行动作,一般返回true。 接下来我们看一个行为树构造的AI,这个AI的逻辑文字表述为,一个NPC在晚上需要执行巡逻任务。而且如果天下雨的话,户外的人是需要打伞的。

程序大概流程如下 1、先处理Basic_AI节点,由于该节点是并行节点,所以将会依次处理接下来两个子树,无论第一个子树的返回值是什么。 2、对于”打伞”节点,由于该节点是顺序节点,所以会依次处理其子节点,但是如果某个子节点返回false,那么该节点执行停止执行,并且返回false。因此执行打伞动作会不会执行取决于在它前面的两个条件是否返回true 3、执行完”大伞”节点后,接下来必然会执行守夜节点,而守夜节点是选择节点,所以要么会执行夜里巡逻,要么会执行休息节点。夜里巡逻会不会这姓自然取决于条件节点”是晚上吗”的返回值 行为树模型看似简单,但是以下几个优点让行为树目前变成了复杂AI的主流模型 A、静态性 越复杂的功能越需要简单的基础,否则最后连自己都玩不过来。即使系统需要某些”动态”性,也应该尽量使用静态的行为树来表示。Halo3相对于Halo2对BTAI的一个改进就是去除了一些的动态性。原则就是保持全部Node静态,只是根据事件和环境来检查是否启用Node。 静态性直接带来的好处就是整棵树的规划无需再运行时动态调整,大大方便设计人员和编程人员,并且大大减少诡异的bug,同时这也为很多优化和预编辑都带来方便。 B、直观性 行为树可以方便地把复杂的AI知识条目组织得非常直观。 默认的组合节点处理子节点的迭代方式就像是处理一个预设优先策略队列,也非常符合人类的正常思考模式:先最优再次优。 此外,行为树编辑器对优秀的程序员来说也是唾手可得。 C、复用性 各种节点,包括叶子节点,可复用性都极高。 D、扩展性 可以容易地为项目量身定做新的组合节点或修饰节点。还可以积累一个项目相关的节点库,长远来说非常有价值。

小结:

    在浏览过行为树和有限状态机之后,大家很自然可以根据项目来选择所用的模型。对于AI并不是太复杂的项目来说,选择有限状态机是很理智的行为,特别是在有些引擎支持的情况下。但是如果NPC的状态非常多,成千上万种,那么行为树就可能是避免项目最后崩溃的好办法。 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇