推理机可能是基于规则的专家系统的最有趣的特性。这是专家系统的一部分,它处理问题事实并在知识库中搜索规则以便获得对于用户的最终建议。出于这一原因,推理机有时被作为是规则的注释器。这使得专家系统具有了动态特性,同时如果没有推理机,专家系统将不能够做出建议。
有两种基本类型的基于规则的推理。前向链是数据驱动的方法。在这一方法中,可以从最初的问题事实开始,然后通过使用知识库的规则从最初的问题事实中得出结论。另一种方法是反向链,它是基于目标的方法。在这一方法中,从某种所期望或假设的事物开始,然后找到支持的假设,或与假设相矛盾的规则。理解这两种推理形式的最好的方法是研究这两种方法是如何工作的具体的例子。我们将首先讨论6条规则的一个十分简单的例子,然后再研究第二个更加详细的例子。
1.简单例子
让我们假设,给了我们下面的6条规则,这6条规则将专门知识解释为在币值波动和决定购买债券之间的因果关系:
R111-1
R1.IF美元升值[4]
THEN利率降低
R2.IF美元贬值
THEN利率提高
R3.IF利率提高
THEN债券价格降低
R4.IF利率降低
THEN债券价格提高
R5.IF债券价格提高
THEN出售债券
R6.IF债券价格降低
THEN买入债券
在前向链中,我们从问题事实开始。让我们假设,我们的客户观察到美元相对于其他主要货币贬值(事实=美元贬值)。基于这种信息,我们的客户希望知道这是不是预示着可以购买债券,或是不进行购买。这将会引起下面的规则顺序,以便做出建议。
•从美元贬值这一最初的问题,R2推断出利率会增加。
•由于利率增加,R3推断出债券价值会降低。
•从债券的价值下降,R6推断出我们应该购买债券。
因而,开始规则的顺序将使我们得出建议,这就是R2→R3→R6。前面提到的工作内存将跟踪最初的事实,同样,也会跟踪新的事实。这一新的事实是在从规则的前向链的过程中从规则中推断出的。
反向链的过程有一点难以理解。在这种情况中,我们反过来进行分析。我们从期望或是假设开始,同时寻求支持或反驳假设的证据。让我们假设我们的初始假设使我们将可能购买债券。这一次,最初给我们的事实是美元贬值。
第一步中,我们在规则的THEN部分中查找包含我们的最初假设购买债券的规则。唯一的这样的规则是R6。为了证明R6,我们需要确保债券价格下降。由于我们之前没有证明条件,因此我们将R6放置到规则堆栈中。
第二步中,我们在规则的THEN部分中查找包含利率增长的规则。相关的规则是R3,并且为了证明这一规则,我们需要证明利率增长。因而,我们将R6放置到规则堆栈中。
第三步中,我们在规则的THEN部分中查找包含利率增长的规则。R2是所使用的正确的规则,因此,我们需要确保美元升值的事实,以便去证明这一规则。由于我们已经知道了美元贬值的事实(由我们的最初事实所给出),因此证明了可以购买债券。所排列的规则是R6→R3→R2,这正是在前向链的实例中所应用的规则的反向。虽然,在这一简单的例子中,仅将规则反向,但是通常并不是这样的。
2.其他实例:股票选择专家系统
让我们看一个稍微复杂一些的例子。使用了如下的23条规则去帮助我们选择股票。为了简化讨论,这里将规则分为四个不同的标题。
I.通用规则
R1.IF市场活跃,同时部门?x景气
THEN买入部门?x股票
R2.IF市场衰退,同时部门?x不景气
THEN做空部门?x股票
R3.IF市场处于横向整盘
THEN观望
II.决定市场趋势的规则
R4.IF S&P500提高AND NASDAQ提高
THEN市场活跃
R5.IF S&P500降低AND NASDAQ降低
THEN市场衰退
R6.IF S&P500微调AND NASDAQ微调
THEN市场观望
Ⅲ.与油价增长有关的规则
R7.IF原油价格增长>20%
THEN原油价格高
R8.IF原油价格高
THEN能源部门景气
R9.IF原油价格高
THEN交通部门不景气
R10.IF能源部门景气
THEN购买能源部门股票
R11.IF购买能源部门股票
R12.IF购买能源部门股票
THEN购买英国石油公司股票
R13.IF原油价格高
THEN做空交通部门股票
R14.IF做空交通部门股票
THEN做空联合航空公司股票
R15.IF做空交通部门股票
THEN做空美国航空公司股票
IV.与油价增长有关的规则(www.daowen.com)
R16.IF利率>9%
THEN利率较高
R17.IF利率<6%
THEN利率较低
R18.IF利率较高
THEN金融部门不景气
R19.IF利率较低
THEN金融部门景气
R20.IF购买金融部门股票
THEN购买美国国家金融服务公司股票
R21.IF购买美国国家金融服务公司股票
THEN购买美国银行股票
R22.IF做空金融部门股票
THEN做空美国国家金融服务公司股票
R23.IF做空金融部门股票
THEN做空美国银行股票
三种通用规则,即第一个簇是基于以下三个基本的投资规则[7]:
1)在市场处于牛市中购买业绩良好部门的股票。
2)在市场处于熊市中购买业绩不好部门的股票。
3)当不能辨别市场的趋势时,就观望市场或是持有现金。
前两个规则表述了购买的决定,或是短期卖出股票是基于两个因素,即市场总体条件和部门领域的业绩。部门领域指的是在经济领域中的一个分支,比如交通、能源、金融或是公共事业。抛空,也就是所知的卖空,这指的是卖出投资者实际上并不拥有的股票(卖空者“借”了股票),这是希望在以后更低的价值的时候将它们买回。投资者采取了像熊一样的姿态,并且预期股市的价格下跌。因而,当市场处于下降趋势的时候,同时特别的部门领域疲软的时候使用卖空的手段。
对于R1和R2进行概括的表述,这样可以将它们应用到任何部门。如前面所述,你需要使用变量去产生普遍的规则——在这种情况中,变量?x代表一个特别的部门领域。我们也可以对每一个部门领域产生单独的规则。例如:
IF市场涨势,同时交通部门景气
THEN购买交通部门股票
IF市场涨势,同时技术部门景气
THEN购买技术部门股票
通过使用变量,我们能够在我们的知识库中更有效和简洁地将专门技术转化为机器语言。
规则的第二个簇决定了普通市场是否有上涨的趋势、下跌的趋势或是横向整盘(也就是说没有确定的趋势)。决定是基于S&P500和NASDAQ[5]的趋势而定,这是两个股票市场的指数。规则的第三个簇着眼于当原油的价格产生飞速上涨的时候将会发生什么情况,特别是对于能源和运输部门领域将会发生什么。最后,规则的第四个簇描述了利率对于金融部门的影响。
让我们首先看前向链的例子,以便了解股票选择专家系统是如何工作的。我们将假设下面的初始情况:
S&P500增长
NASDAQ增长
利率=5.5%
基于这些初始情况,将开始如下的规则顺序:
1)R4推断出市场会上升的情况。
2)R17推断出利率会降低。
3)R19推断出金融部门会变得繁荣。
4)R1推断出购买金融部门中的股票。
5)R20推断出购买Countrywide Financial股票的建议。
6)R20推断出购买Bank of America股票的建议。
从图5-2中可以看出在工作内存中的事实,同时看出如何通过使用前向链对这些事实进行推断。最后,专家系统建议用户购买美国国家金融服务公司(Country-wide Financial)股票和美国银行(Bank of America)股票。
现在,让我们看一下反向链的实例。首先,我们将陈述假设:做空美国航空(American Airlines)公司股票。在反向链中,我们要去寻找证据去支持或驳倒这一假设。此外,我们将假设下面的初始事实:
图5-2 前向链实例中的工作内存
原油价格增加=40%
S&P500下降
NASDAQ下降
第一步,在规则的THEN部分,我们寻找包含做空美国航空公司股票的假设。唯一的规则是R15,并且这一规则告诉我们需要确定做空交通部门领域的股票,以便证明R15。我们将R15放置到堆栈中。
第二步,我们使用R2去证明做空交通部门领域的股票。为了证明R2,我们需要证明两个事实:市场走低,交通部门领域变得不景气。我们将R2放置在堆栈中。
第三步,我们使用R5去证明市场走低。我们知道,由于两个初始的事实存在,即S&P500走低和NASDAQ走低,因此这种情况是确实的。我们能够将市场走低添加到我们的工作内存中。
因而,在第四步中,我们需要确定交通部门领域是不景气的。我们可以通过使用R9去完成这一证明。为了证明这一事实,我们需要确定原油价格很高。
第五步,我们使用R7去证明原油价格很高。由于初始事实中表明了原油价格增长等于40%,因此我们知道这是真实的。
因而,我们使用了下面的规则顺序R15→R2→R5→R9→R7去证明我们的假设。专家系统将建议用户做空美国航空公司股票。
在同样的例子中,反向链的原理执行的顺序可能完全不同。通过知识库中采用的不同路径,可能会证明做空美国航空公司股票的目标。可以执行下面的规则顺序去证明同样的决定。
第一步,我们可以使用R15(如同前面一样)。为了证明做空美国航空公司股票,我们需要确定做空交通部门领域的股票。
然而,现在我们需要执行R13作为替代。为了证明做空交通部门领域的股票,我们需要确定原油价格很高。
为了证明原油价格很高,我们需要使用R7。我们知道,由于初始事实给出了原油价格增长等于40%,因此这是真实的。
因而,在这种情况中,我们仅仅使用了三个规则R15→R13→R7就证明了我们的假设。
那么采用那一种方法更好呢?是采用前向链还是采用反向链呢?前向链更加易于理解——你仅仅需要向系统输入事实的序号,并且让专家系统给出建议就可以了,无论可能产生什么。事实上,许多专家系统在做出建议之前都会首先收集信息和数据。对于更多人,前向链似乎是专家系统的自然方式。此外,就使专家系统能够确定需要给出何种建议而言,前向链使人们获得了最大的灵活性。
然而,反向链也有大量的优势。如果在一个领域中的专家系统从一些初始假设开始工作,并且希望发现支持或者反驳假设的证据,那么反向链方法可能就会更加合适。例如,诊断的专门技术(也就是确定一个人或一种事物出现何种问题),常常需要从去证明或是反驳的初始假设开始。比如在医学诊断中,医生需要推断患者出现什么疾病。医生要先进行化验和其他诊断去确定病人是否患有特别的疾病。可以看出,反向链是更加自然的方式去处理这一类型的专家推理。
反向链的另一个优势是其常常可以通过知识库更加集中地和有向地进行搜索。复杂的知识库可能包括几百条规则,反向链方法能够通过广泛的知识库将搜索限制并且仅仅集中到与初始假设相关的那些规则。相反,前向链方法将执行所找到的任何一条与初始事实有联系的规则,并且可能得到与当前的任务无关的新的事实。因而,前向链方法在获得建议方面效率较低。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。