Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1736551
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: 信息化

2013-03-24 17:15:43

人类专家的一个普遍特性是不完美。信息可能不完整,不一致,不确定,但人类专家还是可以处理这些缺陷并作出正确的判断和决策。因此专家系统也必须能够处理不确定性并作出有效的决策。
不确定性可以定义为缺乏使我们得到完美可靠结论的知识。传统逻辑只允许精确的推理,非是即非。但真实世界的问题不能提供这么清晰的知识,这种知识的来源是
1、弱暗示(weak implication);专家的知识之间是模糊不清的,使知识工程师很难建立IF部分和THEN部分之间离散的关联。比如把关联程度表现为数值化的必然因数。
2、不精确的语言;我们的自然语言本来就具有歧义且不精确。
3、为知的数据;数据不完整或丢失。
4、结合不同专家意见的困难。

专家系统应该有能力处理真实世界中的不确定性。贝叶斯推理(Bayersian reasoning)和确定性因数(certainty factors)是其中两种方法。

基本概率理论
设s为成功的次数,f为失败的次数,则
P(成功) = p = s/(s+f)
P(失败) = q = q/(s+f)
p+q=1

A是一个事件,而B是另一个,两者不是互斥的,则在B发生后A发生的概率为
P(A|B) = A和B同时发生的次数 ÷ B发生的次数=P(A∩B) ÷ P(B)
同样,P(B|A) = P(B∩A) ÷ P(A)
因此P(B∩A) = P(A) x P(B|A) = P(B) * P(A|B)
所以P(A|B) = P(A) x P(B|A) ÷ P(B)  (贝叶斯规则)

贝叶斯推理
专家系统的规则可以表示为
IF E is true
THEN H is true {with probability p}
E表示证据(evidence),H代表假设(hypothesis)
P(H|E) = P(E|H) x P(H) ÷ [P(E|H) x P(H) + P(E|?H) x P(?H)]
P(H|E)被称为在观察到证据E后的假设H的"后验概率"(posterior probability)。?H表示假设不成立的事件。等式右侧的概率由专家提供,P(H)称为先验概率(prior probability),P(E|H)被称为条件概率(conditional probability)。这个等式的意义在于,基于假设得到证据的概率更容易得到。

有时基于单个证据E,专家不能选择单个假设,而是提供多个假设H1、H2、...、Hm。有时给定多个证据E1、E2、...、En,专家仍然会产生多个假设。各个假设之间相互独立,且所有假设的概率的和为1。
对于单个证据多个假设
P(Hi|E) = P(E|Hi) x P(Hi) ÷ ∑[ P(E|Hk) x P(Hk) ]

对于多个证据多个假设
P(Hi | E1E2...En) = P(E1E2...En | Hi) x P(Hi) ÷ [ P(E1E2...En|Hk) x P(Hk) ]
要得到Hk发生时E1E2...En同时发生的概率对于专家而言是非常大的负担,几乎是不可能的,因此需要假定所有的证据之间都是独立的,上面的等式可以变换为:
P(Hi | E1E2...En) = P(E1 | Hi) x P(E2 | Hi) x ... x P(En | Hi) x P(Hi) ÷ [ P(E1 | Hi) x P(E2 | Hi) x ...x P(En|Hk) x P(Hk) ]

充分性似然(likelihood of sufficiency)可以表示E对H的充分性程度:
LS = P(E | H) ÷ P(E | ?H)
该值远大于1时,则表示E出现时H出现的概率极其大。
必要性似然(likelihood of necessity)表示E对H的必要性程度:
LN = P(?E | H) ÷ P(?E | ?H)
如果该值在0和1之间,那么如果没有发现E时,H也极有可能不出现。

在基于规则的专家系统里,先验概率P(H)也可以转换为先验机率(prior odds):
O(H) = P(H) ÷ (1 - P(H))
由此可得后验机率:
O(H | E) = LS x O(H)
O(H | ?E) = LN x O(H)
根据后验机率可得到后验概率:
P(H | E) = O(H | E) ÷ [1 + O(H | E)]
P(H | ?E) = O(H | ?E) ÷ [1 + O(H | ?E)]
专家只需提供LS和LH,而不是精确的概率,从而降低专家的负担。

例如一个凶杀案的侦探专家系统:
规则1,
IF嫌疑人在现场 { LS 2.5 LN .1 }
THEN嫌疑人是凶手 { prior .5 }
规则2,
IF 嫌疑人在现场
AND 凶器有嫌疑人的指纹 { LS 10, LN .5 }
THEN嫌疑人是凶手 { prior .5 } 

根据上面两条规则,系统可以依次提供问题,由用户回答:
问1:嫌疑人是否在现场?
答:在
首先,嫌疑人要么是凶手,要么不是凶手,在没有任何前提的条件下,概率各为50%(prior .5已经指出),所以
O(嫌疑人是凶手) = 0.5 / (1 - 0.5) = 1.0。
根据规则1,
O(嫌疑人是凶手 | 嫌疑人在现场) = 2.5 * 1.0 = 2.5。
因此P(嫌疑人是凶手 | 嫌疑人在现场) = 2.5 / (1 + 2.5) = 0.71。也就是说,如果嫌疑人在现场,他是凶手的概率是71%。

问2:凶器上是否有嫌疑人的指纹?
答:有
根据问1回答后的分析,O(嫌疑人是凶手)已经是2.5了,再根据规则2,再次更新
O(嫌疑人是凶手 | 嫌疑人在现场 ∩ 凶器上是否有嫌疑人的指纹) = 10 * 2.5 = 25,此时
P(嫌疑人是凶手 | 嫌疑人在现场 ∩ 凶器上是否有嫌疑人的指纹) = 25 / (1 + 25) = 0.96。此时可以看出,嫌疑人是凶手的可能性已经极其大了。

当然,还可以写更多的规则,而且还可以基于嫌疑人在现场为条件,来推出嫌疑人不是凶手的概率,如:
IF 嫌疑人在现场 { LS .3, LN 5 } 
THEN 嫌疑人不是凶手 { prior .5}

在推理过程中,可以同时推理嫌疑人是凶手和嫌疑人不是凶手的概率,两个概率的和不一定是1.0,最后看谁的概率大,则取其结论。

贝叶斯方法的偏执(Bias)
贝叶斯推理的框架把概率值作为主要输入,而这需要人类的判断。然而,心理学的研究发现,专家无法给出精确的概率值,从而导致条件概率和专家给出的先验概率不一致。
比如让专家同时给出A发生时B发生的概率,以及B发生时A发生的概率,根据贝叶斯公式互换时,得到的概率很可能并不相同。
偏执,影响到概率的估计,会使先验概率不准确。需要专家大量时间的积累才能得到丰富的经验。

解决上述问题有几种方法,最流行的技术是分段线性插值(piecewise linear interpolation),PROSPECTOR应用了该技术。尽管如此,要使用贝叶斯方法,必须满足几个前提,包括基于结论的证据必须是条件独立的。在真实世界里,这些前提很难被满足,所以只有很少的一些系统是基于贝叶斯规则的。

可信度理论(certainty factor theory)和基于证据的推理(evidential reasoning)
可信度理论最开始由MYCIN引入,是贝叶斯推理的流行的可替代品。可信度(cf)是一个衡量专家相信程度的数值,取值范围是[-1.0, +1.0]。基于cf的规则可写为:
IF
THEN {cf}

相信程度(measure of belief,MB)的值为
MB(H, E) = 1 if P(H) = 1
或 {max[P(H | E), P(H)] - P(H)} ÷ { max[1,0] - P(H) } otherwise

不相信程度(measure of disbelief,MD)的值为
MD(H, E) = 1 if P(H) = 0
或 {min[P(H | E), p(H)] - P(H)} ÷ { min[1,0] - P(H) } otherwise

而cf的值可由MB和MD得到:
cf = [MB(H, E) - MD(H, E)] ÷ { 1 - min[MB(H, E), MD(H, E)] }

直观的看,越相信,cf值越接近+1.0;越不相信,cf值越接近-1.0。cf直接由专家给出,更加得主观。

对于同一个假设的多个证据,它们的cf值为:
cf(H, E1E2...En) = min[cf(E1), cf(E2), ..., cf(En)] x cf
cf(H, E1E2∪...∪En) = max[cf(E1), cf(E2), ..., cf(En)] x cf
简而言之,在推理链里,对合取取最小的,对析取取最大的。

当有两条得到相同结论的规则,比如:
1. IF A is X THEN C is Z { cf 0.8 }
2. IF B is Y THEN C is Z {cf 0.6 }
两条规则的cf可能会有冲突,当它们都被触发时,最终的cf值为:
cf(cf1, cf2) = 
cf1 + cf2 x (1 - cf1) if cf1 > 0 and cf2 > 0
或 (cf1 + cf2) ÷ { 1 - min[ |cf1|, |cf2| ] } if cf1 < 0 or cf2 < 0
或 cf1 + cf2 x (1 + cf1) if cf1 < 0 and cf2 < 0
直观上看,两个都大于0的cf合并时,会比两个cf都大一些;都小于0时,比两个都小些;不同号时,中和一些。

作为贝叶斯推理的可选方案,可信度理论是很实用的。

贝叶斯推理和可信度的比较
贝叶斯推理适合于统计数据丰富,概率报告精确的预测和计划领域。否则可信度方法更加得适合。两者共同的问题在于:需要人类专家来提供信息。

阅读(4720) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~