董文陽+李全艷+于海洋+李脈
摘 要:不確定推理是指建立在不確定性知識和論據基礎上的推理。本文設計了基于主觀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(List
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
//結論不確定性的更新算法
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.
2.2 結論不確定性的更新算法
結論不確定性的更新算法思想,設計流程圖如圖2所示。
詳細算法代碼設計如下:
public static double rP(List
//結論不確定性的更新算法
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.
2.2 結論不確定性的更新算法
結論不確定性的更新算法思想,設計流程圖如圖2所示。
詳細算法代碼設計如下:
public static double rP(List
//結論不確定性的更新算法
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.