第六篇
专家系统是如何实现的
(四)
清华大学计算机系 马少平
第四节:
非确定性推理
小明:在讲解过程中,您多次提到非确定性推理问题,什么是非确定性推理呢?为什么会存在非确定性推理问题呢?
艾博士:数学上的推理都是确定性的,比如“如果角1和角2是同位角,并且角1等于角2,则两条直线平行”就是确定性的,这里的“同位角”是确定的、“两个角相等”是确定的,最终的结论“两条直线平行”也是确定的。但是在现实的实际问题中,往往具有模糊性、非确定性。比如“如果阴天则下雨”,“阴天”就是一个非确定性的东西,是有些云彩就算阴天呢?还是乌云密布算阴天?即便是乌云密布也不确定就一定下雨,只是天阴的越厉害,下雨的可能性就越大,但不能说阴天就一定下雨。这些都是非确定性问题,需要非确定性推理方法才能解决。人类专家在解决实际问题时,往往通过多个非确定性的事实和知识,逐步验证或者否定某个结论。比如还是以“如果阴天则下雨”为例,如果是在夏天、湿度又比较大,则增加了下雨的可能性。
小明:都有哪些因素会导致非确定性呢?
艾博士:随机性、模糊性和不完全性均可导致非确定性,要解决非确定性推理问题,至少要解决以下几个问题:
事实的表示
规则的表示
逻辑运算
规则运算
规则合成
6.4.1事实的表示
所谓事实,就是一个事情的真实情况。在确定性推理中,事实是否存在只有“真”和“假”两种可能,“真”或者“假”是确定的。而在非确定性推理中,事实的真假并不是确定的,而是存在一定的非确定性因素。比如前面提到过的“阴天”就有一定的非确定性,因为有个阴天的程度问题。为此在非确定性推理中,首先要给出非确定性事实的表示方法,对一个事实的真假程度给出适当的描述。
为了描述非确定性事实的真假程度,我们用CF(A)表示事实A为真的置信度,取值范围为[-1,1]。当CF(A)=1时,表示A肯定为真,当CF(A)=-1时,表示A为真的置信度为-1,也就是A肯定为假,CF(A)>0表示A以一定的置信度为真,CF(A)<0表示A为真的置信度为负,也就是以一定的置信度为假,其为假的置信度为-CF(A)。CF(A)=0表示对A一无所知。在实际使用时,一般会给出一个绝对值比较小的区间,只要在这个区间就表示对A一无所知,该区间一般取[-0.2,0.2]。
例如:
CF(阴天)=0.7,表示阴天的置信度为0.7。
CF(阴天)=-0.7,表示阴天的置信度为-0.7,也就是晴天的置信度为0.7。
小明:什么情况表示对事实A一无所知呢?
艾博士解释说:“一无所知”就是对事实A没有任何证据为真或者为假。比如早上起来,同屋的同学问你今天是否阴天,由于房间挂着窗帘,看不到外边的天气情况,没有任何证据说明目前是阴天还是晴天,则这时是否阴天的置信度就为0。
小明:明白了,如果不知道某个事情,其置信度就是0。
6.4.2规则的表示
艾博士:前面曾经提到,数学上的推理是确定性的,比如如果两个同位角相等,则两条直线必然平行,没有任何疑问。但是对于实际问题,往往没有这种确定性,而是非确定性的。比如“如果阴天并且湿度大则会下雨”就不是确定性的,这里除了“阴天”、“湿度大”具有非确定性外,是否会下雨也具有非确定性,哪怕是在确定知道“阴天”、“湿度大”的情况下也是如此。这就需要对于规则的非确定性给出合适的表示方法。
具有置信度的规则,可以表示为如下形式:
IF A THEN B CF(B,A)
其中A是规则的前提,B是规则的结论,CF(B,A)是规则的置信度,又称为规则的强度,表示当前提100%为真时,也就是CF(A)=1时,结论B为真的置信度。同样,规则的置信度CF(B,A)取值范围也是[-1, 1],取值大于0表示规则的前提和结论是正相关的,即前提越成立则结论也越成立。取值小于0表示规则的前提和结论是负相关的,即前提越是成立则结论越不成立。
小明:请艾博士详细解释一下这里的“正相关”、“负相关”是什么含义。
艾博士:所谓的正相关就是规则前提的置信度越大,规则的结论成立的置信度也就越大。比如“如果阴天则会下雨”,“阴天”和“下雨”之间就是正相关,这条规则的置信度应该大于0。如果规则前提的置信度越大,规则的结论成立的置信度越小,就是负相关。比如对于规则“如果晴天则会下雨”,“晴天”和“下雨”之间就是负相关的,这条规则的置信度应该是小于0。
简单地说,一条规则的置信度可以理解为当前提条件的置信度为1时结论为真的置信度。
例如:
IF 阴天 THEN 下雨 0.7
表示“如果阴天的置信度为1时下雨的置信度为0.7”。
IF 晴天 THEN 下雨 -0.8
表示“如果晴天的置信度为1时下雨的置信度为-0.8”,实际上说的是“如果晴天则不下雨”的置信度为0.8。
而规则的置信度CF(B,A)等于0,表示规则的前提和结论之间没有任何相关性。比如:
IF 上班 THEN 下雨 0
表示上班和下雨之间没有任何联系。
规则的前提也可以是复合条件,比如:
IF 阴天 and 湿度大 THEN 下雨 0.8
表示“如果阴天且湿度大,则下雨”的置信度为0.8。
小明:明白了具有非确定性的规则是如何表示的以及其含义,但是具体应该如何使用呢?
艾博士:后面我们会一一介绍。
6.4.3逻辑运算
艾博士:在前面的规则表示介绍中,提到了规则的前提可以具有复合关系,也就是通过“与”、“或”、“非”逻辑运算,将多个事实复合在一起。这就需要确定在具有逻辑运算情况下如何计算置信度的问题。
常用的逻辑运算有“与”、“或”、“非”,在规则中可以分别用“and”、“or”“not”表示。在置信度方法中,具有置信度的逻辑运算定义如下:
CF(A and B) = min{CF(A), CF(B)}
CF(A or B) = max{CF(A), CF(B)}
CF(not A) = -CF(A)
分别表示“A and B”的置信度等于CF(A)和CF(B)中最小的一个;“A or B”的置信度,等于CF(A)和CF(B)中最大的一个;“not A”的置信度等于A的置信度前面取负号。
例如:
已知:
CF(阴天)=0.7
CF(湿度大)=0.5
则:
CF(阴天 and 湿度大)
= min{CF(阴天),CF(湿度大)}
= min{0.7,0.5}
= 0.5
CF(阴天 or 湿度大)
= max{CF(阴天), CF(湿度大)}
= max{0.7,0.5}
= 0.7
CF(not 阴天)
= -CF(阴天)
= -0.7
小明:这几个例子都是两个的逻辑组合,多个情况应该如何计算呢?
艾博士:对于多个逻辑组合的情况也是一样的,可以先两两组合,再与其他的进行组合,或者按照括号进行组合。
比如对于多个“与”的关系,计算CF(A and B and C)时,可以先计算CF(A and B)的结果,为方便说明记作AB,再计算CF(AB and C)的结果。也就是:
CF(A and B and C)
= min(min(CF(A),CF(B)),CF(C))
或者按照加括号的方法:
CF(A and B and C)
= CF((A and B) and C))
同样对于多个“或”的关系时也是类似的:
CF(A or B or C)
= max(max(CF(A),CF(B)),CF(C))
或者按照加括号的方法:
CF(A or B or C)
= CF((A or B) or C))
小明:对于更复杂的情况呢?比如“与”、“或”、“非”都出现时,应该怎么计算呢?
艾博士:这并不复杂,按照优先级一点点两两组合就可以了,遇到“非”的情况,先计算“非”内部的情况,再加负号就可以了。比如对于下面这个例子:
CF((not (A and B or C and D)) or (E and F)) (6.1)
看起来有些复杂,但只要我们一点点拆开计算的话,并不难计算。
按照优先级,“非”的优先级最高,“或”的优先级最低,“与”的优先级居中。所以上式我们应该首先计算“非”部分:
CF(not (A and B or C and D))
但是由于“非”的内部是“(A and B or C and D)”,所以要先计算其内部。按照优先级加上括号就是:
((A and B) or (C and D))
所以,应该先计算CF(A and B),设为AB,再计算CF(C and D),设为CD,最后再计算:
CF(AB or CD)
这样“非”的内部就计算好了,按照“非”的计算原则,-CF(AB or CD)就是CF(not (A and B or C and D))的计算结果,我们记作not1。
在“非”部分计算完之后,接下来计算式(6.1)中的CF(E and F)部分,记作EF。
最后式(6.1)的结果为:
CF((not (A and B or C and D)) or (E and F))
= CF(not1 or EF)
= max(not1,EF)
小明:我了解了,这就跟四则运算差不多,按照优先级计算就可以了。
6.4.4规则运算
小明:在前面讲解非确定性规则表示时,规则的置信度是“当前提条件的置信度为1时,结论为真的置信度”。但是规则前提条件的置信度一般不是等于1的,那么如何通过一条规则推导出结果的置信度呢?
艾博士:小明提了一个非常好的问题。到目前为止,我们讲的还基本是具有非确定性的事实和规则的表示,以及逻辑运算,还没有涉及非确定性推理问题。非确定性推理就是要解决小明你刚才提到的问题。
这里涉及两个问题,一个问题就是小明刚才提到的,当已知规则前提条件的置信度时,如何通过规则计算出结论的置信度。该问题称作规则运算。另一个问题是,多当个规则支持同一个结论时,也就是有多个规则的结论是一样的,如何得到结论最终的置信度。该问题称作规则合成。我们首先讲解第一个规则运算问题,后面再讲解规则合成问题。
前面提到过,规则的置信度可以理解为是当规则的前提肯定为真时结论的置信度。如果已知的事实不是肯定为真,也就是事实的置信度不是1时,如何从规则得到结论的置信度呢?规则运算就是要解决这个问题。
在置信度方法中,规则运算按照如下方式计算:
已知:
IF A THEN B CF(B,A)
CF(A)
则:
CF(B) = max{0,CF(A)}×CF(B,A)
也就是说,当规则前提条件的置信度大于0时,则规则结论的置信度为前提条件的置信度乘以规则的置信度。
小明:这里规则前提条件的置信度为什么要求大于0呢?
艾博士:由于只有当规则的前提条件为真时,才有可能推出规则的结论,而前提条件为真意味着CF(A)必须大于0,CF(A)小于0的规则意味着规则的前提条件不成立,不能从该规则推导出任何与结论B有关的信息。所以在置信度的规则运算中,通过max{0,CF(A)}筛选出前提条件为真的规则,并通过规则前提条件的置信度CF(A)与规则的置信度CF(B,A)相乘的方式,得出规则的结论B的置信度CF(B)。如果一条规则的前提不为真,即CF(A)小于0,则通过该规则得到CF(B)等于0,表示该规则得不出任何与结论B有关的信息。注意,这里CF(B)等于0,只是表示通过该规则得不到任何与B有关的信息,并不表示对B就一定是一无所知,因为还有可能通过其他的规则推导出与B有关的信息。
小明:明白了,原来是这个意思,这里的max{0,CF(A)}用的比较巧妙。
艾博士:这里的max{0,CF(A)}只是为了表达简便,实际上一旦得出规则前提条件的置信度小于等于0,该规则就被暂时“抛弃”了,不再进行与该规则相关的规则运算。对于前提条件的置信度大于0的规则,我们称其为可触发规则,规则运算只在可触发规则中进行。
下面我们再通过例子说明规则运算的计算方法。
例如:
已知:
IF 阴天 THEN 下雨 0.7
CF(阴天) = 0.5
则有:
CF(下雨) = max(0,0.5)×0.7 = 0.5×0.7 = 0.35
即从该规则得到下雨的置信度CF(下雨)为0.35。
已知:
IF 湿度大 THEN 下雨 0.8
CF(湿度大) = -0.5
则有:
CF(下雨) = max(0,-0.5)×0.8 = 0×0.7 = 0
即通过该规则得不到下雨的信息。其实当得知规则前提条件为负时,就不需要后面的乘0运算了。
小明:如果规则的前提条件是多个事实的复合关系时怎么计算呢?
艾博士:前面我们介绍过具有置信度的逻辑运算,当规则前提条件是多个事实的复合关系时,按照逻辑运算的方法先获得规则前提条件的置信度,然后再按照规则运算方法计算规则结论的置信度就可以了。
比如,对于规则和事实:
IF 阴天 and 湿度大 THEN 下雨 0.8
CF(阴天) = 0.5
CF(湿度大) = 0.6
首先计算规则前提条件的置信度,按照逻辑运算有:
CF(阴天 and 湿度大) = min(CF(阴天),CF(湿度大)) = min(0.5,0.6) = 0.5
然后再按照规则运算计算出结论“下雨”的置信度就可以了,即:
CF(下雨) = max(0, CF(阴天 and 湿度大))×0.8 = max(0, 0.5)×0.8 = 0.4
讲到这里艾博士强调说:就像前面我们曾经提到过的一样,在实际使用时,只有当规则前提条件的置信度大于0.2时,规则前提条件才认为为真,这样可以过滤掉大量的小置信度的结果,提高了求解效率。
例如规则为:
IF 阴天 and 湿度大 THEN 下雨 0.8
并已知:
CF(阴天)=0.1
由于该规则前提条件的置信度小于0.2,其结果与阴天的置信度CF(阴天)小于0是一样的,该规则并不会被触发。
6.4.5规则合成
小明:前面关于下雨的例子有两条规则,从规则和事实:
IF 阴天 THEN 下雨 0.7
CF(阴天) = 0.5
得出下雨的置信度CF(下雨)为0.35。
而从规则和事实:
IF 湿度大 THEN 下雨 0.8
CF(湿度大) = 0.4
得出下雨的置信度CF(下雨)为0.32。那么下雨的置信度究竟是多少呢?
艾博士:小明你这个问题问得好。
通常情况下,得到同一个结论的规则会不止一条。在确定性推理中,由于不存在不确定因素,一般只要有一个规则推出了某个结论,则该结论就一定为真。但是在非确定性推理中,当有多个规则得出同一个结论时,因为从不同规则得到的同一个结论的置信度可能是不相同的,所以需要将这些不相同的置信度融合在一起。
例如就小明刚才说的例子,有以下两条规则:
IF 阴天 THEN 下雨 0.7
IF 湿度大 THEN 下雨 0.8
且已知:
CF(阴天) = 0.5
CF(湿度大) = 0.4
则从第一条规则,可以得到:
CF(下雨) = 0.5×0.7 = 0.35
从第二条规则,可以得到:
CF(下雨) = 0.4×0.8 = 0.32
那么究竟下雨的置信度CF(下雨)应该是多少呢?这就是规则合成问题。
在这个例子中,从第一条规则得出下雨的置信度为0.35,就已经知道可能会下雨了,而从第二条规则又推出了下雨的置信度为0.32,显然这个时候应该是加强了下雨的置信度,规则合成后得到的下雨的置信度,应该比每条规则单独得出的下雨的置信度要大。两条规则相互起到一个加强的作用。
小明:是不是应该把两条规则得出的下雨的置信度相加?这样就起到了相互加强的作用。
艾博士:小明你的基本思想是对的,但是在置信度方法中,任何事实的置信度取值范围为[-1,1],直接相加的话,得到的置信度可能会超出这个范围,不能简单地相加。所以对于两条规则得出的结论均大于0时,融合后的置信度按照如下方法计算:
CF(下雨)= CF1(下雨)+CF2(下雨)-CF1(下雨)×CF2(下雨)
其中CF1(下雨)、CF2(下雨)分别表示从第一条规则得到的下雨的置信度和从第二条规则得到的下雨的置信度。
对于前面这个例子,我们可以得出最终下雨的置信度CF(下雨)为:
CF(下雨)=0.35+0.32-0.35×0.32=0.558
小明:原来规则合成是这么运算的。艾博士,刚才您强调了当两个规则得到的结论的置信度均大于0时,规则合成是这样运算的,为什么要强调“均大于0”呢?
艾博士:因为置信度的表示范围为[-1,1],不同规则得到结论的置信度可能大于0,也可能小于0。两个结论均大于0时,说明这两个规则的结论是相互加强的。但如何两个结论的置信度一个为大于0,另一个为小于0时,说明两个规则得出的结论并不一致,既有证据支持这个结论,也有证据否定这个结论,相互之间是削弱的关系,这个时候结论的置信度就要看哪个结论的置信度更强了。就如同法庭上原告律师与被告律师的辩论一样,最终法庭采用更具说服力一方的意见。
所以当两个规则结论的置信度一个大于0,一个小于0时,融合后的置信度为两个置信度相加:
CF(下雨)= CF1(下雨)+CF2(下雨)
其中CF1(下雨)、CF2(下雨)分别表示从第一条规则得到的下雨的置信度和从第二条规则得到的下雨的置信度。
由于两个置信度不同号,一个大于0一个小于0,所以具有相互抵消的作用,最终结论如何,与两个置信度绝对值的大小有关。
例如有以下两条规则:
IF 湿度大 THEN 下雨 0.8
IF 晴天 THEN 下雨 -0.9
且已知:
CF(湿度大) = 0.5
CF(晴天) = 0.3
则从第一条规则,可以得到:
CF(下雨) = 0.5×0.8 = 0.4
从第二条规则,可以得到:
CF(下雨) = 0.3×(-0.9) = -0.27
两条规则的结论合成后有:
CF(下雨) = CF1(下雨)+CF2(下雨)=0.4+(-0.27)=0.13
说明以0.13的置信度支持下雨这个结论。
小明:如果两个规则结论的置信度都是小于0呢?应该如何计算呢?
艾博士:这种情况下与两个结论的置信度均大于0的情况类似。在两个结论的置信度都是大于0的情况下,说明两个规则是相互加强结论的,合成的结果将加大结论的置信度。对于两个结论的置信度都是小于0的情况,则是相互加强否定这个结论,合成的结果是最终的置信度取值更小(负数)。所以对于两条规则得出的结论均小于0时,融合后的置信度为:
CF(下雨)= CF1(下雨)+CF2(下雨)+CF1(下雨)×CF2(下雨)
小明看着上式有些不解地问到:为什么这里全是相加呢?
艾博士笑了一下说:虽然表明上是相加,但是由于CF1(下雨)、CF2(下雨)均是负数,所以CF1(下雨)乘以CF2(下雨)就是正的,从绝对值的角度就是:
|CF(下雨)|= |CF1(下雨)|+|CF2(下雨)|-|CF1(下雨)×CF2(下雨)|
实际上与两个结论的置信度都是大于0的情况下,结果是一样的,只是最终结论的置信度是小于0。
小明:我明白了,实际上当两个结论的置信度是同符号时,也就是均大于0,或者均小于0时,二者的计算是一样的。只有两个结论的置信度不同号时计算才有所不同。
艾博士:我们再举一个两个结论的置信度都是小于0的例子。
例如有以下两条规则:
IF 有彩虹 THEN 下雨 -0.8
IF 晴天 THEN 下雨 -0.9
且已知:
CF(有彩虹) = 0.8
CF(晴天) = 0.5
则从第一条规则,可以得到:
CF(下雨) = 0.8×(-0.8) = -0.64
从第二条规则,可以得到:
CF(下雨) = 0.5×(-0.9) = -0.45
两条规则的结论合成后有:
CF(下雨) = CF1(下雨)+CF2(下雨)+CF1(下雨)×CF2(下雨)
= (-0.64)+(-0.45)+ (-0.64)×(-0.45)
= -0.802
说明以-0.802的置信度支持下雨这个结论,也就是以0.802的置信度支持不下雨。
将以上的规则合成方法综合在一起有:
小明:以上列举的规则合成方法都是两个规则支持同一个结论的情况,如果是有更多的规则支持同一个结论时,应该如何计算呢?
艾博士:当有三个规则同时支持同一个结论时,可以采用先将两个规则合成,其结果再与第三个规则合成的方法。如果有更多的规则支持同一个结论,按照这样的原则逐渐合成就可以了。
例如,假设有以下规则和事实的置信度,如何计算D的置信度CF(D)?
IF A THE D 0.5
IF B THE D 0.6
IF C THE D 0.7
CF(A) = 0.2
CF(B) = 0.3
CF(C) = 0.4
首先计算每条规则单独得到D的置信度,分别用CF1(D)、CF2(D)、CF3(D)表示:
CF1(D) = 0.2×0.5 = 0.1
CF2(D) = 0.3×0.6 = 0.18
CF3(D) = 0.4×0.7 = 0.28
然后用CF1(D)和CF2(D)合成,合成结果用CF12(D)表示。由于两个均为大于0,所以有:
CF12(D)=CF1+CF2-CF1×CF2=0.1+0.18-0.1×0.18=0.262
再用CF12与CF3合成,得到D的置信度CF(D):
CF(D)=CF12+CF3-CF12×CF3=0.262+0.28-0.262×0.28=0.469
所以有D的置信度为0.469。
艾博士接着说:下面我们给出一个用置信度方法实现非确定性推理的例子。
已知:
r1: IF A1 THEN B1 0.8
r2: IF A2 THEN B1 0.5
r3: IF B1 and A3 THEN B2 0.8
CF(A1)=1
CF(A2)=1
CF(A3)=1
分别计算CF(B1)、CF(B2)。
由规则r1有:
CF1(B1) = 1×0.8 = 0.8
由规则r2有:
CF2(B1) = 1×0.5 = 0.5
规则r1和r2的合成得到:
CF(B1) = CF1(B1)+CF2(B1)-CF1(B1)×CF2(B1)
= 0.8+0.5-0.8×0.5 = 0.9
由规则r3有:
CF(B2) = min(CF(B1),CF(A3)) = 0.9×0.8=0.72
所以得到B1的置信度CF(B1)为0.9,B2的置信度CF(B2)为0.72。
听完艾博士的讲解,小明思考了一会提问到:艾博士,当多个规则进行合成时,两个两个的依次合成,其合成结果会不会与合成次序有关呢?比如说有三个规则支持结论D,由三个规则得到的D的置信度分别为:
CF1(D)=0.2
CF2(D)=0.5
CF3(D)=-0.4
合成后的D的置信度CF(D)理应与规则的排列顺序无关,既可以先合成前两个,然后再与第三个合成,也可以先合成后两个,再与第一个合成。
对于第一种合成方法,先计算CF1(D)与CF2(D)的合成,由于两个均大于0,所以:
CF12(D)=CF1(D)+CF2(D)-CF1(D)×CF1(D)=0.2+0.5-0.2×0.5=0.6
再与CF3(D)合成,由于CF12(D)为正、CF3(D)为负,所以:
CF(D)=CF12(D)+CF3(D)=0.6-0.4=0.2
而对于第二种合成方法,先计算CF2(D)与CF3(D)的合成,由于二者一个为正、一个为负,所以有:
CF23(D)=CF2(D)+CF3(D)=0.5-0.4=0.1
再与CF1(D)合成,由于二者均大于0,所以有:
CF(D)=CF1(D)+CF23(D)-CF1(D)×CF23(D)=0.2+0.1-0.2×0.1=0.28
两种合成方法,一个结果为0.2,一个结果为0.28,二者并不一致。这是为什么呢?难道是我计算有误?
艾博士:小明提出了一个非常好的问题。你并没有计算错误,最初的置信度方法确实存在这样的问题,虽然在实际应用中并没有太大的影响。
置信度方法除了存在这种与合成次序有关的不足外,还存在一个不太合理的地方。比如如果:
CF1=0.3
CF2=-0.2
则合成结果CF为:
CF=CF1+CF2=0.3-0.2=0.1
但是如果:
CF1=0.9
CF2=-0.8
则合成结果CF为:
CF=CF1+CF2=0.0-0.8=0.1
两个结果是一样的,这也存在不合理性,因为CF1等于0.9这个置信度已经很大了,即便有否定的置信度为-0.8,合成后的结果也应该相对比较大才合理。为此,当两个不同号的置信度进行合成时,置信度方法可以修改为如下的计算方法:
所以就有了改进后的置信度合成方法:
这样修改之后的意外之喜是,合成结果与合成顺序无关了。小明,你可以再计算一下前面你说的那个例子,验证一下合成结果是否与合成顺序无关。
小明:改进后的合成方法尽然还带来了这样的好处?我验证一下前面那个例子,看是否真的与合成顺序无关了。
CF1(D)=0.2
CF2(D)=0.5
CF3(D)=-0.4
按照先合成前两个再合成第三个的方法:
按照先合成后两个再合成第三个的方法:
两个结果果然是一样的,验证了修改后的合成方法确实与合成顺序无关,这个修改真棒!
小明:在确定性推理中存在冲突消解问题,也就是当多个规则同时被满足条件时,优先选择哪个规则的问题。在非确定性推理中是否也存在同样的问题呢?
艾博士:在确定性推理中,由于无论事实还是规则都是确定的,只要一个规则推出某个结论,那么这个结论就为真。所以存在优先选择哪个规则问题。但是在基于置信度的非确定性推理中,即便有多个规则同时支持某个结论,由于存在非确定性,需要通过规则合成逐步修改结论的置信度,这样就需要触发所有与该结论有关的规则,所以也就不存在冲突消解问题了。但是这与具体的非确定性推理方法有关。
6.4.6置信度方法的理论根据
小明:前面介绍了如何用置信度方法解决非确定性推理问题,感觉还是挺有道理的,那么从理论上来说,是否可以给出合适的解释呢?
艾博士:置信度方法并不是拍脑袋想出来的方法,可以从概率的角度对置信度方法做出解释。
我们先看一个简单的例子。比如现在是阴天,这为是否下雨提供了证据。那么是否会下雨呢?我们先提出下雨的假设,看证据是否能足够支持下雨这个假设。由于现在是阴天,阴天就有可能下雨,所以从阴天的角度,这个证据是支持下雨的,也就是对下雨这个假设的信任度量。但是仔细观察阴天的情况,发现云层比较薄,从这个角度又不支持下雨,也就是对下雨这个假设的不信任度量。这样对于下雨这个假设,就得到了信任和不信任这两个度量。究竟是倾向于下雨还是倾向于不下雨呢?就看这两个度量哪个更大,也就是信任度量与不信任度量的差值。如果差值大于0,则倾向于下雨,否则就倾向于不下雨。信任度量与不信任度量的差值就是下雨的置信度。
对于一般情况,设E是证据,H是假设。用MB(H,E)表示由证据E得到的假设H的信任度量,用MD(H,E)表示由证据E得到的假设H的不信任度量。那么由证据E得到的假设H的置信度CF(H,E),就定义为信任度量MB(H,E)与不信任度量MD(H,E)的差值:
CF(H,E) = MB(H,E) - MD(H,E)
小明:原来置信度是这样的含义。那么信任度量MB(H,E)、不信任度量MD(H,E)又具有什么含义呢?
艾博士:可以用概率定义信任度量MB(H,E)和不信任度量MD(H,E),我们先给出定义,然后再做简单的解释:
看着艾博士给出的公式,小明首先产生了一个疑问:公式中的max(1,0)和min(1,0)是不是写错了?max(1,0)就是1,min(1,0)就是0,为什么要这么写呢?
艾博士称赞了小明的认真态度:你说得是对的,但是这里并没有写错,是故意这么写的。因为这样写之后,两个公式的格式就完全一样了,只是一个是max、一个是min。这么写的目的只是为了表达式更加美观。
艾博士接着说到:下面我们就简单解释一下这两个公式的具体含义。
式中E表示证据,H表示假设,P(H)是假设H成立的先验概率,P(H|E)是具有证据E后H成立的条件概率。信任度量MB(H,E)计算公式中,分子部分
而不信任度量MD(H,E)则与信任度量MB(H,E)刚好相反,其表达式分子部分是H成立的概率因证据E的出现减少了多少,取值小于等于0,分母部分
就如同前面已经说过的一样,置信度CF(H,E)就是信任度量MB(H,E)与不信任度量MD(H,E)之差:
CF(H,E) = MB(H,E)-MD(H,E)
从定义可以看出,CF(H,E)大于0,预示着证据E支持假设H成立,而CF(H,E)小于0,则预示着证据E不支持假设H成立。CF(H,E)等于1表示一定可以从证据E推出H,也就是H一定成立。CF(H,E)等于-1,则表示H一定不成立。CF(H,E)等于0则有两种可能,一种可能是MB(H,E)和MD(H,E)都为0,表示证据E与H无关,既不支持H成立,也不支持H不成立;另一种情况就是MB(H,E)和MD(H,E)相等但不为0,由证据E引起的对H的信任度量和不信任度量相互抵消。
小明:艾博士,在实际使用时,如何获得相关的概率值,以便计算MB(H,E)、MD(H,E),从而得到置信度CF(H,E)呢?
艾博士:这里只是用概率解释置信度的含义,在实际使用中,并不要求先给出概率值再计算置信度,因为很多概率值很难获得。就如同前面给出的例子一样,在实际使用时,作为规则的组成部分,由专家直接给出置信度CF(H,E)。当然这件事情并不简单,收集知识并给出合适的置信度,是一件非常麻烦的事情,可能需要反复调整、测试,才会获得一个比较实用的知识库。知识获取一直是专家系统建造过程中的瓶颈问题,没有合适的知识库,专家系统难于很好地工作,而知识的获取和知识库的构建又是非常棘手的问题,这样某种程度上阻碍了专家系统的实际应用。
艾博士最后总结说:置信度方法是求解非确定性推理的一种方法,可以在一定程度上处理非确定性推理问题,但是也存在一些不足。除了置信度方法之外,还有很多其他的非确定性方法,比如专家系统PROSPECTOR使用的方法、D-S证据理论、近似推理等,都各具特点,我们就不一一介绍了。
小明读书笔记
在实际问题中,往往遇到非确定性推理问题。非确定性推理需要解决如下几个问题:
事实的表示
规则的表示
逻辑运算
规则运算
规则合成
有多种非确定性推理方法,本篇以MYCIN中提出的置信度方法为例介绍非确定性推理方法。
在置信度方法中,用CF(A)表示事实A为真的置信度,其取值范围为[-1,1],当CF(A)=1时,表示事实A肯定为真;当CF(A)=-1时,表示事实A肯定为假;CF(A)>0表示A以一定的置信度为真,CF(A)<0表示A以一定的置信度为假;CF(A)=0表示对A的真假一无所知。在实际使用时,一般当|CF(A)|<0.2时就等价于CF(A)=0。
具有置信度的规则表示形式如下:
IF A THEN B CF(B,A)
其中A是规则的前提,B是规则的结论,CF(B,A)是规则的置信度,又称为规则的强度,表示当CF(A)=1时,结论B为真的置信度。规则的置信度CF(B,A)取值范围为[-1, 1],取值大于0表示规则的前提和结论是正相关的,取值小于0表示规则的前提和结论是负相关的,即前提越是成立则结论越不成立。
常用的逻辑运算有“与”、“或”、“非”,在规则中可以分别用“and”、“or”“not”表示。在置信度方法中,定义置信度的逻辑运算如下:
CF(A and B) = min{CF(A), CF(B)}
CF(A or B) = max{CF(A), CF(B)}
CF(not A) = -CF(A)
在置信度方法中,规则运算按照如下方式计算:
已知:
IF A THEN B CF(B,A)
CF(A)
则:
CF(B) = max{0,CF(A)}×CF(B,A)
在置信度方法中,当两个规则同时支持同一个结论时,设从规则1得到CF1(B),从规则2得到CF2(B),则合成后有:
如果是三个规则同时支持同一个结论,则采取两个结果先合成,再与第三个结果合成的方法。对于更多的规则合成,采取类似的方法进行。
上面这种合成方法与规则的排列顺序有关,不同的合成顺序得到的结果可能会不一样。为此提出了改进的合成方法如下:
改进后的规则合成方法其结果与规则的合成顺序无关。
设E是证据,H是假设,从概率的角度,置信度CF(H,E)被定义为信任度量MB(H,E)与不信任度量MD(H,E)之差:
CF(H,E) = MB(H,E) - MD(H,E)
其中信任度量MB(H,E)为由证据E得到的假设H的信任度量:
不信任度量MD(H,E)为由证据E得到的假设H的不信任度量:
这只是一种理论上的解释,实际使用时直接给出置信度CF。
未完待续
扫码关注我们
微信号|airadiance
(点击“阅读原文”,查看勘误表、获取PPT)