從貝葉斯方法談到貝葉斯網路

CopperDong發表於2017-11-05

從貝葉斯方法談到貝葉斯網路


0 引言

    事實上,介紹貝葉斯定理、貝葉斯方法、貝葉斯推斷的資料、書籍不少,比如《數理統計學簡史》,以及《統計決策論及貝葉斯分析 James O.Berger著》等等,然介紹貝葉斯網路的中文資料則非常少,中文書籍總共也沒幾本,有的多是英文資料,但初學者一上來就扔給他一堆英文論文,因無基礎和語言的障礙而讀得異常吃力導致無法繼續讀下去則是非常可惜的(當然,有了一定的基礎後,便可閱讀更多的英文資料)。

    11月9日上午,機器學習班 第9次課,鄒講貝葉斯網路,其幫助大家提煉了貝葉斯網路的幾個關鍵點:貝葉斯網路的定義、3種結構形式、因子圖、以及Summary-Product演算法等等,知道了貝葉斯網路是啥,怎麼做,目標是啥之後,相信看英文論文也更好看懂了。

    故本文結合Z講師第9次課貝葉斯網路的PPT 及相關參考資料寫就,從貝葉斯方法講起,重點闡述貝葉斯網路,依然可以定義為一篇讀書筆記或學習筆記,有任何問題,歡迎隨時不吝指出,thanks。



1 貝葉斯方法

    長久以來,人們對一件事情發生或不發生的概率,只有固定的0和1,即要麼發生,要麼不發生,從來不會去考慮某件事情發生的概率有多大,不發生的概率又是多大。而且概率雖然未知,但最起碼是一個確定的值。比如如果問那時的人們一個問題:“有一個袋子,裡面裝著若干個白球和黑球,請問從袋子中取得白球的概率是多少?”他們會想都不用想,會立馬告訴你,取出白球的概率就是1/2,要麼取到白球,要麼取不到白球,即θ只能有一個值,而且不論你取了多少次,取得白球的概率θ始終都是1/2,即不隨觀察結果X 的變化而變化。

    這種頻率派的觀點長期統治著人們的觀念,直到後來一個名叫Thomas Bayes的人物出現。

1.1 貝葉斯方法的提出

    托馬斯·貝葉斯Thomas Bayes(1702-1763)在世時,並不為當時的人們所熟知,很少發表論文或出版著作,與當時學術界的人溝通交流也很少,用現在的話來說,貝葉斯就是活生生一民間學術“屌絲”,可這個“屌絲”最終發表了一篇名為“An essay towards solving a problem in the doctrine of chances”,翻譯過來則是:機遇理論中一個問題的解。你可能覺得我要說:這篇論文的發表隨機產生轟動效應,從而奠定貝葉斯在學術史上的地位。

            

    事實上,上篇論文發表後,在當時並未產生多少影響,在20世紀後,這篇論文才逐漸被人們所重視。對此,與梵高何其類似,畫的畫生前一文不值,死後價值連城。

    回到上面的例子:“有一個袋子,裡面裝著若干個白球和黑球,請問從袋子中取得白球的概率θ是多少?”貝葉斯認為取得白球的概率是個不確定的值,因為其中含有機遇的成分。比如,一個朋友創業,你明明知道創業的結果就兩種,即要麼成功要麼失敗,但你依然會忍不住去估計他創業成功的機率有多大?你如果對他為人比較瞭解,而且有方法、思路清晰、有毅力、且能團結周圍的人,你會不由自主的估計他創業成功的機率可能在80%以上。這種不同於最開始的“非黑即白、非0即1”的思考方式,便是貝葉斯式的思考方式。

    繼續深入講解貝葉斯方法之前,先簡單總結下頻率派與貝葉斯派各自不同的思考方式:

  • 頻率派把需要推斷的引數θ看做是固定的未知常數,即概率雖然是未知的,但最起碼是確定的一個值,同時,樣本X 是隨機的,所以頻率派重點研究樣本空間,大部分的概率計算都是針對樣本X 的分佈;
  • 而貝葉斯派的觀點則截然相反,他們認為引數是隨機變數,而樣本X 是固定的,由於樣本是固定的,所以他們重點研究的是引數的分佈。

    相對來說,頻率派的觀點容易理解,所以下文重點闡述貝葉斯派的觀點。

    貝葉斯派既然把看做是一個隨機變數,所以要計算的分佈,便得事先知道的無條件分佈,即在有樣本之前(或觀察到X之前),有著怎樣的分佈呢?

    比如往檯球桌上扔一個球,這個球落會落在何處呢?如果是不偏不倚的把球丟擲去,那麼此球落在臺球桌上的任一位置都有著相同的機會,即球落在臺球桌上某一位置的概率服從均勻分佈。這種在實驗之前定下的屬於基本前提性質的分佈稱為先驗分佈,或的無條件分佈。

    至此,貝葉斯及貝葉斯派提出了一個思考問題的固定模式:

  • 先驗分佈 + 樣本資訊  後驗分佈

    上述思考模式意味著,新觀察到的樣本資訊將修正人們以前對事物的認知。換言之,在得到新的樣本資訊之前,人們對的認知是先驗分佈,在得到新的樣本資訊後,人們對的認知為

        其中,先驗資訊一般來源於經驗跟歷史資料。比如林丹跟某選手對決,解說一般會根據林丹歷次比賽的成績對此次比賽的勝負做個大致的判斷。再比如,某工廠每天都要對產品進行質檢,以評估產品的不合格率θ,經過一段時間後便會積累大量的歷史資料,這些歷史資料便是先驗知識,有了這些先驗知識,便在決定對一個產品是否需要每天質檢時便有了依據,如果以往的歷史資料顯示,某產品的不合格率只有0.01%,便可視為信得過產品或免檢產品,只每月抽檢一兩次,從而省去大量的人力物力。

    而後驗分佈一般也認為是在給定樣本的情況下的條件分佈,而使達到最大的值稱為最大後驗估計,類似於經典統計學中的極大似然估計。

    綜合起來看,則好比是人類剛開始時對大自然只有少得可憐的先驗知識,但隨著不斷觀察、實驗獲得更多的樣本、結果,使得人們對自然界的規律摸得越來越透徹。所以,貝葉斯方法既符合人們日常生活的思考方式,也符合人們認識自然的規律,經過不斷的發展,最終佔據統計學領域的半壁江山,與經典統計學分庭抗禮。

    此外,貝葉斯除了提出上述思考模式之外,還特別提出了舉世聞名的貝葉斯定理。

1.2 貝葉斯定理

    在引出貝葉斯定理之前,先學習幾個定義:

  • 條件概率(又稱後驗概率)就是事件A在另外一個事件B已經發生條件下的發生概率。條件概率表示為P(A|B),讀作“在B條件下A的概率”。
比如,在同一個樣本空間Ω中的事件或者子集A與B,如果隨機從Ω中選出的一個元素屬於B,那麼這個隨機選擇的元素還屬於A的概率就定義為在B的前提下A的條件概率,所以:P(A|B) = |A∩B|/|B|,接著分子、分母都除以|Ω|得到
  • 聯合概率表示兩個事件共同發生的概率。A與B的聯合概率表示為或者
  • 邊緣概率(又稱先驗概率)是某個事件發生的概率。邊緣概率是這樣得到的:在聯合概率中,把最終結果中那些不需要的事件通過合併成它們的全概率,而消去它們(對離散隨機變數用求和得全概率,對連續隨機變數用積分得全概率),這稱為邊緣化(marginalization),比如A的邊緣概率表示為P(A),B的邊緣概率表示為P(B)。 

    接著,考慮一個問題:P(A|B)是在B發生的情況下A發生的可能性。

  1. 首先,事件B發生之前,我們對事件A的發生有一個基本的概率判斷,稱為A的先驗概率,用P(A)表示;
  2. 其次,事件B發生之後,我們對事件A的發生概率重新評估,稱為A的後驗概率,用P(A|B)表示;
  3. 類似的,事件A發生之前,我們對事件B的發生有一個基本的概率判斷,稱為B的先驗概率,用P(B)表示;
  4. 同樣,事件A發生之後,我們對事件B的發生概率重新評估,稱為B的後驗概率,用P(B|A)表示。

    貝葉斯定理便是基於下述貝葉斯公式:

    上述公式的推導其實非常簡單,就是從條件概率推出。

    根據條件概率的定義,在事件B發生的條件下事件A發生的概率是

    同樣地,在事件A發生的條件下事件B發生的概率

    整理與合併上述兩個方程式,便可以得到:

    接著,上式兩邊同除以P(B),若P(B)是非零的,我們便可以得到貝葉斯定理的公式表示式:

    所以,貝葉斯公式可以直接根據條件概率的定義直接推出。即因為P(A,B) = P(A)P(B|A) = P(B)P(A|B),所以P(A|B) = P(A)P(B|A)  / P(B)。

1.3 應用:拼寫檢查

    經常在網上搜尋東西的朋友知道,當你不小心輸入一個不存在的單詞時,搜尋引擎會提示你是不是要輸入某一個正確的單詞,比如當你在Google中輸入“Julw”時,系統會猜測你的意圖:是不是要搜尋“July”,如下圖所示:

    這叫做拼寫檢查。根據谷歌一員工寫的文章顯示,Google的拼寫檢查基於貝葉斯方法。下面我們就來看看,怎麼利用貝葉斯方法,實現"拼寫檢查"的功能。

    使用者輸入一個單詞時,可能拼寫正確,也可能拼寫錯誤。如果把拼寫正確的情況記做c(代表correct),拼寫錯誤的情況記做w(代表wrong),那麼"拼寫檢查"要做的事情就是:在發生w的情況下,試圖推斷出c。換言之:已知w,然後在若干個備選方案中,找出可能性最大的那個c,也就是求的最大值。
    而根據貝葉斯定理,有:

  

    由於對於所有備選的c來說,對應的都是同一個w,所以它們的P(w)是相同的,因此我們只要最大化

    即可。其中:

  • P(c)表示某個正確的詞的出現"概率",它可以用"頻率"代替。如果我們有一個足夠大的文字庫,那麼這個文字庫中每個單詞的出現頻率,就相當於它的發生概率。某個詞的出現頻率越高,P(c)就越大。比如在你輸入一個錯誤的詞“Julw”時,系統更傾向於去猜測你可能想輸入的詞是“July”,而不是“Jult”,因為“July”更常見。
  • P(w|c)表示在試圖拼寫c的情況下,出現拼寫錯誤w的概率。為了簡化問題,假定兩個單詞在字形上越接近,就有越可能拼錯,P(w|c)就越大。舉例來說,相差一個字母的拼法,就比相差兩個字母的拼法,發生概率更高。你想拼寫單詞July,那麼錯誤拼成Julw(相差一個字母)的可能性,就比拼成Jullw高(相差兩個字母)。值得一提的是,一般把這種問題稱為“編輯距離”,參見部落格中的這篇文章。
    所以,我們比較所有拼寫相近的詞在文字庫中的出現頻率,再從中挑出出現頻率最高的一個,即是使用者最想輸入的那個詞。具體的計算過程及此方法的缺陷請參見這裡



2 貝葉斯網路

2.1 貝葉斯網路的定義

    貝葉斯網路(Bayesian network),又稱信念網路(Belief Network),或有向無環圖模型(directed acyclic graphical model),是一種概率圖模型,於1985年由Judea Pearl首先提出。它是一種模擬人類推理過程中因果關係的不確定性處理模型,其網路拓樸結構是一個有向無環圖(DAG)。 

    貝葉斯網路的有向無環圖中的節點表示隨機變數,它們可以是可觀察到的變數,或隱變數、未知引數等。認為有因果關係(或非條件獨立)的變數或命題則用箭頭來連線。若兩個節點間以一個單箭頭連線在一起,表示其中一個節點是“因(parents)”,另一個是“果(children)”,兩節點就會產生一個條件概率值。

    總而言之,連線兩個節點的箭頭代表此兩個隨機變數是具有因果關係,或非條件獨立

    例如,假設節點E直接影響到節點H,即E→H,則用從E指向H的箭頭建立結點E到結點H的有向弧(E,H),權值(即連線強度)用條件概率P(H|E)來表示,如下圖所示:

    簡言之,把某個研究系統中涉及的隨機變數,根據是否條件獨立繪製在一個有向圖中,就形成了貝葉斯網路。其主要用來描述隨機變數之間的條件依賴,用圈表示隨機變數(random variables),用箭頭表示條件依賴(conditional dependencies)。

    令G = (I,E)表示一個有向無環圖(DAG),其中I代表圖形中所有的節點的集合,而E代表有向連線線段的集合,且令X = (Xi)i ∈ I為其有向無環圖中的某一節點i所代表的隨機變數,若節點X的聯合概率可以表示成:

    則稱X為相對於一有向無環圖G 的貝葉斯網路,其中,表示節點i之“因”,或稱pa(i)是i的parents(父母)。 
    此外,對於任意的隨機變數,其聯合概率可由各自的區域性條件概率分佈相乘而得出:
    

    如下圖所示,便是一個簡單的貝葉斯網路:

    因為a導致b,a和b導致c,所以有

2.2 貝葉斯網路的3種結構形式

    給定如下圖所示的一個貝葉斯網路:

    從圖上可以比較直觀的看出:

  • 1. x1,x2,…x7的聯合分佈為

  • 2. x1和x2獨立(對應head-to-head);
  • 3. x6和x7在x4給定的條件下獨立(對應tail-to-tail)。

    根據上圖,第1點可能很容易理解,但第2、3點中所述的條件獨立是啥意思呢?其實第2、3點是貝葉斯網路中3種結構形式中的其中二種。為了說清楚這個問題,需要引入D-Separation(D-分離)這個概念。

    D-Separation是一種用來判斷變數是否條件獨立的圖形化方法。換言之,對於一個DAG(有向無環圖)E,D-Separation方法可以快速的判斷出兩個節點之間是否是條件獨立的。

2.2.1 形式1:head-to-head

    貝葉斯網路的第一種結構形式如下圖所示:

    所以有:P(a,b,c) = P(a)*P(b)*P(c|a,b)成立,化簡後可得:

    即在c未知的條件下,a、b被阻斷(blocked),是獨立的,稱之為head-to-head條件獨立,對應本節中最開始那張圖中的“x1、x2獨立”。

2.2.2 形式2:tail-to-tail

    貝葉斯網路的第二種結構形式如下圖所示

    考慮c未知,跟c已知這兩種情況:

  1. 在c未知的時候,有:P(a,b,c)=P(c)*P(a|c)*P(b|c),此時,沒法得出P(a,b) = P(a)P(b),即c未知時,a、b不獨立。
  2. 在c已知的時候,有:P(a,b|c)=P(a,b,c)/P(c),然後將P(a,b,c)=P(c)*P(a|c)*P(b|c)帶入式子中,得到:P(a,b|c)=P(a,b,c)/P(c) = P(c)*P(a|c)*P(b|c) / P(c) = P(a|c)*P(b|c),即c已知時,a、b獨立。

    所以,在c給定的條件下,a,b被阻斷(blocked),是獨立的,稱之為tail-to-tail條件獨立,對應本節中最開始那張圖中的“x6和x7在x4給定的條件下獨立”。

2.2.3 形式3:head-to-tail

    貝葉斯網路的第三種結構形式如下圖所示:

    還是分c未知跟c已知這兩種情況:

  1. c未知時,有:P(a,b,c)=P(a)*P(c|a)*P(b|c),但無法推出P(a,b) = P(a)P(b),即c未知時,a、b不獨立。
  2. c已知時,有:P(a,b|c)=P(a,b,c)/P(c),且根據P(a,c) = P(a)*P(c|a) = P(c)*P(a|c),可化簡得到:

    所以,在c給定的條件下,a,b被阻斷(blocked),是獨立的,稱之為head-to-tail條件獨立。

    插一句:這個head-to-tail其實就是一個鏈式網路,如下圖所示:

    根據之前對head-to-tail的講解,我們已經知道,在xi給定的條件下,xi+1的分佈和x1,x2…xi-1條件獨立。意味著啥呢?意味著:xi+1的分佈狀態只和xi有關,和其他變數條件獨立。通俗點說,當前狀態只跟上一狀態有關,跟上上或上上之前的狀態無關。這種順次演變的隨機過程,就叫做馬爾科夫鏈(Markov chain)。且有:

    接著,將上述結點推廣到結點集,則是:對於任意的結點集A,B,C,考察所有通過A中任意結點到B中任意結點的路徑,若要求A,B條件獨立,則需要所有的路徑都被阻斷(blocked),即滿足下列兩個前提之一:

  1. A和B的“head-to-tail型”和“tail-to-tail型”路徑都通過C;
  2. A和B的“head-to-head型”路徑不通過C以及C的子孫;

    最後,舉例說明上述D-Separation的3種情況(即貝葉斯網路的3種結構形式),則是如下圖所示:

  

    上圖中左邊部分是head-to-tail,給定 T 時,A 和 X 獨立;右邊部分的右上角是tail-to-tail,給定S時,L和B獨立;右邊部分的右下角是head-to-head,未給定D時,L和B獨立。

2.3 貝葉斯網路的例項

    給定如下圖所示的貝葉斯網路:

    其中,各個單詞、表示式表示的含義如下:

  • smoking表示吸菸,其概率用P(S)表示,lung Cancer表示的肺癌,一個人在吸菸的情況下得肺癌的概率用P(C|S)表示,X-ray表示需要照醫學上的X光,肺癌可能會導致需要照X光,吸菸也有可能會導致需要照X光(所以smoking也是X-ray的一個因),所以,因吸菸且得肺癌而需要照X光的概率用P(X|C,S)表示。
  • Bronchitis表示支氣管炎,一個人在吸菸的情況下得支氣管炎的概率用P(B|S),dyspnoea表示呼吸困難,支氣管炎可能會導致呼吸困難,肺癌也有可能會導致呼吸困難(所以lung Cancer也是dyspnoea的一個因),因吸菸且得了支氣管炎導致呼吸困難的概率用P(D|C,B)表示。

    lung Cancer簡記為C,Bronchitis簡記為B,dyspnoea簡記為D,且C = 0表示lung Cancer不發生的概率,C = 1表示lung Cancer發生的概率,B等於0(B不發生)或1(B發生)也類似於C,同樣的,D=1表示D發生的概率,D=0表示D不發生的概率,便可得到dyspnoea的一張概率表,如上圖的最右下角所示。

2.4 因子圖

    回到2.3節中那個例項上,如下圖所示:

    對於上圖,在一個人已經呼吸困難(dyspnoea)的情況下,其抽菸(smoking)的概率是多少呢?即:

     我們們來一步步計算推導下:

    解釋下上述式子推導過程:

  1. 第二行:對聯合概率關於b,x,c求和(在d=1的條件下),從而消去b,x,c,得到s和d=1的聯合概率。
  2. 第三行:最開始,所有變數都在sigma(d=1,b,x,c)的後面(sigma表示對“求和”的稱謂),但由於P(s)和“d=1,b,x,c”都沒關係,所以,可以提到式子的最前面。而且P(b|s)和x、c沒關係,所以,也可以把它提出來,放到sigma(b)的後面,從而式子的右邊剩下sigma(x)和sigma(c)。

    此外,圖中Variable elimination表示的是變數消除的意思。為了更好的解決此類問題,我們們得引入因子圖的概念。

2.4.1 因子圖的定義

    wikipedia上是這樣定義因子圖的:將一個具有多變數的全域性函式因子分解,得到幾個區域性函式的乘積,以此為基礎得到的一個雙向圖叫做因子圖(Factor Graph)。

    比如,假定對於函式,有下述式子成立:

    其中,其對應的因子圖包括:

  1. 變數節點
  2.  因子(函式)節點
  3. ,邊通過下列因式分解結果得到:在因子(函式)節點和變數節點之間存在邊的充要條件是存在。

    正式的定義果然晦澀!我相信你沒看懂。通俗來講,所謂因子圖就是對函式進行因子分解得到的一種概率圖。一般內含兩種節點:變數節點和函式節點。我們知道,一個全域性函式通過因式分解能夠分解為多個區域性函式的乘積,這些區域性函式和對應的變數關係就體現在因子圖上。

    舉個例子,現在有一個全域性函式,其因式分解方程為:

    其中fA,fB,fC,fD,fE為各函式,表示變數之間的關係,可以是條件概率也可以是其他關係(如馬爾可夫隨機場Markov Random Fields中的勢函式)。

    為了方便表示,可以寫成:

    其對應的因子圖為:

    且上述因子圖等價於:

    所以,在因子圖中,所有的頂點不是變數節點就是函式節點,邊線表示它們之間的函式關係。

    但搞了半天,雖然知道了什麼是因子圖,但因子圖到底是幹嘛的呢?為何要引入因子圖,其用途和意義何在?事實上,因子圖跟貝葉斯網路和馬爾科夫隨機場(Markov Random Fields)一樣,也是概率圖的一種。

    既然提到了馬爾科夫隨機場,那順便說下有向圖、無向圖,以及條件隨機場等相關概念。

  • 我們已經知道,有向圖模型,又稱作貝葉斯網路(Directed Graphical Models, DGM, Bayesian Network)。
  • 但在有些情況下,強制對某些結點之間的邊增加方向是不合適的。使用沒有方向的無向邊,形成了無向圖模型(Undirected Graphical Model,UGM), 又被稱為馬爾科夫隨機場或者馬爾科夫網路(Markov Random Field,  MRF or Markov network)。
  • 設X=(X1,X2…Xn)和Y=(Y1,Y2…Ym)都是聯合隨機變數,若隨機變數Y構成一個無向圖 G=(V,E)表示的馬爾科夫隨機場(MRF),則條件概率分佈P(Y|X)稱為條件隨機場Conditional Random Field, 簡稱CRF,後續新的部落格中可能會闡述CRF)。如下圖所示,便是一個線性鏈條件隨機場的無向圖模型:

    回到本文的主旨上來。在概率圖中,求某個變數的邊緣分佈是常見的問題。這問題有很多求解方法,其中之一就是把貝葉斯網路或馬爾科夫隨機場轉換成因子圖,然後用sum-product演算法求解。換言之,基於因子圖可以用sum-product 演算法高效的求各個變數的邊緣分佈。

    先通過一些例子分別說明如何把貝葉斯網路(和馬爾科夫隨機場),以及把馬爾科夫鏈、隱馬爾科夫模型轉換成因子圖後的情形,然後在2.4.2節,我們們再來看如何利用因子圖的sum-product演算法求邊緣概率分佈。

    給定下圖所示的貝葉斯網路或馬爾科夫隨機場:

    根據各個變數對應的關係,可得:

    其對應的因子圖為(以下兩種因子圖的表示方式皆可):

    由上述例子總結出由貝葉斯網路構造因子圖的方法:

  • 貝葉斯網路中的一個因子對應因子圖中的一個結點
  • 貝葉斯網路中的每一個變數在因子圖上對應邊或者半邊
  • 結點g和邊x相連當且僅當變數x出現在因子g中。

    再比如,對於下圖所示的由馬爾科夫鏈轉換而成的因子圖:

    有:

    而對於如下圖所示的由隱馬爾科夫模型轉換而成的因子圖:

    有:

2.4.2 Sum-product演算法

    我們已經知道,對於下圖所示的因子圖:

    有:

    下面,我們們來考慮一個問題:即如何由聯合概率分佈求邊緣概率分佈。

    首先回顧下聯合概率和邊緣概率的定義,如下:

  • 聯合概率表示兩個事件共同發生的概率。A與B的聯合概率表示為或者
  • 邊緣概率(又稱先驗概率)是某個事件發生的概率。邊緣概率是這樣得到的:在聯合概率中,把最終結果中不需要的那些事件合併成其事件的全概率而消失(對離散隨機變數用求和得全概率,對連續隨機變數用積分得全概率)。這稱為邊緣化(marginalization)。A的邊緣概率表示為P(A),B的邊緣概率表示為P(B)。 

    事實上,某個隨機變數fk的邊緣概率可由x1,x2,x3, ..., xn的聯合概率求到,具體公式為:

    啊哈,啥原理呢?原理很簡單,還是它:對xk外的其它變數的概率求和,最終剩下xk的概率!

    此外,換言之,如果有



    那麼

    上述式子如何進一步化簡計算呢?考慮到我們小學所學到的乘法分配率,可知a*b + a*c = a*(b + c),前者2次乘法1次加法,後者1次乘法,1次加法。我們這裡的計算是否能借鑑到分配率呢?別急,且聽下文慢慢道來。

    假定現在我們需要計算如下式子的結果:

    同時,f 能被分解如下:

    借鑑分配率,我們可以提取公因子:

     因為變數的邊緣概率等於所有與他相連的函式傳遞過來的訊息的積,所以計算得到:

    仔細觀察上述計算過程,可以發現,其中用到了類似“訊息傳遞”的觀點,且總共兩個步驟。

    第一步、對於f 的分解圖,根據藍色虛線框、紅色虛線框圍住的兩個box外面的訊息傳遞:

    計算可得:

    第二步、根據藍色虛線框、紅色虛線框圍住的兩個box內部的訊息傳遞:

    根據,我們有:

    就這樣,上述計算過程將一個概率分佈寫成兩個因子的乘積,而這兩個因子可以繼續分解或者通過已知得到。這種利用訊息傳遞的觀念計算概率的方法便是sum-product演算法。前面說過,基於因子圖可以用sum-product演算法可以高效的求各個變數的邊緣分佈。

    到底什麼是sum-product演算法呢?sum-product演算法,也叫belief propagation,有兩種訊息:

  • 一種是變數(Variable)到函式(Function)的訊息:,如下圖所示
    此時,變數到函式的訊息為
  • 另外一種是函式(Function)到變數(Variable)的訊息:。如下圖所示:
    此時,函式到變數的訊息為:

    以下是sum-product演算法的總體框架:

  • 1、給定如下圖所示的因子圖:

  • 2、sum-product 演算法的訊息計算規則為:

  • 3、根據sum-product定理,如果因子圖中的函式f 沒有周期,則有:

    值得一提的是:如果因子圖是無環的,則一定可以準確的求出任意一個變數的邊緣分佈,如果是有環的,則無法用sum-product演算法準確求出來邊緣分佈。

    比如,下圖所示的貝葉斯網路:

    其轉換成因子圖後,為:

    可以發現,若貝葉斯網路中存在“環”(無向),則因此構造的因子圖會得到環。而使用訊息傳遞的思想,這個訊息將無限傳輸下去,不利於概率計算。
    解決方法有3個:

  • 1、刪除貝葉斯網路中的若干條邊,使得它不含有無向環
    比如給定下圖中左邊部分所示的原貝葉斯網路,可以通過去掉C和E之間的邊,使得它重新變成有向無環圖,從而成為圖中右邊部分的近似樹結構:
    具體變換的過程為最大權生成樹演算法MSWT(詳細建立過程請參閱此PPT 第60頁),通過此演算法,這課樹的近似聯合概率P'(x)和原貝葉斯網路的聯合概率P(x)的相對熵(如果忘了什麼叫相對熵,請參閱:最大熵模型中的數學推導)最小。
  • 2、重新構造沒有環的貝葉斯網路
  • 3、選擇loopy belief propagation演算法(你可以簡單理解為sum-product 演算法的遞迴版本),此演算法一般選擇環中的某個訊息,隨機賦個初值,然後用sum-product演算法,迭代下去,因為有環,一定會到達剛才賦初值的那個訊息,然後更新那個訊息,繼續迭代,直到沒有訊息再改變為止。唯一的缺點是不確保收斂,當然,此演算法在絕大多數情況下是收斂的。

    此外,除了這個sum-product演算法,還有一個max-product 演算法。但只要弄懂了sum-product,也就弄懂了max-product 演算法。因為max-product 演算法就在上面sum-product 演算法的基礎上把求和符號換成求最大值max的符號即可!

    最後,sum-product 和 max-product 演算法也能應用到隱馬爾科夫模型hidden Markov models上,後面有機會的話可以介紹。本文完。



3 參考文獻和推薦閱讀

  1. Thomas Bayes "An essay towards solving a Problem in the Doctrine of Chances"(貝葉斯定理原始論文):http://www.sbs-bvs.be/bsn57/bsn57-6.pdf
  2. 《數理統計學簡史 第三章 貝葉斯方法》;
  3. 《貝葉斯統計 茆詩鬆著》;
  4. “Julw”的搜尋結果:http://www.gu1234.com/search?hl=zh-CN&site=webhp&source=hp&q=Julw&btnK=Google+%E6%90%9C%E7%B4%A2&gws_rd=ssl
  5. 北京10月機器學習班第9次課,鄒博講貝葉斯網路的PPThttp://pan.baidu.com/s/1o69Lp1K
  6. 相關wikipedia,比如貝葉斯定理的wiki:http://zh.wikipedia.org/zh/%E8%B4%9D%E5%8F%B6%E6%96%AF%E5%AE%9A%E7%90%86,貝葉斯網路的wiki:http://zh.wikipedia.org/wiki/%E8%B2%9D%E6%B0%8F%E7%B6%B2%E8%B7%AF。因子圖中文wiki:http://zh.wikipedia.org/zh/%E5%9B%A0%E5%AD%90%E5%9B%BE,英文wik:http://en.wikipedia.org/wiki/Factor_graph
  7. 《統計決策論及貝葉斯分析 James O.Berger著》;
  8. 貝葉斯定理:http://www.guokr.com/question/547339/
  9. 貝葉斯推斷及其網際網路應用(一):定理簡介http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html
  10. 貝葉斯推斷及其網際網路應用(三):拼寫檢查http://www.ruanyifeng.com/blog/2012/10/spelling_corrector.html
  11. Google研發總監Peter Norvig解釋拼寫檢查的原理:http://norvig.com/spell-correct.html
  12. http://www.eng.yale.edu/pjk/eesrproj_02/luckenbill_html/node4.html(sum-product);
  13. Pattern Recognition and Machine Learning Chapter 8, M. Jordan, J. Kleinberg, ect, 2006;
  14. D-Separation(D分離)-PRML-8.22-Graphical Model by 小軍:http://www.zhujun.me/d-separation-separation-d.html
  15. 因子圖介紹 by Hans-Andrea Loeliger:http://www.robots.ox.ac.uk/~parg/mlrg/papers/factorgraphs.pdf
  16. http://netclass.csu.edu.cn/jpkc2003/rengongzhineng/rengongzhineng/kejian/ai/ai/chapter4/442.htm
  17. 貝葉斯網的R實現( Bayesian networks in R)(二)bnlearn(2):http://site.douban.com/182577/widget/notes/12817482/note/283039795/
  18. 知乎上關於貝葉斯學派跟頻率派的區別的討論:http://www.zhihu.com/question/20587681
  19. factor graph,因子圖,勢函式potential function,Template models:http://www.cnblogs.com/549294286/archive/2013/06/06/3121454.html
  20. Online Bayesian Probit Regression介紹之Factor Graph:http://www.doingkong.com/?p=68
  21. An Introduction to Factor Graphs,Hans-Andrea Loeliger,MLSB 2008:http://people.binf.ku.dk/~thamelry/MLSB08/hal.pdf
  22. Factor graph and sum-product algorithm, Frank R. Kschischang, Brendan J.Frey, ect, 1998:http://filebox.vt.edu/~rmtaylor/Graphical_Modeling/Intro_and_tutorial/Kschischang_ffg_sumproduct.pdf
  23. A Tutorial on Inference and Learning in Bayesian Networks, Irina Rish:http://www.ee.columbia.edu/~vittorio/Lecture12.pdf
  24. Probabilistic Graphical Models Directed GMs: Bayesian Networks:http://www.cs.cmu.edu/~epxing/Class/10708/lectures/lecture2-BNrepresentation.pdf
  25. A Brief Introduction to Graphical Models and Bayesian Networks By Kevin Murphy, 1998:http://www.cs.ubc.ca/~murphyk/Bayes/bayes.html
  26. Probabilistic Models for Unsupervised Learning(從一個統一的視角去理解: bayesian、MAP、ML,以及FA、EM、PCA、ICA、GMM、HMM等演算法):http://mlg.eng.cam.ac.uk/zoubin/nipstut.pdf
  27. PRML概率圖模型讀書筆記:http://vdisk.weibo.com/s/DmxNcM5-7sGS
  28. 12月14日,機器學習班第15次課,鄒博講條件隨機場CRF的PPT:http://pan.baidu.com/s/1qWBdOD2

相關文章