人工智能的研究更多的是结合具体领域进行的,主要研究领域有专家系统,机器学习,模式识别,自然语言理解,自动定理证明,自动程序设计,机器人学,博弈,智能决定支持系统和人工神经网络。
人工智能是一种外向型的学科,它不但要求研究它的人懂得人工智能的知识,而且要求有比较扎实的数学基础,哲学和生物学基础,只有这样才可能让一台什么也不知道的机器模拟人的思维。
因为人工智能的研究领域十分广阔,它总的来说是面向应用的,也就说什么地方有人在工作,它就可以用在什么地方,因为人工智能的最根本目的还是要模拟人类的思维。因此我们可以从许多的应用领域中挑选几个有代表性的方面来看看人工智能的发展需要进行哪些方面的工作。
下面我们就具体的应用方面专家系统来看看人工智能的主要研究领域是什么。
专家系统是目前人工智能中最活跃,最有成效的一个研究领域,它是一种基于知识的系统,它从人类专家那里获得知识,并用来解决只有专家才能解决的困难问题。这样定义专家系统:专家系统是一种具有特定领域内大量知识与经验的程序系统,它应用人工智能技术、模拟人类专家求解问题的思维过程求解领域内的各种问题,其水平可以达到甚至超过人类专家的水平。专家系统是在关于人工智能的研究处于低潮时提出来的,由它的出现及其所显示出来的巨大潜能不仅使人工智能摆脱了困境,而且走上了发展时期。
专家系统的分类有解释型,诊断型,预测型,设计型,规划型,控制型,监测型,维修型,教育型和调试型,而从体系上来说,它可分为集中式专家系统,分布式专家系统,神经网络专家系统,符号系统与神经网络结合的专家系统。名字可是不少,但是专家系统的基本结构图如下图所示:
人机接口部分就不做多的解释了,它只是一个用户界面而已。它的实现可以有不同的形式,也有可能是很复杂的。人们希望能够和人类专家那样和机器交流,不再使用简单的命令,而是用人类的语言完成交互工作,这就要求人机接口能够有自然语言理解的功能。但是专家系统能不能使用,好不好使用关键在中间的那一层,人可以思考,如果希望机器也能够象人那样思考,那么推理机制是必不可少的,而且它在很大程序上决定了这个专家系统的效率和可用性。
就推理而言,它一般可以分为精确推理和非精确推理两种。精确推理有以下特点:
精确推理是运用确定性的知识进行的推理,精确推理基于的知识都是明确无误的东西,是1就是1,是2就是2,不存在什么模糊的东西,在一点上,精确推理有它的长处,也就是说,它可以准确地推理,在推理的过程中不必关心会不会出现什么结论精确度的问题,每一步到下一步都是完全正确的,不存在什么可能对可能错,它的正确性是100%传递给下一个推理过程的。
精确推理和人类的思维模型相差很大,人类的思维是有精确的一面,但是绝大部人类的思维还是模糊的和不确定的,人类思维的结果往往是可能如何如何,大概如何如何,但是精确推理的结果中绝对不会有什么可能大概之类的话。 精确推理是一种单调性推理,即随着新知识的加入,推出的结论或证明了的命题只会单调增加,这一点和人类的思维结构也有着明显的不同。新的知识有可能使人类的思维结果增加,但绝对不会是单调增加。 精确推理需要知道全部的信息才可能进行推理,这与人有明显的不同,人可以根据一些情况进行一些假设和推断,产生一个结果,而精确推理却不可能。正因为精确推理的基础是经典逻辑,而经典逻辑可以说是一种符号化了的形式推理,它关心的是符号与符号之间的形式联系,而不是符号与符号之后深层次的语义联系。也正是因为这一点,限制了精确推理在人工智能中的应用。如果让这种逻辑解一些题,进行一些确定性的工作,它还是可以的,但是如果让它进行更复杂的工作就力不从心了。我们可以想象一下机器翻译中的例子,人类语言中的有些句子根本没有什么语法,非要从语义上理解不可。这个时候精确推理就不好用了。
下面我们看看,人类思维的另一方面,非精确方面。我们知道所谓推理就是从已知的事实出发,通过运用相关知识逐步推出结论或者证明某个假设不成立的思维过程。专家系统中的知识来自于领域内的人类专家,而这种知识常常带有不确定性,在这种情况下,如果仍然使用经典逻辑做精确推理,就必然要把客观事物原来具有的不确定性及事物之间客观存在的不确定性关系化归为确定性,在本来不存在明确类属关系的事物之间人为地划上界限,这无疑会舍弃事物的某些重要属性,从而失去真实性。不确定性推理是建立在非经典逻辑上的一种推理,它是对不确定性知识的运用与处理,严格地说,所谓不确定性推理就是从不确定性的初始证据出发,通过运用不确定性的知识,最终推出具有一定程度不确定的,但是却是合理(或近乎于合理)的结论的思维过程。
要处理不确定的时候就涉及到确定性推理中不存在的几个基本问题:如何表示这种不确定性,根据表示了的不确定性如何进行推理得到一个(或多个结论),在推理的过程中如何处理不确定性带来的结论的不确定性,如果评价所得到的结果。
因为计算机是处理数字的一种装置,因此对于不确定性的表示说到底还是将它表示成一种有范围的数值,这种数值要有利于推理中对结论不确定性的计算。
解决问题总是需要推理的,而推理出的结论能不能用,是不是结果,那就需要一种衡量的方法,衡量的方法和具体的推理方法不同而不同,现有的推理方法基本上走的是两条路,一条是基于概论论的,一条是基于模糊数学的,前者发展的历史很长了,有很多现成的结果可以使用,但是由于概率是基于一种大样本统计的产物,而这种大样本统计往往不可能得到,而且还没有充分体现模糊性,所以也更谈不上对模糊性进行有效地处理了;而后者克服了前者的缺点,它根据模糊集理论发展出来,为不确定性的判断和获得开辟了新的道路。现在我们回到我们上面的专家系统基本结构图上来,我们知道人类的推理活动是基于一定知识进行的,我们解几何题的时候总是要知道一些基本的公理(或定理),医生看病的时候起码要有一点最起码的医学常识,这样才有进行推理的物质条件,推理是建立在具有知识的基础上进行的。
知识就是一些事实或事实的抽象,我们称之为概念的东西组成的。知识是对客观事物某一方面属性的了解。知识有着它的特性:
相对正确性。任何知识都有一定的应用范围,不能脱离了范围来说一个知识可用不可用;
不确定性。由于现实世界的复杂性,许多事实和概念都不可以说是绝对正确,就象哲学中不存在绝对真理一样,知识本身也有不确定性; 可表示性。同样,知识也要是可以表达的,用口述也要,用什么东西记录也要,要能够感知的,如果不能表示出来,那谁能够理解,连表示都表示不出来,那也根本谈不上应用了。不能用的东西,我们知道也罢不知道也罢,对于面向应用的人工智能来说没有什么意义。事实和概念之间,概念和概念之间,事实和事实之间都存在联系,这种联系有两种,静态联系和动态联系。
静态联系。比如,我们一旦提起“早上”这个概念就会想起“太阳东升”或“公鸡叫”之类的事实,这种联系有时候是双向的,也就是等价的,而有时是单向的,我们可以把“太阳东升”与“早上”等价起来,而我们如果把“公鸡叫”和“早上”等价起来,十有八九可能要错了。
动态联系。除了静态的联系以外,我们还必须看到,事实和概念之间也会存在一种动态的联系,这一点在机器翻译中很好的体现了。比如在上文中看到了一个概念A,它建立了概念B的联系,那么,我们在下文中就必须承认A和B之间是有联系的,即使在生活中这种联系是根本不存在的,只要在上文中已经承认了这种联系,我们就必须承认这种联系的存在。再具体一点,我们在翻译一篇科幻小说的时候,前文已经说过这个地方“早上”太阳是从“北方升起”,那么,“太阳北方升起”就和“早上”这个概念建立了联系,在这篇文章的翻译中就要注意了,凡是有关早上太阳的都要是从“北方升起”的。但是千万要注意,这种联系不可做为静态联系而带到下一个文章中,如果把这个联系记住带到下一个文章中去,那可就出大麻烦了。前面已经说过知识是客观事物某一方面属性的描述,而正因为客观事物是相互联系的,因此知识也必须是相互联系的。这就是知识联系的存在的本质原因。
知识作为机器智能的一部分,就必须能够让机器知道什么是知识,那就涉及到了知识表示的问题,这个问题就象人记录某一事实有不同的方法一样,例如对于聋子来说,你让他把“早上”和“公鸡叫”联系在一起,那是根本不可能的。而对于机器这个东西,它简直就是一个又聋又瞎,又没有感觉(更谈不上感情)的石头,它只理解数字和一些人为规定的数据结构,那么如何让它能够理解知识,特别是知识中的联系就是一个重要的问题了,一个专家系统的推理系统做得再好,没有知识做为后盾肯定什么也干不成。
同时,知识的表示又影响到推理机制的运行,推理机制和知识表示两者是相关的,一种知识表示可以有利于一种推理机制的运行,而另一种则不利于这种推理机制的运行,因此选择知识表示也一定要根据所要处理的具体领域选择相应的知识表示方法,具体的知识表示有以下几种:
一阶谓词逻辑表示法。它是把一些知识表示为经典逻辑中的谓词表示式,因为表示成了谓词的形式,进行推理起来当然比较方便了,但是有许多知识是根本无法表示为谓词的,其关键原因是因为谓词只有表示出精确的知识,而对不确定的事物无法有效表示;同时这种表示方式也不能很好地体现知识的内在联系,寻找知识内在联系的任务要交给推理系统或另外的系统完成,这就比较麻烦了。
产生式表示法。它的基本形式类似于我们的IF语句的形式,因为与计算机中一些现成的语句相似,因此对它的处理要方便得多。它注意到了联系和知识的应用范围,但是它在表示结构性知识上可是先天不足。 框架表示法。它的基本作法是把许多事物放在一起,构成一个集合,然后就这个集合中的联系和事实进行表示,这种表示方法可比前两种科学得多了。在机器翻译中,如果一个老太太说到VC,我们可不要把它和微软联系起来,而要和维生素C等价。这种表示法限制了概念出现的场合,这可能是它的不足之处,但是相对于前面两种表示法,它是很接收于人类思维的一种表示法,它无形中体现了知识适用的范围。更重要的是它是可以继承的,在这一点上,它更加接近人的思维了。 语义网络法。我们自己可以想象一下自己所拥有的知识体系,有是有结构的,但在另一角度上看,它是一个网络,普遍联系的网络,而语义网络表示法正是在表示人类知识体系成网络化的一面,而且它能够使联想式推理在其上得到很好的发挥,为进行复杂推理打下了坚实的基础。它很接近人类思维,但是它不能正确表示类属关系,它体现了网络性,但它忽视了事物有类属性。框架表示法和语义网络表示法在这一点是有互补性的。 脚本表示法。这种表示法在自然语言理解方面开始应用,这是因为自然语言理解的特殊性要求有这样一种表示法。它正确地表示了上下文关系,表示了事物之间的静态关系,动态关系,充分考虑到了场景(上下文),但是世界上的场景可实在是太多了,保存这些场景几乎是不可能的。这就限制了它的应用范围。就知识表示来的几种方法来看,知识的表示有贴近于人类表示的,有与人类表示相差比较远的表示方法,总体上我们可以看到一种特点:与人类思维接近的表示法,让计算机表示起来都会有一定的麻烦,而与机器接近的表示法却不能完全表示人类知识结构。机器和人之间有着一种差别,这种差别可能开始促使人们开始研究新结构的计算机,让机器和人类思维之间的差别减少到最小。但是因为目前人类的思维结构,人脑的结构还不能搞得很清楚,因此能够靠这样一台机器把人和机器的思维差距缩小到什么程度就不得而知了。而且就目前看来,替换如此许多的计算机也是不现实的,因此有必要采用另外的方法让机器和思维和人类的思维更加接近。
有人说人工智能就是一个数据库加上搜索,从某种程度上,这句话也确实可以说明人工智能的现状。无论是在知识库这一方也好,还是在推理机那一方也好,都要涉及到搜索这一过程。
大体上来说,搜索分为两种,一种是非启发式的搜索,另一种是启发式搜索。非启发式的搜索在搜索过程中不改变搜索策略,不利用搜索获得的中间信息,它盲目性大,效率差,用于小型问题还可以,用于大型问题根本不可能;而启发式搜索在搜索过程中加入了与问题有关的启发性信息,用以指导搜索向着一个比较小的范围内进行,加速获得结果的过程。我们都知道计算机中有一个NP完全性问题,也正是因为这个使非启发式搜索在许多场合下不可用,但是启发式搜索虽然利用了搜索的中间结果,减少了搜索量,看起来优于非启发式搜索,它所得到的解是不是最优解这往往令人头痛。总的说来,非启发式搜索随着搜索的进行,需要搜索的空间很快加大;启发式搜索随着搜索的进行,需要搜索的空间有所增加,但增加的幅度远远小于非启发式搜索。问题空间中的有些地方因为中间信息的获得而根本不用搜索了。随着计算机硬件性能的不断提高和实际系统的需求,原来看起来不能使用非启发式搜索的地方现在也可以了,所以在实际应用中非启发式搜索仍然使用很广。
有了搜索的方法,那我们现在可以看看要搜索的东西是什么样子的了。数据结构决定算法的实现。对于我们所知道的问题,我们可以采用状态空间或与或树的表示方法来表示一个待搜索的问题空间。
由于工程实践的需要,搜索的结果有时候可以不是最优解(有时候最优解也没有判定标准),而是次优解,我们可以想一下机器翻译中对一句话的翻译可能有许多种,哪里谈得上有什么最优的。因此,随了我们熟悉的一些类似的深度优先,广度优先算法以外,现在研究的很多还有一种进化式的搜索算法,例如遗传算法,模拟煺火算法等等,它们有的搜索方法独立于问题,而且能够在比较短的时间内找到最优解(或次优解),特别适应于对问题空间比较在的情况下使用。
拿遗传算法来说,我想更重要的一点是我们不必关心它如何做,而只用关心它做什么,这一点是相对于传统搜索算法的最大不同。而人工智能所追求的也就是让机器具有类似人类的智能,如果你能够告诉一台计算机要干什么,它就能够自己干了,而不用你告诉它如何干,那人工智能就已经实现了。
我们现在再回到上面专家系统基本结构图上来。我们有了推理机,有了知识库,按说就可以实现用户的功能了,但是我们还应该注意到,另一个重要的部件,知识获取部分,一个人类专家只所以能够成为人类专家,就是它可以在实践过程中不断地丰富自己的知识,让自己做出的结论在结合实践后反馈回自己,让自己修改错误,人是一个负反馈的系统,而我们上面提到的没有知识获取的专家系统根本没有什么反馈,这个机器专家,现在是这个水平,将来还会是这个水平,它所知道的,不会因为自己的实践而有丝毫的变化。因此它不能适用工程实际的需要。知识获得部分的工作就是要建立这样一种反馈机制,把所得到的结果反馈给知识库,修改已知的知识,让它得到的结果更准确,更具有可用性。如果让它能够实例进行学习,那更好不过了,编程人员就可以不用把一条条的规则用程序写给这个专家系统了,而只用把一个个用计算机作好标记的实例交给计算机,它自己会生成知识库,这样它就更象一个人了。因此,如果一个专家系统有自学习的功能,那在系统的维护方面和系统的可用性方面一定会大有提高。
机器学习在这样的需求下产生了。机器学习的方法有以下几种:
机械式学习。它的另一个名称死记式学习能够直接体现它的特点,这是一种最简单的,最原始的学习方法,也是机器的强项,人的弱项。
指导式学习。这种学习方式是由外部环境向系统提供一般性的指示或建议,系统把它们具体地转化为细节知识并送入知识库中,在学习过程中要对反复对知识进行评价,使其不断完善。 归纳学习。我们看到,机器所善长的不是归纳,而是演绎,它适用于从特殊到一般,而不太适应从一般到特殊,从特殊到一般的归纳是人类所特有的,是智慧的标志。具体的归纳学习方法有许多,但它们的本质就是让计算机学会从一般中得出规律。 类比学习。类比也就是通过对相似事物进行比较所进行的一种学习。它的基础是类比推理,也就是把新事物和记忆中的老事物进行比较,如果发现它们之间有些属性是相同的,那么可以(假定地)推断出它们的另外一些属性也是相同的。 基于解释的学习。这是近年来兴起的一种新的学习方法。它不是通过归纳或类比进行学习,而是通过运用相关的领域知识及一个训练实例来对某一目标概念进行学习,并最终生成这个目标概念的一般描述,这个一般描述是一个可形式化表示的一般性知识。通过以上的学习方法就是为了得到知识,通过一种方便的方法得到知识。前面已经说过了,因为机器的思考方式和人类的思考方式大有不同之处,因此让机器通过自己学习生成自己便于理解和使用的知识,也不失为机器学习的目标之一。
就人工智能的研究领域来说,前面说所说的系统可以表示成下面这样一个图示:
这个系统类型于控制中的负反馈系统,把结果重新作用于知识库上,于是知识库得到不断地修正,以适应系统的需要。但是我们注意到上图中,如果把结果作用于推理机会得到什么结果。
我们前面讨论的专家系统也好,推理机也好,机器学习也好,与人的差距就在于我们还需要告诉它们怎么做,而不是仅仅告诉它们做什么,它们就会去做了。人工智能的两种研究方法,一种是希望找到人类智力的数学解释,只要找到了数学解释,那么人工智能就可以得到实现了;另一种是用一种软件或硬件的结构来模拟人脑的结构,通过类似仿生学的方法来模拟人类思维。而神经网络正是基于后一种思路提出的。从某种意义上来说,对于神经网络而言,结果它改变的是不是知识库,而是推理机的结构,它也是研究人工智能的一种重要的方法。
神经网络也就是模拟人脑中神经元的功能,希望通过模拟人脑最基本的单位神经元功能来模拟人脑的功能。它通过一定的范例训练构成的神经网络,就象教一个小孩子一样,在训练结束后,这个神经网络就可以完成特定的功能了。它是通过范例的学习,修改了知识库和推理机的结构,达到实现人工智能的目的。
最后还有一个应用领域,就是模型识别,我想它应该在知识挖掘中应用不小,因为现在工程中的获得的数据越来越多,要想人为地从这些数据中确定某一规律都不容易,更不要说在这些数据中发现新规律了,因此有必要进行数据挖掘,它的应用对于决策支持系统将有着巨大的意义。
人可以思考,人工智能也需要思考,这就是推理;人可以学习,人工智能也就需要学习;人可以拥有知识,那么人工智能也就需要拥有知识。
人工智能是为了模拟人类大脑的活动的,人类已经可以用许多新技术新材料代替人体的许多功能,只要模拟了人的大脑,人就可以完成人工生命的研究工作,人创造自己,这不但在科学上,而且在哲学上都具有划时代的意义。
最后,我们来总结一下,人工智能的各个研究领域。参照人在各种活动中的功能,我们可以得到人工智能的领域也不过就是代替人的活动而已。哪个领域有人进行的智力活动,哪个领域就是人工智能研究的领域。人工智能就是为了应用机器的长处来帮助人类进行智力活动。人工智能研究的目的就是要模拟人类神经系统的功能。
本文地址:http://com.8s8s.com/it/it24924.htm