概率圖模型基礎 - 貝葉斯網路引數學習(貝葉斯估計+碎權更新法)
前序
貝葉斯網路是一種效能優秀的不確定推理方法。其模型結構解釋性好,推理過程本質與人的思維模式相似。
要採用貝葉斯網路進行推理分析,首先考慮網路模型的搭建。與神經網路的黑盒模式相反,貝葉斯網路模型要真實的反應研究物件,於是需要知道其網路結構和引數。現在已經有越來越多的研究關注於如何通過資料進行貝葉斯網路結構和引數的學習,但實際中我們往往面臨資料集的侷限,這是專家知識對建模來說依然十分重要。
本文考慮整合專家知識,在資料驅動的大思路下進行貝葉斯網路的引數學習。通過分析貝葉斯估計的實現過程來給出完整資料樣本下的引數學習方法,同時考慮碎權更新法來解決資料缺失的挑戰。
(注:本文主要是筆者在專案背景下進行基礎學習的總結筆記。錯誤難免,還望得到廣大網友們的熱心指導。)
貝葉斯網建模思路
現在的一種主流思路是將網路學習的內容加入貝葉斯網推理模型之中,以期實現模型動態優化,提升實時精度。
當資料量可能會面臨限制時,可考慮先依賴專家知識進行初始化建模,然後利用線上流資料分析的方式增量的迭代優化模型。根據難以程度,可採取下圖所示三步走計劃:
下面重點對引數學習更新部分進行敘述。
貝葉斯網引數學習
貝葉斯網的學習是指通過資料分析,獲取貝葉斯網的過程,它包括引數學習與結構學習兩個部分。引數學習是指已知網路結構,確定網路引數的問題。而我們這裡對引數學習的角色定位是:在已知初始化模型的基礎上(包括初始化結構和初始化引數),基於實時獲取的新資料,通過引數學習來優化更新模型。所以這裡的引數學習用於引數的實時更新。為整合先驗知識,採用“貝葉斯估計”來實現引數學習的基本方法,同時採用碎權更新法來實現資料樣本不完整場景下的實時近似估計。
1.基礎知識
一個貝葉斯網包含有根節點、葉節點、中間節點三類節點。下圖為一個貝葉斯網示例:
上圖中:X1,X2 為根節點,X2,X3,X4 即為中間節點,X5,X6 為葉節點。各節點間關係由有向邊標識,如 X2 為 X1 的子節點,X5 的父節點有 X2 和 X3 。每個節點對應變數,記為:X = { X1, X2, …, Xn },其中 n 為變數個數,如圖3-2中 n = 6。
由 X 的所有或部分變數狀態構成的向量稱為資料樣本,多個樣本構成資料集(簡稱資料)。如下圖表示了下圖3-2的一個資料集樣例:
我們記一個貝葉斯網為:N = { Y, ϑ },其中 Y 表示貝葉斯網模型(DAG), ϑ 表示貝葉斯網模型引數(CPT)。那麼,考慮節點 Xi(i ~ 1 ,…, n),其父節點 π(Xi) 的取值組合為 j(j ~ 1 ,…, qi),節點狀態取值為 k(k ~ 1 ,…, ri)。那麼網路的引數 ϑ 記如下式:
所以一個貝葉斯網共有 個引數,由於某個節點狀態概率和恆為1,故需要我們學習的獨立引數數目是 。
2.貝葉斯估計整合先驗知識
對於一個貝葉斯網 N = { Y, ϑ } ,在完整資料 D = ( D1, D2, …, Dm ) 下采用貝葉斯估計對其進行引數估計的流程可分為下面幾步:
2.1.專家知識轉化為先驗概率分佈
為方便先驗引數 p(ϑ) 的確定,一般假設 p(ϑ) 具有全域性獨立性,p(ϑi) 具有區域性獨立性,p(ϑij) 是狄利克雷分佈 D [ aij1, aij2, …, aijri ] 。據此,先驗分佈 p(ϑ) 規範為乘積狄利克雷分佈,如下式:
於是,只需依靠專家知識給出狄利克雷分佈的超引數 {aijk} 即可。
2.2.基於資料得到後驗概率分佈
設資料 D = ( D1, D2, … , Dm ) 滿足獨立同分布性質,則引數 ϑ 在資料 D 下的似然函式可寫為:
上式中,mijk 是表示資料包含當前狀態 (i,j,k) 的特徵量,其定義如下:
於是由貝葉斯公式計算出後驗概率如下:
所以,後驗概率也是乘積狄利克雷分佈。
2.3.計算下一個樣本的概率分佈(條件概率)
某個節點的條件概率表包含了父節點狀態組合下該節點處於各狀態的概率,實際上就是樣本取值的概率分佈。考慮下一個樣本 Dm+1 = ( X1, X2, …, Xn ) ,根據網路後驗概率計算得到其概率分佈如下式:
根據全域性獨立性和馬爾可夫性等性質,上式可化簡為:
上式所代表的概率分佈可以對映到一個與當前網路結構相同的貝葉斯網 N = { Y, ϑ’ },其引數 ϑ’ = { θ’ijk } 是靜態的,其分佈 p(θij.) 滿足狄利克雷分佈,超引數為 [ mijk + aijk ] ,ϑ’ 計算式如下:
於是得出 Dm+1 的概率分佈最終計算式如下:
3.資料殘缺下的貝葉斯估計
在資料出現缺失值的情況下,為了儘可能地實現資料的最大化利用,採用碎權更新法,其核心思想是:將缺值的樣本按照可能取值進行修補,對每個修補樣本按照其可能性賦給權重,這樣的樣本稱之為碎權樣本,然後基於碎權樣本進行貝葉斯估計。該方法的核心是碎權樣本權重計算。
設基於之前的專家知識及資料得到的關於貝葉斯網的後驗概率分佈為 p(ϑ│D) ,對應狄利克雷分佈的超引數為 [aijk^m] 。現在有缺值資料樣本 Dm+1 ,{Xi^l} 是其中缺值變數的集合,則 Xi^l 取某值 k 的概率是 P( Xi^l = k │ Dm+1; ϑ ),以此為權重,可得到新的碎權資料樣本如下:
於是,基於新的碎權樣本進行引數更新,根據之前討論,可直接加權更新狄利克雷分佈超引數:
於是此時貝葉斯網的引數是:
代回式(3.9)即可算出新的條件概率表。
4.完整演算法
綜上,給出資料不完整條件下的貝葉斯估計引數學習演算法如下:
演算法1:基於碎權更新的貝葉斯估計演算法
輸入: 貝葉斯網的結構 Y ,實時資料 D ;
輸出: 貝葉斯網引數估計 ϑ ;
流程:
1. expert knowledge to initial hyper-parameters aijk in Dirichlet distribution of prior p(ϑ) ;
2. while (D) :
for Dm in D :
for i, j, k :
if Dm is incomplete for Xi:
get θijk^' using (3.12);
else get θijk^' using (3.8) ;
update ϑ using (3.1) ;
update P ( Dm+1 │ ϑ ) using (3.9) ;
3. output ϑ as well as P ( D_more │ ϑ ) ;
思考與展望
上面給出一套貝葉斯網路的基本引數學習方法,包括先驗知識的整合和缺值樣本問題的解決。進一步研究可著眼於以下一些問題:
網路複雜時先驗引數(狄利克雷分佈超引數)數目太多,專家給定工作量大,有沒有什麼方法可以減小專家給定時的工作量?(引入AND-OR將概率邏輯化?)
迭代學習過程要對每個變數(即網路節點)進行更新計算,計算量隨系統規模擴大而急劇擴大。有沒有什麼方法優化計算減小計算量?(比如團樹傳播演算法(CTP)的融入以實現共享計算?)
還望大家多多提出相關問題和建議。
相關文章
- 貝葉斯思想概述:從貝葉斯定理到貝葉斯網路
- 04貝葉斯演算法-貝葉斯網路演算法
- 從貝葉斯方法談到貝葉斯網路
- chapter6:概率及樸素貝葉斯--樸素貝葉斯APT
- 【機器學習】--貝葉斯網路機器學習
- 全概率公式、貝葉斯公式公式
- 樸素貝葉斯模型模型
- 機器學習_統計模型之(二)貝葉斯網路機器學習模型
- 貝葉斯分類器與貝葉斯網路之間的關係
- 貝葉斯推斷 && 概率程式設計初探程式設計
- 貝葉斯公式公式
- 條件概率、全概率、貝葉斯公式理解公式
- 從貝葉斯定理到概率分佈概率分佈
- 貝葉斯深度學習簡介深度學習
- 機器學習(三):樸素貝葉斯+貝葉斯估計+BP人工神經網路習題手算|手工推導與習題計算機器學習神經網路
- [筆記]極大似然估計、最大後驗概率、貝葉斯估計筆記
- 淺談全概率公式和貝葉斯公式公式
- 機器學習中的MLE、MAP和貝葉斯估計機器學習
- 機器學習_統計模型之(一)貝葉斯公式機器學習模型公式
- 監督學習之樸素貝葉斯
- 機器學習|樸素貝葉斯演算法(二)-用sklearn實踐貝葉斯機器學習演算法
- 深度學習中的貝葉斯統計簡介深度學習
- 機器學習|樸素貝葉斯演算法(一)-貝葉斯簡介及應用機器學習演算法
- 高階人工智慧系列(一)——貝葉斯網路、機率推理和樸素貝葉斯網路分類器人工智慧
- 機器學習——貝葉斯演算法機器學習演算法
- 貝葉斯公式及其含義公式
- 樸素貝葉斯法初探
- 貝葉斯迴歸簡介
- 貝葉斯深度學習(bayesian deep learning)深度學習
- 貝葉斯學習與未來人工智慧人工智慧
- 先驗概率與後驗概率、貝葉斯區別與聯絡
- 樸素貝葉斯和半樸素貝葉斯(AODE)分類器Python實現Python
- [機器學習&資料探勘]樸素貝葉斯數學原理機器學習
- 詳解最大似然估計(MLE)、最大後驗概率估計(MAP),以及貝葉斯公式的理解公式
- 模式識別學習筆記——貝葉斯決策模式筆記
- 用 Python 進行貝葉斯模型建模(4)Python模型
- 貝葉斯公式的通俗講解公式
- 貝葉斯超參優化方法優化