第二章 文獻探討
第五節 A BDUCTIVE 推論
2 log ))
( ( )
(s H P Y n
EH * ≥ − (2.15)
在適性測驗(adaptive testing)這提供亂度(entropy)很自然的解釋。假如有 關學生的知識用機率分布P(Y)的亂度(entropy)H(P(Y))表示,則我們至少需要
2 log
)) ( (P Y
H 個問題,每個問題有兩個答案;針對學生的知識狀態去產生精準資訊。
這是定理 1 的結果,EH(s')是有可接受的嘗試錯誤(admissible heuristics)。
我們可以在AO 演算法使用嘗試錯誤* EH(s')。這種演算法的每一步驟,是從全部 所有可能展開的策略中選最小值的策略 's 。我們擴展一個非展開的節點,也就是 從選到的策略s'節點的子節點。設定EH(en)=EH(en)的值並且利用遞迴公式,我 們重新計算 n 的全部子孫節點的值。使用可接受的嘗試錯誤(admissible heuristics)
保證第一次展開的完全策略是最佳的策略。
第五節 Abductive 推論
當我們在貝氏網路裡進行更進一步的研究時,我們將會探討到演算法與推論 的部份,這邊要介紹的是Abductive推論(abductive Inference),除了逼近找到機 率值的演算法外,我們對於所找到每個變數證據的條件機率值及所獲得證據的 Most probable explanation(MPE)所感到興趣,而在找到確定MPE的這個過程,
我們將其稱為Abductive Inference,以下將用例子對Abductive Inference和MPE做 解釋。
貝氏網路用於找出不確定性問題方面,有著相當大的助益,這裡用一個醫學 的例子用以解釋。所欲探討的問題是,一個病人能否藉由一些非直接的測試以及 問題的探究,去獲得他是否有此疾病的探討,在此例子裡將運用計算其個別條件 機率的方式去測試個別的病人是否患有此疾病。各變數的表示方法將羅列於下
表:
表 2-5 變數名稱代表意含對照表 變數 變數狀態 該變數影響的狀況
h1 病人有抽菸的歷史 H h2 病人沒有抽菸的歷史
b1 病人有支氣管炎 B b2 病人沒有支氣管炎
l1 病人有肺癌 L l2 病人沒有肺癌
f1 病人有感到疲勞 F f2 病人沒有感到疲勞
c1 病人胸部X光判讀為陽性 C c2 病人胸部X光判讀為陰性
圖 2-6 醫學相關之貝氏網路圖
以上表為例,我們在知道病人有抽菸歷史以及胸部X光檢查結果為陽性時,
我們將更進一步的去探討,這位病人是否患有肺癌(P(l1|h1,c1))和支氣管炎
(P(b1|h1,c1)),因此衍生出一個演算法可以去履行這類的推論。然而對於醫生們 H
C F
L B
P(h1)=.2
P(l1|h1)=.003 P(l1|h2)=.00005
P(c1|l1)=.6 P(c2|l2)=.02 P(f1|b1,l1)=.75
P(f1|b1,l2)=.10 P(f1|b2,l1)=.5 P(f1|b2,l1)=.05 P(b1|h1)=.25
P(b2|h2)=.05
而言,與其說他們對於各個症狀引起病症的可能機率感興趣,不如說他們對於最 有可能影響(MPE)病症的原因更感興趣。因此,對於醫生而言,他們想知道的 是病人同時罹患肺炎和支氣管炎;罹患肺炎未罹患支氣管炎;未罹患肺癌但罹患 支氣管炎,以及皆未罹換肺炎及支氣管炎的最大可能機率為何。他們期望能透過 了解病人的症狀,進而可以知道病人最有可能罹患的疾病為何,而在尋找最大可 能解釋機率的這個過程,我們將其稱之為Abductive Inference,接下來我們將對其 在貝氏網路上做一些定義:
定義(G , P),其中G=(V , E)將其定義為一個貝氏網路,並且令M ⊆ ,V V
D⊆ 且M ∩ D=φ,M是一個呈現的資料集,而D是一個說明的集合,令m是變 數M集合中的數值,則變數D的最大可能值則如下式所示
)
| (d m
P (2.16)
我 們 將 其 稱 為 m 的 MPE , 而 這 個 尋 找 的 過 程 , 我 們 將 其 稱 為 Abductive Inference。對於Abductive Inference以及他的實際操作例子,對此將做更深入的探 討與舉例。
此演算法的問題在於其運算複雜度相當的大,舉個例子來說,當每個變數都 有兩種可能的情況,而共有k種可能變數,則將會有2 種可能解釋的情形,k Cooper
( 1990 ) 指 出 應 用 在 貝 氏 網 路 裡 的 Abductive Inference 是 一 個 NP-hard
(non-deterministic polynomial)問題。並提出利用修剪法之廣度優先搜尋(best-first search with branch-and-bound)來改善此方法。
一、關於Abductive Inference 的廣度優先搜尋法
修剪法之廣度優先搜尋,一般而言,此種方法通常被用來解決那些,問 題的選擇是取決於所欲探討問題的函數最大值或最小值,Neapolitan & Naimipour
(1998)發表了一個非正式論文來介紹這個技術。我們這裡將用這個技術來建立 Abductive Inference的演算搜尋法。
針對我們欲探討的例子,將會用到一些專業的醫療術語來表達,首先我們先 假設那些可以解釋疾病所形成的集合將可組成K種可能的疾病,集合中的每一個 可原因,都可能用來表示或不表示各別病人的健康狀況,將其用數學的表示方法 如下所示:
} ,..., ,
{D1 D2 Dk
D= (2.17)
藉此可知道每個病人的各個病徵M都有其特定的值所形成的集合m可以作為 表示,目標是要找到最大機率可以解釋該疾病的病徵資料集,因此我們必須假設 每個可以解釋疾病的病徵都只有兩個值。令A=Di1,Di2,...,Dij是D的子資料集,舉 例來說,現在總共有四種疾病,但當我們只用D1, D3來表示該事件時,他同時也 等同於D1 =有、D2 =無、D3 =有、D4 =無,我們可以將此疾病的條件機率表示 為如下式所示
)
| , (D1 D3 m
P (2.18)
欲解決找出該疾病的最大可能病徵集合上,最常使用的是建立一個狀態空間 樹,而狀態空間樹上的每個節點都會包含著D的子集合,樹的根節點包含一個空 集合,左邊的子節點包含{D ,右邊的子節點包含一個空集合;接著往下發展的1} 左邊的子節點包含了{D1,D2},右邊的子節點則包含了{D 。一般而言,對同一1} 水平節點i來說,左邊的節點會多包含了Di+1,且其右邊的節點未包含。在狀態空 間樹裡的每個葉節點表示了一個可能解,為了解決這些問題,我們將計算每個葉 節點的條件機率集合,並找出一個該節點的最大機率值。
當然在搜尋的目標上,我們希望可以避免找到狀態空間樹的太多節點,因而 衍生出一個用於建立的函數,對於每個節點,將他的子節點會造成的條件機率影 響,給予一個上界,當在計算節點時,需要計算的為該節點的條件機率值、以及
其子節點的上界可能機率值。利用上界當做一個規範有兩個目的,第一、對於上 好時,則將此節點稱之為不可行節點(nonpromising),其餘的,我們稱之為可行 節點(promising)。
二、圖示Abductive Inference
在用圖2-7說明Abductive Inference演算法實際運行的狀況時,這邊將舉一個醫 療上的例子用以說明。在我們的可解釋函數集 D 裡面分別有四種疾病
貝氏網路為一架構,其病徵與疾病之間存在著機率關係。
009 bound P
圖 2-7 利用修剪法之廣度優先搜尋之最佳優先演算法展開的狀態空間樹
3. 計算節點(1,2)
(1)其條件機率值與其父節點相同,為.1
(2)其先驗機率值及最大彈性程度也和其父節點相同為.9和90
P(D1, D4|m)=.65 bound=90
P(D |m)=.41 bound=0
P(D4|m)=.6 bound=0
P(φ|m)=.1 bound=0 P(D1,D2|m)=.1
bound=.3
P(D |m)=.4 1 bound=.9
P(D2|m)=.15 bound=.5
P(φ|m)=.1 bound=90
P(D1,D3|m)=.05 bound=.1
P(φ|m)=.1 bound=90 P(D |m)=.4 1
bound=.9
P(φ|m)=.1
4. 定義可行性節點,展開具有最大彈性程度的節點 bound P
6. 計算節點(2,4) bound P
(3)此為不可行節點,因為其最大彈性程度維.2小於最佳解P(Best|m)=.4 9. 計算節點(3,4)
(1)其條件機率值與其父節點相同,為.1
(2)其先驗機率值及最大彈性程度也和其父節點相同為.9和90 10. 定義可行性節點,展開具有最大彈性程度的節點
(1)此節點為(3,4),並接著計算其子節點 bound P
(3)此為不可行節點,因為其最大彈性程度維.3小於最佳解P(Best|m)=.6 15. 計算節點(2,2)
(1)其條件機率值與其父節點相同,為.4
(2) 其先驗機率值及最大彈性程度也和其父節點相同為.009和.9 bound P
(3)此為不可行節點,因為其最大彈性程度維.1小於最佳解P(Best|m)=.6
(2)令其最大彈性程度為0,因為此節點為狀態空間樹的葉節點 22. 定義可行性節點,展開具有最大彈性程度的節點
(1)沒有可行性節點、需要展開的節點,固已完成狀態空間樹的展開 因此我們得到疾病的最大機率的集合為{D1,D4},且其條件機率值為
65 . )
| ,
(D1 D4 m = P
由上述例子可以得知,此搜尋法則可以減短搜尋的時間,如上述例子為說明,
我們用此搜尋法只需要展開15個節點,但是如果將所有可能節點展開,則會有23 個節點存在,故用此方法可以避免展開一些不需要的節點。
在將廣度優先搜尋法應用在Abductive Inference時,必須用到優先佇列
(priority queue),佇列的排序根據其先驗機率值遞增排序,排序在最前面的最容 易被踢除,位於最後面的當作最佳解的限制。其演算方法如下所示:
問題:定義一個所有可能解釋情形的定義域,其中我們假設 A是A 的一個子' 集合,則
) ( ) '
(A P A
P ≤
輸入:正整數n,貝氏網路(G , P),其中G=(V , E),並且令M ⊆ ,V D⊆V 且M ∩ D=φ,M是一個呈現的資料集,而D是一個說明的集合,令m是變數M集 合中的數值。
輸出:一個可以解釋該問題的MPE最佳集合,Pbest是一個最佳的機率,再給 定M = 的情況下。 m
圖 2-8 Abductive Inference 演算法流程
Note. From Richard E. Neapolitan. (2003). Learning Bayesian Networks. Prentice Hall.
void Copper (int n,
Bayesian-network & (G , P) where G=(V , E) ordered-set-of-diseases D,
set-of-symptom M, set- of-symptom-values m,
set-of-indices & Best, float & Pbest) {
Priority-queue-of-node PQ;
Node X,Y;
X.level=0; //set X to the root.
X.A=φ; //Store empty set at root Best=φ;
Pbest=P(Best|m);
X.bound=bound(X);
Insert(PQ,X);
While (empty(PQ)){
remove(PQ,X); //Remove node with best bound if (X.bound>Pbest){
Y.level=X.level+1; //Set Y to a child of X Y.A=X.A; //Set Y to the child that includes Put Y.level in Y.A; //the next disease
if (P(Y.A|m)>Pbest){
Best=Y.A;
Pbest=P(Y.A|m); Y.bound=bound(Y); //not include the next disease if (Y,bound>Pbest)
Insert(PQ,Y);
}