貝葉斯網絡小結

週末去給同事分享貝葉斯網絡,每次分享過後的東西都沒有記錄感覺挺可惜的,故把準備分享過程中的一些筆記、資料、關鍵點等寫成文章記錄下來。


1、貝葉斯網絡的定義

一個貝葉斯網絡是一個有向無環圖(DAG),其節點表示一個變量,邊代表變量之間的聯繫,節點存儲本節點相當於其父節點的條件概率分佈。


其中每個節點受其父節點所影響,即其父節點代表原因,子節點表示結果。

用數學的形式描述就是貝葉斯網絡各變量的聯合概率分佈等於其每個節點的以其父爲條件概率的乘積。

即:

p (x) = \prod_{i \in I} p \big(x_i \,\big|\,  x_{\operatorname{pa}(i)} \big)


2、貝葉斯網絡的推導

貝葉斯網絡的推導即回答該貝葉斯網絡上所有可能的概率問題,以上圖爲例,可以回答P(x2=0),P(x3=1|x2=0),P(x2=0,x3=1,x4=0)等任意的概率問題。

(1)精確推導

較爲簡單的貝葉斯網絡可以使用精確推導方式。根據貝葉斯網絡的結構可求其聯合概率分佈,然後根據全概率公式、貝葉斯公式則可推出任意在此網絡上概率的形式。

如貝葉斯網絡如下:


則其概率問題的推導如下:

\mathrm P(\mathit{S_1}=T \mid \mathit{U}=T)=\frac{\mathrm P(\mathit{S_1}=T,\mathit{U}=T)}{\mathrm P(\mathit{U}=T)}=\frac{\sum_{\mathit{S_2} \in \{T, F\}}\mathrm P(\mathit{S_1}=T,\mathit{S_2},\mathit{U}=T)}{\sum_{\mathit{S_1}, \mathit{S_2} \in \{T, F\}} \mathrm P(\mathit{U}=T,\mathit{S_1},\mathit{S_2})}=\frac{(0.4 \times 0.3 \times 1)_{U=T,S_1=T,S_2=F} +(0.4 \times 0.7 \times 1)_{U=T,S_1=T,S_2=T} }{(0.4 \times 0.3 \times 1)_{TTT} +(0.4 \times 0.7 \times 1)_{TTF}+(0.6 \times 0.3 \times 1)_{TFT}  +0_{TFF}}\approx 68.96 %.

精確推導在計算過程中可以使用動態規劃做一些優化(如消元法),也可根據一些圖論的知識做一些優化(如基於團的推導方法)。

(2)模糊推導

有時候貝葉斯網絡過大,則需要使用模糊推導。

模糊推導的方法有很多,這裏講如何使用MCMC(馬爾科夫鏈蒙特卡洛)中的吉布斯抽樣來進行推導。

I、樣本

樣本由觀測數據和未知數據組成,即x1,x2,?,x3,?....xn,其中未觀測到的數據就以?表示,推理的目的就是求未知節點在已有觀測值下的概率分佈,即P(?|x1,x2..xn)。

II、馬爾科夫毯

貝葉斯網絡中的Markov branket指一個節點X的父節點、子節點、子節點的父節點(不包括自己),下文敘述中用MB(X)來表示節點X的馬爾科夫毯。

III、算法流程

   初始化:初始化未知變量的條件概率分佈,根據該分佈進行抽樣,給未知節點賦值。

   (1)隨機選擇未知節點

   (2)根據該未知節點的條件概率分佈進行抽樣,給該節點賦值。

   (3)重新計算該節點的分佈P(?)=P(?|MB(?))

   (4)返回(1)迭代,直到收斂。


3、貝葉斯網絡的訓練

(1)結構已知,樣本完整

使用最大似然估計的方法(如果離散值使用統計的方法)來獲取每個節點的條件概率分佈即可。

(2)結構已知,樣本不完整

如果存在無法觀測的節點(即樣本不完整),則可以使用EM方法來訓練,大致過程如下:

初始化:隨機各節點的條件概率分佈

E-step:根據各節點已有條件概率分佈,補全樣本(如果連續則補全爲均值,離散補全爲出現概率最大的值)

M-step:根據“完整”的觀測值使用最大似然估計或者統計來得到新的各節點概率分佈,替換原有值。

(3)結構未知

獲取貝葉斯網絡結構大致有以下三種方法:

I、由專家建模。

II、使用基於相關性的網絡訓練方法

大致思路爲計算各變量相關性(如互信息,卡方檢驗等),然後在相關性大的節點之間建立邊,再通過和樣本擬合程度確定邊的方向。

III、基於打分的方法

首先確立打分函數,如MDL等,一個打分函數來描述一個貝葉斯網絡的好壞,通常要考慮網絡結構(越簡單越好)和與樣本擬合程度(擬合越大越好)。

其次使用啓發式算法(如模擬退火等)在整個網絡結構空間進行檢索,搜索到一個局部最優值作爲算法結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章