3.1 推理的基本概念
3.1.1 什么叫推理
人们在对各种事物进行分析、综合并最后做出决策时,通常是从已知的事实出发,通过运用已掌握的知识,找出其中蕴涵的事实,或归纳出新的事实,这一过程通常称为推理,即从初始证据出发,按某种策略不断运用知识库中的已知知识,逐步推出结论的过程。
在人工智能系统中,推理是由程序实现的,称为推理机。已知事实和知识是构成推理的两个基本要素。已知事实又称为证据,用以指出推理的出发点及推理时应该使用的知识;而知识是使推理得以向前推进,并逐步达到最终目标的依据。例如,在医疗诊断专家系统中,专家的经验及医学常识以某种表示形式存储于知识库中。为患者诊治疾病时,推理机就是从存储在综合数据库中的患者症状及化验结果等初始证据出发,按某种搜索策略在知识库中搜寻可与之匹配的知识,推出某些中间结论,然后再以这些中间结论为证据,在知识库中搜索与之匹配的知识,推出进一步的中间结论,如此反复进行,直到最终推出结论,即患者的病因与治疗方案为止。
3.1.2 推理方式及其分类
人类的智能活动有多种思维方式。人工智能作为对人类智能的模拟,相应地也有多种推理方式。下面分别从不同的角度对它们进行分类。
1.演绎推理、归纳推理、默认推理
若从推出结论的途径来划分,推理可分为演绎推理、归纳推理和默认推理。
演绎推理是从全称判断推导出单称判断的过程,即由一般性知识推出适合于某一具体情况的结论。这是一种从一般到个别的推理。
演绎推理是人工智能中一种重要的推理方式。许多智能系统中采用了演绎推理。演绎推理有多种形式,经常用的是三段论式。它包括:大前提、小前提和结论。
①大前提:已知的一般性知识或假设。
②小前提:关于所研究的具体情况或个别事实的判断。
③结论:由大前提推出的适合于小前提所示情况的新判断。
下面是一个三段论推理的例子:
①大前提:足球运动员的身体都是强壮的。
②小前提:高波是一名足球运动员。
③结论:高波的身体是强壮的。
归纳推理是从足够多的事例中归纳出一般性结论的推理过程,是一种从个别到一般的推理。若从归纳时所选事例的广泛性来划分,归纳推理又可分为完全归纳推理和不完全归纳推理两种。
所谓完全归纳推理是指在进行归纳时考察了相应事物的全部对象,并根据这些对象是否都具有某种属性,从而推出这个事物是否具有这个属性。例如,某厂进行产品质量检查,如果对每一件产品都进行了严格检查,并且都是合格的,则推导出结论“该厂生产的产品合格”。
所谓不完全归纳推理是指考察了相应事物的部分对象,就得出了结论。例如,检查产品质量时,只是随机地抽查了部分产品,只要它们都合格,就得出了“该厂生产的产品合格”的结论。
不完全归纳推理推出的结论不具有必然性,属于非必然性推理,而完全归纳推理是必然性推理。但由于要考察事物的所有对象通常都比较困难,因而大多数归纳推理都是不完全归纳推理。归纳推理是人类思维活动中最基本、最常用的一种推理形式。人们在由个别到一般的思维过程中经常要用到它。
默认推理又称为缺省推理。它是在知识不完全的情况下假设某些条件已经具备所进行的推理。例如,在条件A已成立的情况下,如果没有足够的证据能证明条件B不成立,则默认B是成立的,并在此默认的前提下进行推理,推导出某个结论。
由于这种推理允许默认某些条件是成立的,所以在知识不完全的情况下也能进行。在默认推理的过程中,如果到某一时刻发现原先所做的默认不正确,则要撤销所做的默认以及由此默认推出的所有结论,重新按新情况进行推理。
2.确定性推理、不确定性推理
若按推理时所用知识的确定性来划分,推理可分为确定性推理和不确定性推理。
所谓确定性推理是指推理时所用的知识与证据都是确定的,推出的结论也是确定的,其真值或者为真或者为假,没有第三种情况出现。本章将讨论的经典逻辑推理就属于这一类。经典逻辑推理是最先提出的一类推理方法,是根据经典逻辑(命题逻辑及一阶谓词逻辑)的逻辑规则进行的一种推理,主要有自然演绎推理、归结演绎推理及与/或形演绎推理等。由于这种推理是基于经典逻辑的,其真值只有“真”和“假”两种,因此它是一种确定性推理。
所谓不确定性推理是指推理时所用的知识与证据不都是确定的,推出的结论也是不确定的。现实世界中的事物和现象大都是不确定的,或者是模糊的,很难用精确的数学模型来表示与处理。不确定性推理又分为似然推理与近似推理或模糊推理,前者是基于概率论的推理,后者是基于模糊逻辑的推理。人们经常在知识不完全、不精确的情况下进行推理,因此,要使计算机能模拟人类的思维活动,就必须使它具有不确定性推理的能力。
3.单调推理、非单调推理
若按推理过程中推出的结论是否越来越接近最终目标来划分,推理又分为单调推理和非单调推理。
单调推理是在推理过程中随着推理向前推进及新知识的加入,推出的结论越来越接近最终目标,在推理过程中不会出现反复的情况,即不会由于新知识的加入否定了前面推出的结论,从而使推理又退回到前面的某一步。本章将要讨论的基于经典逻辑的演绎推理属于单调推理。
非单调推理是在推理过程中由于新知识的加入,不仅没有加强已推出的结论,反而要否定它,使推理退回到前面的某一步,然后重新开始。非单调推理一般是在知识不完全的情况下发生的。由于知识不完全,为使推理进行下去,就要先做某些假设,并在假设的基础上进行推理,当以后由于新知识的加入发现原先的假设不正确时,就需要推翻该假设以及以此假设推出的所有结论,再用新知识重新进行推理。显然,默认推理是一种非单调推理。
在人们的日常生活及社会实践中,很多情况下进行的推理都是非单调推理。明斯基举了一个非单调推理的例子:当知道X是一只鸟时,一般认为X会飞,但之后又知道X是企鹅,而企鹅是不会飞的,则取消先前加入的X能飞的结论,而加入X是不会飞的结论。
4.启发式推理、非启发式推理
若按推理中是否运用与推理有关的启发性知识来划分,推理可分为启发式推理和非启发式推理。
所谓启发性知识是指与问题有关且能加快推理过程、求得问题最优解的知识。例如,推理的目标是要在脑膜炎、肺炎、流感这三种疾病中选择一个,又设有r1、r2、r3这三条产生式规则可供使用,其中r1推出的是脑膜炎,r2推出的是肺炎,r3推出的是流感。如果希望尽早地排除脑膜炎这一危险疾病,应该先用r1;如果本地区目前正在盛行流感,则应考虑首先选择r3。这里,“脑膜炎危险”及“目前正在盛行流感”是与问题求解有关的启发性信息。
3.1.3 推理的方向
推理过程是求解问题的过程。问题求解的质量与效率不仅依赖于所采用的求解方法(如匹配方法、不确定性的传递算法等),而且还依赖于求解问题的策略,即推理的控制策略。
推理的控制策略主要包括推理方向、搜索策略、冲突消解策略、求解策略及限制策略等。
推理方向分为正向推理、逆向推理、混合推理及双向推理四种。
1.正向推理
正向推理是以已知事实作为出发点的一种推理。
正向推理的基本思想是:从用户提供的初始已知事实出发,在知识库KB中找出当前可适用的知识,构成可适用知识集KS,然后按某种冲突消解策略从KS中选出一条知识进行推理,并将推出的新事实加入到数据库中作为下一步推理的已知事实,此后再在知识库中选取可适用知识进行推理,如此重复这一过程,直到求得了问题的解或者知识库中再无可适用的知识为止。
正向推理的推理过程可用如下算法描述:
①将用户提供的初始已知事实送入数据库DB。
②检查数据库DB是否已经包含了问题的解,若有,则求解结束,并成功退出;否则,执行下一步。
③根据数据库DB中的已知事实,扫描知识库KB,检查KB中是否有可适用(即可与DB中已知事实匹配)的知识,若有,则转向④,否则转向⑥。
④把KB中所有的适用知识都选出来,构成可适用知识集KS。
⑤若KS不空,则按某种冲突消解策略从中选出一条知识进行推理,并将推出的新事实加入DB中,然后转向②;若KS空,则转向⑥。
⑥询问用户是否可进一步补充新的事实,若可补充,则将补充的新事实加入DB中,然后转向③;否则表示求不出解,失败退出。
以上算法如图3.1所示。
图3.1 正向推理示意图
为了实现正向推理,有许多具体问题需要解决。例如,要从知识库中选出可适用的知识,就要用知识库中的知识与数据库中已知事实进行匹配,为此就需要确定匹配的方法。匹配通常难以做到完全一致,因此还需要解决怎样才算是匹配成功的问题。
2.逆向推理
逆向推理是以某个假设目标作为出发点的一种推理。
逆向推理的基本思想是:首先选定一个假设目标,然后寻找支持该假设的证据,若所需的证据都能找到,则说明原假设成立;若无论如何都找不到所需要的证据,说明原假设不成立;为此需要另做新的假设。
逆向推理过程可用如下算法描述:
①提出要求证的目标(假设)。
②检查该目标是否已在数据库中,若在,则该目标成立,退出推理或者对下一个假设目标进行验证;否则,转下一步。
③判断该目标是否是证据,即它是否为应由用户证实的原始事实,若是,则询问用户;否则,转下一步。
④在知识库中找出所有能导出该目标的知识,形成适用的知识集KS,然后转下一步。
⑤从KS中选出一条知识,并将该知识的运用条件作为新的假设目标,然后转向②。该算法如图3.2所示。
图3.2 逆向推理示意图
与正向推理相比,逆向推理更复杂一些,上述算法只是描述了它的大致过程,许多细节没有反映出来。例如,如何判断一个假设是否是证据?当导出假设的知识有多条时,如何确定先选哪一条?另外,一条知识的运用条件一般有多个,当其中的一个经验证成立后,如何自动地换为对另一个的验证?其次,在验证一个运用条件时,需要把它当做新的假设,并查找可导出该假设的知识,这样就又会产生一组新的运用条件,形成一个树状结构,当到达叶节点(即数据库中有相应的事实或者用户可肯定相应事实存在等)时,又需逐层向上返回,返回过程中有可能又要下到下一层,这样上上下下重复多次,才会导出原假设是否成立的结论。这是一个比较复杂的推理过程。
逆向推理的主要优点是不必使用与目标无关的知识,目的性强,同时它还有利于向用户提供解释。其主要缺点是起始目标的选择有盲目性,若不符合实际,就要多次提出假设,影响到系统的效率。
3.混合推理
正向推理具有盲目、效率低等缺点,推理过程中可能会推出许多与问题无关的子目标;逆向推理中,若提出的假设目标不符合实际,也会降低系统的效率。为解决这些问题,可把正向推理与逆向推理结合起来,使其各自发挥自己的优势,取长补短。这种既有正向又有逆向的推理称为混合推理。另外,在下述几种情况下,通常也需要进行混合推理。
(1)已知的事实不充分
当数据库中的已知事实不够充分时,若用这些事实与知识的运用条件匹配进行正向推理,可能连一条适用知识都选不出来,这就使推理无法进行下去。此时,可通过正向推理先把其运用条件不能完全匹配的知识都找出来,并把这些知识可导出的结论作为假设,然后分别对这些假设进行逆向推理。由于在逆向推理中可以向用户询问有关证据,这就有可能使推理进行下去。
(2)由正向推理推出的结论可信度不高
用正向推理进行推理时,虽然推出了结论,但可信度可能不高,达不到预定的要求。因此为了得到一个可信度符合要求的结论,可用这些结论作为假设,然后进行逆向推理,通过向用户询问进一步的信息,有可能得到一个可信度较高的结论。
(3)希望得到更多的结论
在逆向推理过程中,由于要与用户进行对话,有针对性地向用户提出询问,这就有可能获得一些原来不掌握的有用信息。这些信息不仅可用于证实要证明的假设,同时还有助于推出一些其他结论。因此,在用逆向推理证实了某个假设之后,可以再用正向推理推出另外一些结论。例如,在医疗诊断系统中,先用逆向推理证实某患者患有某种病,然后再利用逆向推理过程中获得的信息进行正向推理,就有可能推出该患者还患有别的什么病。
由以上讨论可以看出,混合推理分为两种情况:一种是先进行正向推理,帮助选择某个目标,即从已知事实演绎出部分结果,然后再用逆向推理证实该目标或提高其可信度;另一种情况是,先假设一个目标进行逆向推理,然后再利用逆向推理中得到的信息进行正向推理,以推出更多的结论。
先正向后逆向混合推理示意图如图3.3所示。
图3.3 先正向后逆向混合推理示意图
先逆向后正向混合推理示意图如图3.4所示。
4.双向推理
在定理的机器证明等问题中,经常采用双向推理。所谓双向推理是指正向推理与逆向推理同时进行,且在推理过程中的某一步骤上“碰头”的一种推理。其基本思想是:一方面根据已知事实进行正向推理,但并不推到最终目标;另一方面从某假设目标出发进行逆向推理,但并不推至原始事实,而是让它们在中途相遇,即由正向推理所得到的中间结论恰好是逆向推理此时所要求的证据,这时推理就可结束,逆向推理时所做的假设就是推理的最终结论。
双向推理的困难在于“碰头”判断。另外,如何权衡正向推理与逆向推理的比重,即如何确定“碰头”的时机也是一个困难问题。
图3.4 先逆向后正向混合推理示意图
3.1.4 冲突消解策略
在推理过程中,系统要不断地用当前已知的事实与知识库中的知识进行匹配。此时,可能发生如下三种情况:
①已知事实恰好只与知识库中的一个知识匹配成功。
②已知事实不能与知识库中的任何知识匹配成功。
③已知事实可与知识库中的多个知识匹配成功;或者多个(组)已知事实都可与知识库中的某一个知识匹配成功;或者有多个(组)已知事实可与知识库中的多个知识匹配成功。
这里已知事实与知识库中的知识匹配成功的含义,对正向推理而言,是指产生式规则的前件和已知事实匹配成功;对逆向推理而言,是指产生式规则的后件和假设匹配成功。
对于第一种情况,由于匹配成功的知识只有一个,所以它就是可应用的知识,可直接把它应用于当前的推理。
当第二种情况发生时,由于找不到可与当前已知事实匹配成功的知识,使得推理无法继续进行下去。这或者是由于知识库中缺少某些必要的知识,或者是由于要求解的问题超出了系统功能范围等,此时可根据当前的实际情况做相应的处理。
第三种情况刚好与第二种情况相反,它不仅有知识匹配成功,而且有多个知识匹配成功,称这种情况为发生了冲突。此时需要按一定的策略解决冲突,以便从中挑出一个知识用于当前的推理,这一解决冲突的过程称为冲突消解。解决冲突时所用的方法称为冲突消解策略。对正向推理而言,它将决定选择哪一组已知事实来激活哪一条产生式规则,使它用于当前的推理,产生其后件指出的结论或执行相应的操作;对逆向推理而言,它将决定哪一个假设与哪一个产生式规则的后件进行匹配,从而推出相应的前件,作为新的假设。
目前已有多种消解冲突的策略,其基本思想都是对知识进行排序。常用的有以下几种。
1.按针对性排序
本策略是优先选用针对性较强的产生式规则。如果r2中除了包括r1要求的全部条件外,还包括其他条件,则称r2比r1有更大的针对性,r1比r2有更大的通用性。因此,当r2与r1发生冲突时,优先选用r2。因为它要求的条件较多,其结论一般更接近于目标,一旦得到满足,可缩短推理过程。
2.按已知事实的新鲜性排序
在产生式系统的推理过程中,每应用一条产生式规则就会得到一个或多个结论或者执行某个操作,数据库就会增加新的事实。另外,在推理时还会向用户询问有关的信息,也使数据库的内容发生变化。人们把数据库中后生成的事实称为新鲜的事实,即后生成的事实比先生成的事实具有较大的新鲜性。若一条规则被应用后生成了多个结论,则既可以认为这些结论有相同的新鲜性,也可以认为排在前面(或后面)的结论有较大的新鲜性,根据情况决定。
设规则r1可与事实组A匹配成功,规则r2可与事实组B匹配成功,则A与B中哪一组更新鲜,与它匹配的产生式规则就先被应用。
如何衡量A与B中哪一组事实更新鲜呢?常用的方法有以下三种:
①把A与B中的事实逐个比较其新鲜性,若A中包含的更新鲜的事实比B多,就认为A比B新鲜。例如,设A与B中各有五个事实,而A中有三个事实比B中的事实更新鲜,则认为A比B新鲜。
②以A中最新鲜的事实与B中最新鲜的事实相比较,哪一个更新鲜,就认为相应的事实组更新鲜。
③以A中最不新鲜的事实与B中最不新鲜的事实相比较,哪一个更不新鲜,就认为相应的事实组有较小的新鲜性。
3.按匹配度排序
在不确定性推理中,需要计算已知事实与知识的匹配度,当其匹配度达到某个预先规定的值时,就认为它们是可匹配的。若产生式规则r1与r2都可匹配成功,则优先选用匹配度较大的产生式规则。
4.按条件个数排序
如果有多条产生式规则生成的结论相同,则优先应用条件少的产生式规则,因为条件少的规则匹配时花费的时间较少。
5.按上下文限制排序
把产生式规则按它们所描述的上下文分成若干组,在不同的条件下,只能从相应的组中选取有关的产生式规则。这样,不仅可以减少冲突的发生,而且由于搜索范围小,也提高了推理的效率。例如,食品装袋系统BAGGER就是这样做的。它把食品装袋过程分成核对订货、大件物品装袋、中件物品装袋、小件物品装袋四个阶段,每个阶段都有一组产生式规则与之对应。在装袋的不同阶段,只能应用相应阶段的产生式规则,指示机器人做相应的工作。
6.按冗余限制排序
如果一条产生式规则被应用后产生冗余知识,就降低它被应用的优先级,产生的冗余知识越多,优先级降低越多。
7.根据领域问题的特点排序
对某些领域问题,事先可知道它的某些特点,则可根据这些特点把知识排成固定的顺序。例如:
①当领域问题有固定的解题次序时,可按该次序排列相应的知识,排在前面的知识优先被应用。
②当已知某些产生式规则被应用后会明显地有利于问题的求解时,就使这些产生式规则优先被应用。
在具体应用时,可对上述几种策略进行组合,尽量减少冲突的发生,使推理有较快的速度和较高的效率。