• 沒有找到結果。

第二章 文獻探討

第五節 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 DVM ∩ 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);

}