作者:Jason Brownlee
翻譯:陳超
校對:歐陽錦
本文約3500字,建議閱讀8分鐘
本文共分爲5部分,從概率模型的挑戰、概率模型——貝葉斯信念網絡、如何建立和使用貝葉斯網絡、貝葉斯網絡範例、Python當中的貝葉斯網絡5個方面對貝葉斯信念網絡進行了簡要介紹。
關鍵字:貝葉斯,Python,概率模型
概率模型可以定義變量間的關係並用於概率計算。
例如,全條件模型可能需要一個巨大的數據量來覆蓋所有可能的實例,而在實際情況當中概率可能難以計算。雖然像所有隨機變量條件獨立這樣簡化假設是過於簡化的步驟,但比如在樸素貝葉斯的例子當中可能是非常高效的做法。
另外一種選擇是建立一個保留已知的隨機變量和所有其他例子當中的條件獨立性模型。貝葉斯網絡是一個概率圖模型,可以明顯地在一個圖模型中用有向邊捕獲已知的條件依賴。所有丟失的連接定義了模型中的條件獨立性。
這樣的貝葉斯網絡提供了一個有用的工具,可以將某一領域的概率模型進行可視化,回顧所有隨機變量之間的關係,在給定可用證據的情況下因果概率的原因。
在這篇文章當中,你將會得到針對貝葉斯網絡的簡要介紹。
在讀完本文之後,你將會知道:
貝葉斯網絡是一種概率圖模型,由節點和有向邊構成。
貝葉斯網絡模型捕獲隨機變量之間的條件依賴和條件獨立關係。
模型可以由專家構造或基於數據學習,然後可以用於估計因果或後續事件的推斷。
可以基於我的新書《機器學習概率》開始你的項目,這裏包括了手把手的教程以及所有範例的Python源代碼。
讓我們開始吧!
貝葉斯信念網絡簡介 圖片來自Armin S Kowslski,部分版權保留
概覽
本教程分爲以下五部分;他們是:
1. 概率模型的挑戰
2. 概率模型——貝葉斯信念網絡
3. 如何建立和使用貝葉斯網絡
4. 貝葉斯網絡範例
5. Python當中的貝葉斯網絡
概率模型的挑戰
概率模型的設計和使用是相當有挑戰性的。
通常情況下,問題在於缺乏關於完全確定隨機變量的條件依賴性的信息。如果這種信息不足的情況確實存在, 那麼計算某一時間的全條件概率可能是不切實際的。
解決這一挑戰的通用方法是添加一些簡化的假設,例如假設模型當中所有的隨機變量都是條件獨立的。這是一個強假設,雖然它在實際過程中被證明十分有用,爲樸素貝葉斯分類算法提供了基礎。
另一種方法是建立一個有部分條件獨立假設問題的概率模型。這提供了一個介於完全條件模型和完全條件獨立模型的方法。
貝葉斯信念網絡是一個概率模型的範例,這個模型當中的部分變量是條件獨立的。
“因此,貝葉斯信念網絡提供了一箇中立的方法,比起由樸素貝葉斯分類器建立的條件獨立的全局假設約束更少,但是又比完全避免條件獨立假設更容易處理。”
——第184頁,機器學習,1997
概率模型——貝葉斯信念網絡
貝葉斯信念網絡是一種概率圖模型
概率圖模型
概率圖模型(Probabilistic graphical model, PGM),或者簡單來說“圖模型”,是一種用圖結構來表徵概率模型的方式。
圖中的節點表徵隨機變量,連接節點的邊表徵隨機變量之間的關係。
“圖由連通(也被叫做邊或者弧)的節點(也被叫做頂點)組成。在概率圖模型當中,每個節點表徵一個隨機變量(或者隨機變量組),連接表達了這些變量之間的概率關係。”
——第360頁,《模式識別和機器學習》,2006
節點:圖模型中的隨機變量
邊:圖模型中隨機變量之間的關係
許多不同類型的圖模型,雖然兩種最常見的是隱馬爾科夫鏈模型和貝葉斯網絡。
隱馬爾科夫鏈(HMM)是一種圖模型,圖的邊是無向的,意味着圖當中包括環。貝葉斯網絡限制性更強,圖的邊是有向的,意味着他們只可以沿着一個方向前進。這意味着環是不可能存在的,這種結構可以被叫做有向無環圖(DAG)。
“有向圖對於表徵隨機變量之間的因果關係時是有用的,而無向圖更適合表徵隨機變量之間的軟性限制。”
——第360頁,《模式識別和機器學習》,2006
貝葉斯信念網絡
貝葉斯信念網絡,或者簡稱“貝葉斯網絡”,提供了一種將貝葉斯定理應用到複雜問題當中的簡化方式。
儘管從主觀上指定了隨機變量(節點)的概率分佈和隨機變量(邊)之間的關係,但該網絡並不是嚴格意義上的貝葉斯網絡,該模型可被認爲是捕獲複雜域的“信念”。
與概率完全基於純粹的過去事件發生次數的頻率學派不同,貝葉斯概率是結果當中的主觀概率或信念的研究。
貝葉斯網絡捕獲由模型表徵的事件聯合概率。
“貝葉斯信念模型描述了一系列變量的聯合概率。”
——第185頁,《機器學習》,1997.
貝葉斯網絡的核心是條件獨立性的概念。
獨立性指的是不受所有其他變量影響的隨機變量。一個因變量是一個概率依賴於一個或更多其他隨機變量的隨機變量。
條件依賴性描述了多隨機變量之間的關係,一個給定變量可能條件依賴於一個或更多個其他變量。
這並不意味着變量是獨立的;相反,它是一個變量獨立於特定的其他隨機變量的明確定義。
概率圖模型,例如貝葉斯網絡,提供了一種定義一個通過陳述已知變量的所有條件獨立假設,定義複雜問題的概率模型,允許未知(潛在的)變量存在。
嚴格來說,圖模型當中邊的存在或缺失在模型解釋當中都是重要的。
“圖模型(GM)是一種通過【條件獨立性(Conditional Independence)】CI假設來表徵的聯合分佈。特別地,圖當中的節點表徵隨機變量,(缺乏)邊表徵CI假設。(這些模型更好的名字其實是 ‘獨立性圖’)”……
——第308頁,《機器學習:概率視角》,2012
貝葉斯網絡作爲一個概率模型提供了有效的方法。
例如:
可視化:模型提供了一種將模型結構可視化和激發新模型設計的直接的方式
關係:爲隨機變量間關係的存在和缺失提供了見解。
計算:提供了一種架構化複雜概率計算的方式。
如何建立和使用貝葉斯網絡?
設計貝葉斯網絡需要定義至少三件事:
1. 隨機變量:問題當中的隨機變量是?
2. 條件關係:變量之間的條件關係是?
3. 概率分佈:每個變量的概率分佈是?
對問題領域的專家來說,定義部分或模型設計的所有方面都是可能的,但是基於數據的概率分佈必須通過相關領域的數據進行估計。
概率分佈和圖結構本身可以通過數據估計,雖然可能是一個挑戰性的工作。嚴格來說,以這個目的來使用學習算法很常見;例如,假定連續型隨機變量梯度上升的高斯分佈用於估計分佈參數。
一旦爲某個領域的貝葉斯網絡已準備好,則其可以被用於推理,例如決策。
推理可經由模型給定情境進行推斷。例如,某些事件的結果已知,並被插入隨機變量。該模型可被用於估計事件原因的概率或可能的接下來的結果。
“推理(推斷)通過引入在已知前提當中設置變量的證據開展,之後計算興趣概率。”
——第13頁,《貝葉斯推理和機器學習》,2012
使用貝葉斯網絡的實例包括醫療(症狀和疾病),生物信息學(特質和基因),以及演講時別(話語和時長)。
貝葉斯網絡範例
我們可以用一個小的例子來使貝葉斯網絡具體化。
考慮一個三變量的問題:A,B,和C。A依賴於B,C依賴於B。
條件依賴性如下:
A條件依賴於B,即P(A|B)
C條件依賴於B,即P(C|B)
我們知道C和A彼此之間沒有影響。
我們將條件獨立性寫作如下:
A條件獨立於C,即P(A|B, C)
C條件獨立於A,即P(C|B, A)
注意到條件依賴性是在條件依賴性存在的情況下提出的。也就是說,A是條件獨立於C,或者在C存在的情況下,A條件依賴於B。
我們也可提出給定C,A的條件依賴性也可寫作給定B ,A的條件依賴性,因爲A不受到C的影響,可以僅通過給定B的A來計算。
P(A|C, B) = P(A|B)
我們可以看到B不受A和C的影響,沒有父節點(parents);我們可以將給定A和C,B的條件獨立性寫作 P(B, P(A|B), P(C|B)) 或 P(B).
我們也可以將給定B,A和C的聯合概率或者基於B的條件概率寫作兩個條件概率的乘積;例如:
P(A, C | B) = P(A|B) * P(C|B)
該模型總結了P(A, B, C)的聯合概率,可計算作:
P(A, B, C) = P(A|B) * P(C|B) * P(B)
我們可將圖如下表示:
簡化貝葉斯網絡的範例
請注意隨機變量均被分配了一個節點,條件概率作爲節點之間的有向連接。並且注意圖當中不可能有環,也就是說,當通過邊連通節點進行導航的時候,不可能有環存在。
除此之外,注意圖在我們不知道變量概率分佈的時候也是有用的。
你可能想通過使用每個隨機變量的離散事件的人爲概率將此例子進行延伸,並對不同情境進行簡單推斷練習。
Python中的貝葉斯網絡
貝葉斯網絡可以通過Python來構建和進行推斷。
一個受歡迎的庫叫做PyMC,提供了一系列貝葉斯模型的工具,包括貝葉斯網絡的圖模型。
最近的版本是PyMC3,以Python第3版命名,是在Theano數學計算庫的基礎上開發的,該庫可提供快速的自動微分。
PyMC
https://github.com/pymc-devs/pymc3
“PyMC3是一個用Python寫的新型的開源概率編程框架,使用Theano經由自動差分來計算梯度並即時將概率程序編譯爲C以提高速度。”
——在Python中使用PyMC3進行概率編程,2016
更普遍來說,電腦軟件上概率圖模型用於推斷被認爲是“概率編程”。
這種程序被叫做概率程序,【……】我們使用程序變量作爲模型成分來創造概率模型。模型成分是PyMC框架當中的一流源語。
——《黑客的貝葉斯方法:概率編程和貝葉斯推斷》,2015
更多關於PyMC的貝葉斯方法指導,請參照 Cameron Davidson-Pilon 的免費書籍《黑客的貝葉斯方法》
Cameron Davidson-Pilon
https://github.com/CamDavidsonPilon
延伸閱讀
該部分提供了更多基於該主題的資源,您可以進一步瞭解。
書籍
《貝葉斯推理和機器學習》,2012
《黑客的貝葉斯方法:概率編程和貝葉斯推斷》,2015
章節
第6章: 《貝葉斯學習,機器學習》,1997
第8章:《圖模型,模式識別和機器學習》,2006
第10章:《有向圖模型(貝葉斯網絡),機器學習:一種概率視角》,2012
第14章:《概率推理,人工智能:一種現代方法,第三版》,2009
論文
使用PyMC3進行Python概率編程, 2016.
代碼
PyMC3, Python的概率編程
變分推斷(variational inference):貝葉斯神經網絡
文章
Graphical model, Wikipedia.圖模型,維基百科
Hidden Markov model, Wikipedia.隱馬爾科夫鏈,維基百科
Bayesian network, Wikipedia.貝葉斯網絡,維基百科
Conditional independence, Wikipedia.條件獨立性,維基百科
Probabilistic Programming & Bayesian Methods for Hackers概率編程&黑客的貝葉斯方法
總結
本文對貝葉斯網絡進行了簡要介紹。
具體來說,你可以學到:
貝葉斯網絡是一種由節點和有向邊構成的概率圖
貝葉斯網絡可以捕獲隨機變量之間的條件依賴和條件獨立關係
模型可以由專家制定或者從數據中學習,然後可用於估計因果或後續事件的推斷。
歡迎評論留言交流。
編輯:王菁
校對:林亦霖
原文標題:
A Gentle Introduction to Bayesian Belief Networks
原文鏈接:
https://machinelearningmastery.com/introduction-to-bayesian-belief-networks/
譯者簡介
陳超,北京大學應用心理碩士在讀。本科曾混跡於計算機專業,後又在心理學的道路上不懈求索。越來越發現數據分析和編程已然成爲了兩門必修的生存技能,因此在日常生活中盡一切努力更好地去接觸和了解相關知識,但前路漫漫,我仍在路上。
翻譯組招募信息
工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。
你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景爲志願者帶來好的發展機遇。
其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成爲你在翻譯小組的夥伴。
點擊文末“閱讀原文”加入數據派團隊~
轉載須知
如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:DatapiTHU),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公衆號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。
發佈後請將鏈接反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。
點擊“閱讀原文”擁抱組織