AI光影社
AI光影社
Published on 2025-03-09 / 5 Visits

马老师教AI:第六篇 专家系统是如何实现的(二)

第六篇

专家系统是如何实现的

(二)

清华大学计算机系 马少平

第二节:

推理方法

艾博士:专家系统的推理机就相当于我们的大脑,具有一定的通用性,与具体的任务领域无关。就像我们人类一样,具有了哪个领域的知识就可以求解哪个领域的问题,也就成为了哪个领域的专家,但是大脑都是一样的,具有通用性,只是应用的知识不一样。

小明:专家系统中的推理机是如何利用知识库进行推理的呢?

艾博士:推理机制与具体的知识表示方法有关,根据知识表示方法的不同推理方法也会有所不同。在专家系统中,规则是最常用的一种知识表示方法,下面以规则为例展开说明。

小明:规则就是前面提到过的如下这种形式吗?

IF  <前提>  THEN  <结论>

艾博士:是的,规则就是这种形式,其中<前提>是一些条件的逻辑组合,包括“与”、“或”、“非”等,而<结论>是某种可能的结果或者某些动作等。

按照推理的方向,推理方法可以分为正向推理和逆向推理。

正向推理,就是正向地使用规则,从已知条件出发,向目标进行推理。其基本思想是,检验是否有规则的前提被动态数据库中的已知事实满足,如果被满足,则将该规则的结论放入到动态数据库中,再检查其他的规则是否有前提被满足的,反复该过程,直到目标被某个规则推出结束,或者再也没有新结论被推出为止。由于这种推理方法是从规则的前提向结论进行推理,是规则的一种正向使用形式,所以称之为正向推理。由于正向推理是通过动态数据库中的数据来“触发”规则进行推理的,所以又称之为数据驱动的推理。

例如:

设有规则:

    r1: IF A and B THEN C

    r2: IF C and D THEN E

    r3: IF E THEN F

并且已知A、B、D成立,求证F成立。

其中r1、r2等是规则名,“A and B”、“C and D”等是规则的前提,“A and B”表示“A与B同时成立”,“C and D”表示“C与D同时成立”。

我们看看,如果采用正向推理的方法,如何根据这些规则,从已知条件推导出目标F成立。

初始时A、B、D在动态数据库中,由于A与B均成立,规则r1的前提成立,所以由规则r1推导出C成立,并将C加入到动态数据库中。由于D是已知成立的,刚刚又由规则r1推导出了C成立,所以规则r2的前提成立,根据规则r2,推出E成立,将E加入到动态数据库中。这样规则r3的前提也是成立的,根据规则r3,推出F成立,将F加入到动态数据库中。由于F就是求证的目标,所以结论成立,推理结束。这就是正向推理过程,图6.2给出了该过程的示意图。

图6.2 正向推理示意图

小明:我有一个问题,如果在推理过程中,同时有多个规则的前提都成立,这时如何选择规则呢?

艾博士:如果在推理过程中,有多个规则的前提同时成立,如何选择规则称为冲突消解问题。最简单的办法是按照规则的自然顺序,选择第一个前提被满足的规则执行。也可以对多个满足条件的规则进行评估,优先选择前提条件多的规制执行。

小明:这是为什么呢?

艾博士:由于这样的规则涉及的前提条件比较多,不容易被满足,一旦前提条件被满足,其结论可能是一个比较重要的结果。

也可以从规则的结论距离要推导的结论的远近来考虑,这里说的“远近”是指一旦有了该结果,还需要应用多少条规则才能推导出最终结论。距离目标越近的规则越是要优先执行。也可以人为地对每条规则的重要程度做出规定,重要的规则具有较高的优先级。比如说有如下三个规则:

    r1:IF 生病 THEN 休息

    r2:IF 病重 THEN 去看医生

    r3:IF 昏厥 THEN 打电话叫120

这三条规则的重要性程度显然是不一样的,当三条规则的前提均被满足时,应该优先执行规则r3,打电话叫120抢救。这种情况下,可以在构建知识库时,对规则的重要性进行评价,给出优先级,当发生冲突时按照优先级执行规则。

小明:有正向推理,是不是也有逆向推理呢?

艾博士:与正向推理对应的就是逆向推理。逆向推理又被称之为反向推理,这种推理方法的特点是逆向使用规则。

小明:我不是太明白,逆向使用规则是什么意思呢?

艾博士:我们举例说明。假设有规则:

    IF A and B THEN C

我们想知道C是否成立,就看该规则的前提是否成立,为此就要看A、B是否成立。为了知道A是否成立,就要看是否某个规则的结论为A,然后看该规则的前提是否成立。这就是逆向使用规则。

小明:我明白了,所谓逆向使用规则,就是从规则的结论出发,反过来看规则的前提是否成立,一步一步由后向前推,看是否满足条件。

艾博士:在逆向推理中,按照逆向使用规则的思想,首先将求证的目标作为假设放入到假设集中,查看是否有某条规则支持该假设,即规则的结论与假设是否一致,然后看结论与假设一致的规则其前提是否成立。如果前提成立(在动态数据库中进行匹配),则假设被验证,结论放入到动态数据库中,否则将该规则的前提加入到假设集中,一个一个地验证这些假设,直到目标假设被验证为止。由于逆向推理是先假设目标成立,逆向使用规则进行推理的,所以这种推理方法又称为目标驱动的推理。

例如:在前面正向推理的例子中,如何使用逆向推理推导出目标F成立呢?小明我们看一下推导过程。

首先将F作为假设,发现规则r3的结论可以推导出F,然后检验r3的前提E是否成立。目前动态数据库中还没有记录E是否成立,由于规则r2的结论可以推出E,依次检验r2的前提C和D是否成立。首先检验C,由于C也没有在动态数据库中,再次找结论含有C的规则,找到规则r1,发现其前提A、B均成立(在动态数据库中),从而推出C成立,将C放入动态数据库中。再检验规则r2的另一个前提条件D,由于D在动态数据库中,所以D成立,从而r2的前提条件全部被满足,推出E成立,并将E放入动态数据库中。由于E已经被推出成立,所以规则r3的前提也成立了,从而最终推出目标F成立。这就是逆向推理过程,图6.3给出了该过程的示意图。

图6.3 逆向推理示意图

小明:逆向推理是不是也和正向推理也一样,存在冲突消解问题呢?

艾博士:在逆向推理中也同样存在冲突消解问题,想验证某个假设是否成立时,可能有多个规则的结论与该假设有关,优先选择哪个规则呢?可采用与正向推理一样的方法解决。

在具体实现时,正向推理一般采用类似宽度优先搜索的方式,一步一步由已知条件向目标结论推进,而逆向推理则一般采用类似深度优选搜索的方式,一步一步产生假设,从目标结论开始反向使用规则,对假设进行验证。这里的宽度优先、深度优先搜索与第三篇介绍的方法会有些不同,因为规则的前提中会有“与”、“或”等逻辑运算,在搜索过程中需要考虑这些因素,但基本思想是一样的,很容易扩展过来。

一般的逻辑推理都是确定性的,也就是说前提成立结论一定成立,比如在几何定理证明中,如果两个同位角相等,则两条直线一定是平行的。但是在很多实际问题中,推理往往具有模糊性、非确定性。比如,如果阴天则可能下雨,阴天了不一定就肯定下雨。这就属于非确定性推理问题。关于非确定性推理问题,我们将在后面做详细介绍。

小明读书笔记

最基本的推理方法包括正向推理和逆向推理两种推理方法。所谓的正向推理是从事实出发,正向使用规则,一步一步地推出结论。正向推理又称作是数据驱动的推理。

逆向推理是先提出假设,逆向使用规则验证能得出该假设的规则前提是否成立。如果不能直接验证相关规则的前提是否成立,则进一步将相关规则的前提作为新的假设添加到假设集中,直到所有的假设被验证得出结论,或者一些假设被否定得不出结论为止。逆向推理又被称作目标驱动的推理。

无论是正向推理还是逆向推理均存在冲突消解问题。所谓的冲突消解,就是当同时有多个规则满足触发条件时,如何选择一个规则执行。可以有多个冲突消解解决策略,比如按照规则的排列顺序、按照规则前件已经满足的程度,按照规则优先级等。

未完待续