基于主观Bayes方法的不确定推理算法实现

时间:2022-05-09 06:19:58

基于主观Bayes方法的不确定推理算法实现

摘 要:不确定推理是指建立在不确定性知识和论据基础上的推理。本文设计了基于主观Bayes方法的不确定性推理算法,通过实验结果比较了结论不确定的合成算法与更新算法的一致性,实现了不确定推理问题求解的自动化。

关键词:不确定推理 主观Bayes方法 合成与更新算法 求解自动化

中图分类号:TP181 文献标识码:A 文章编号:1672-3791(2014)04(c)-0196-02

不确定性推理是指建立在不确定性知识和论据基础上的推理,其实质是一种从不确定的初始证据出发,通过运用不确定性知识,得出具有一定程度的不确定性但却又是合理的结论的过程[1]。在现在社会中,采用不确定性推理是客观问题的需求。在很多情况下,解决问题所需要的知识往往是不完备、不精确的,知识的描述也是很模糊的,而且在现实世界中,导致统一结果的原因可能是多种多样的,解决问题的方案也可能是多种多样的,这些条件都表示了我们现实生活中存在太多的不确定性问题。关于不确定性推理方法有很多种,但较为著名的方法主要有可信度方法、主观Bayes方法和证据理论方法[4,5]等。本文将主观Bayes方法设计了详细的算法,实现了结论不确定的合成算法与更新算法,并通过实验结果比较了其一致性,探索自动化求解这类不确定性推理问题的实现方法。

1 主观Bayes方法

主观Bayes方法又称主观概率论,是杜达(R.O.Duda)等人在1976年提出的,是一种不确定性推理模型,又称为主观概率论。成功的应用在了地矿勘探专家系统PROSPECTOR中。这一方法在文献[2,3]有详细的描述。

(1)结论不确定性的合成算法思想。

(2)假设有n条知识都支持同一个结论H,而且这些知识都分别是相互独立的证据Ei(i=1,2,…,n),且每个证据对应的观察分别是Si(i=1,2,…,n)。在此情况下求P(H/S1,S2,…,Sn)的后验概率的方法如下。

先分别对每条知识求出H的后验几率,然后在用如下公式求出所有观察下的后验几率:

(1)

(2)

(2)结论不确定性的更新算法思想:如果n条知识都支持同一个结论,先用第一条规则对结论的先验概率进行更新,再将得到的更新概率作为第二条规则的先验概率再对结论进行更新,依次类推,直到所有的规则都更新使用完。设LSi(i=1,2,…,n)表示第i条规则成立的充分性,用于指出证据Ei对结论H为真的支持程度,而LNi(i=1,2,…,n)表示第i条规则成立的必要性,用于指出证据Ei对结论H为真的必要性程度。P(H)表示结论H的先验概率。那么,用如下公式求出结论H的后验概率P(H/S1,S2,…,Sn):

……

(3)

2 结论不确定性的算法设计

在主观Bayes方法中涉及到了知识的充分性量度LS和必要性量度LN,因此,在设计算法中,我将知识作为一个对象处理,且知识包含两个属性(LS,LN),即充分性量度LS和必要性量度LN。对于推理过程,如图1所示。

求后验几率的算法设计:

public static double O(double p, ClassE e) {

if (e.getLs() > 1) { //证据肯定出现的情况下

return e.getLs() * O(p);

} else if (e.getLs() == 1) {

return O(p);

} else if (e.getLs() < 1) { // 证据肯定不出现的情况下

return e.getLn() * O(p);

} else { // 此种情况不存在

return -1;

}

}

算法中,ClassE类包含LS和LN属性,度量产生式规则的不确定性。参数 p表示结论H的先验概率P(H),参数e表示单条知识ClassE类的对象,算法结果返回证据E出现时将结论H的先验概率,P(H)更新为后验几率O(H/E),在算法中还应用到了将概率转化为几率的算法,此算法有概率与几率的关系可设计一重载方法为:

public static double O(double p) {

return p/(1 - p);

}

算法中参数 p表示概率,算法结果返回几率函数值。

2.1 结论不确定性的合成算法

关于结论不确定性的合成算法,可先对每条知识分别求出后验几率,再由公式(1)、(2)进行算法设计:

public static double nP(Listn, double p){

double p1=O(p);

if (n.size()>1){

double on = 1.0;//表示综合每条知识的后验几率初始值

for (int i = 0; i < n.size(); i++) {

on *= O(p1, n.get(i)) / O(p1);

}

on = on * O(p1);

return on / (1 + on);

} else if (n.size() == 1) {

return P(p1, n.get(0));

} else {

return -1;

}

}

算法中参数n表示n条知识都支持相同的结论的集合,参数p表示知识对结论H的先验概率P(H),参数e表示一条知识对象,算法结果综合每条知识的合成算法的后验概率值。

2.2 结论不确定性的更新算法

结论不确定性的更新算法思想,设计流程图如图2所示。

详细算法代码设计如下:

public static double rP(List n, double p) {

//结论不确定性的更新算法

if (n.size() > 1) {

double rp = 0.0;

for (int i = 1; i < n.size(); i++) {

rp = P(P(p, n.get(0)), n.get(i));

}

return rp;

} else if (n.size() == 1) {

return P(p, n.get(0));

} else {

return -1;

}

}

算法中参数n表示n条知识都支持相同的结论的集合,参数p表示知识对结论H的先验概率P(H),参数e表示一条知识对象,算法结果返回更新后的后验概率值。

3 主观Bayes方法算法求解结果

应用上述Java算法,首先读取文本文件“Reliability_knowledge_data.txt”的数据,文本文件如图3所示。

结果如图4所示。

在误差允许的范围内,两种方法得到的结果是一致的。

4 结论

本文根据知识不确定性推理的主观Bayes方法的求解思想,设计了基于主观Bayes方法的不确定性推理的合成与更新算法,并在Java平台上实现了这一算法。从实验结果来看,我们的算法结果正确,两种算法的结果一致,实现了不确定推理问题求解的自动化。

参考文献

[1] 石纯一,黄昌宁,王家.人工智能原理[M].北京:清华大学出版社,1993.

[2] 张仰森,黄改娟.人工智能实用教程[M].北京:北京希望电子出版社,2002.

[3] 王万森.人工智能原理及其应用[M].2版.北京:电子工业出版社,2007.

[4] 刘玉凤.Bayes概率在不确定性方法中的应用[J].辽宁教育学院学报,2002(9):1-2.

[5] 张文修.包含度理论―― 不确定性研究的方法学[J].中国科学基金,1996(4):254-260.

上一篇:小学数学主体性教学模式策略浅议 下一篇:人文素质教育理念在高校语文教学中创新与应用