令Q={Q1,Q2,Q3……Qn}表示待查詢的變量,E={E1,E2,E3……En}為證據(jù)變量,已知其取值為e={e1,e2,e3……ek}。目標(biāo)是計(jì)算后驗(yàn)概率P={Q = q | E = e},其中q={q1,q2,q3……qn}是待查詢變量的一組取值。以西瓜問(wèn)題為例,待查詢變量為Q={好瓜,甜度},證據(jù)變量E={色澤,敲聲,根蒂}并且已經(jīng)知道甜度為e={親綠,濁響,蜷縮},查詢的目標(biāo)值是q={是,高},即這是好瓜并且甜度高的概率有多少
輸入:貝葉斯網(wǎng) B={G,誰(shuí)他}采樣次數(shù) T證據(jù)變量 E 以及取值 e待查詢的變量 Q 以及 取值q過(guò)程:nq=0q0對(duì)Q隨機(jī)賦予初始值for t =1,2……T dofor Qi 屬于 Q doZ = E ∪ Q \ {Qi}z = e ∪ q^(t-1) \{qi(t-1)}根據(jù) B 計(jì)算分布 PB(Qi | Z =z)qit = 根據(jù) PB(Qi | Z =z)采樣所獲得Qi取值qt = 將q^(t-1) 中的 qi(t-1) 用 qi(t)代替end forif q^t =q thennp=np+1end if end for
輸出:P( Q =q | E = e)= nq / T
吉布斯采樣算法先隨機(jī)產(chǎn)生一個(gè)與證據(jù) E= e 一致的樣本 q0 作為初始點(diǎn),然后每部從當(dāng)前樣本出發(fā)產(chǎn)生下一個(gè)樣本。具體來(lái)說(shuō),在第t次的采樣中,算法先假設(shè) q^t = q^(t-1),然后對(duì)非證據(jù)變量逐個(gè)進(jìn)行采樣來(lái)改變其取值,采樣概率根據(jù)貝葉斯網(wǎng)路B 和其他變量的當(dāng)前取值(Z = z))進(jìn)行計(jì)算獲得,假設(shè)經(jīng)過(guò) T 次采樣得到與 q一致的樣本共有n q個(gè),則可以近似的估算出 后驗(yàn)概率
P (Q = q | E = e) = nq / T
實(shí)質(zhì)上,吉布斯采樣是在貝葉斯網(wǎng)所有變量的聯(lián)合狀態(tài)空間與證據(jù) E =e一致的子空間的隨機(jī)漫步,每一步僅僅依賴于前一步的狀態(tài),這是一個(gè)馬爾科夫鏈。在一定的條件下,無(wú)論從什么初始狀態(tài)開(kāi)始,馬爾可夫鏈第t步的狀態(tài)分布在 t -> ∞ 必定收斂于一個(gè)平穩(wěn)分布,對(duì)于吉布斯采樣來(lái)說(shuō),這個(gè)分布恰好是 P(Q | E = e)。因此,當(dāng)T 很大的時(shí)候,吉布斯采樣相當(dāng)于是根據(jù) P(Q | E = e)采樣,從而保證了 P(Q =q | E= e)收斂于nq / T