概率圖模型


過去的一段時間里,忙於考試、忙於完成實驗室要求的任務、更忙於過年,很長時間沒有以一種良好的心態來回憶、總結自己所學的東西了。這幾天總在想,我應該怎么做。后來我才明白,應該想想我現在該做什么,所以我開始寫這篇博客了。這將是對概率圖模型的一個很基礎的總結,主要參考了《PATTERN RECOGNITION and MACHINE LEARNING》。看這部分內容主要是因為LDPC碼中涉及到了相關的知識。概率圖模型本身是值得深究的,但我了解得不多,本文就純當是介紹了,如有錯誤或不當之處還請多多指教。

0. 這是什么?

    很多事情是具有不確定性的。人們往往希望從不確定的東西里盡可能多的得到確定的知識、信息。為了達到這一目的,人們創建了概率理論來描述事物的不確定性。在這一基礎上,人們希望能夠通過已經知道的知識來推測出未知的事情,無論是現在、過去、還是將來。在這一過程中,模型往往是必須的,什么樣的模型才是相對正確的?這又是我們需要解決的問題。這些問題出現在很多領域,包括模式識別、差錯控制編碼等。

    概率圖模型是解決這些問題的工具之一。從名字上可以看出,這是一種或是一類模型,同時運用了概率和圖這兩種數學工具來建立的模型。那么,很自然的有下一個問題

1. 為什么要引入概率圖模型?

    對於一般的統計推斷問題,概率模型能夠很好的解決,那么引入概率圖模型又能帶來什么好處呢?

    LDPC碼的譯碼算法中的置信傳播算法的提出早於因子圖,這在一定程度上說明概率圖模型不是一個從不能解決問題到解決問題的突破,而是采用概率圖模型能夠更好的解決問題。《模式識別和機器學習》這本書在圖模型的開篇就闡明了在概率模型中運用圖這一工具帶來的一些好的性質,包括

    1. They provide a simple way to visualize the structure of a probabilistic model and can be used to design and motivate new models.

    2. Insights into the properties of the model, including conditional independence properties, can be obtained by inspection of the graph.

    3. Complex computations, required to perform inference and learning in sophisticated models, can be expressed in terms of graphical manipulations, in which underlying mathematical expressions are carried along implicitly.

    簡而言之,就是圖使得概率模型可視化了,這樣就使得一些變量之間的關系能夠很容易的從圖中觀測出來;同時有一些概率上的復雜的計算可以理解為圖上的信息傳遞,這是我們就無需關注太多的復雜表達式了。最后一點是,圖模型能夠用來設計新的模型。所以多引入一數學工具是可以帶來很多便利的,我想這就是數學的作用吧。

    當然,我們也可以從另一個角度考慮其合理性。我們的目的是從獲取到的量中得到我們要的信息,模型是相互之間約束關系的表示,而數據的處理過程中運用到了概率理論。而圖恰恰將這兩者之間聯系起來了,起到了一個很好的表示作用。

2.加法准則和乘法准則

    涉及到概率的相關問題,無論有多復雜,大抵都是基於以下兩個式子的——加法准則和乘法准則。

    第一個式子告訴我們當知道多個變量的概率分布時如何計算單個變量的概率分布,而第二個式子說明了兩個變量之間概率的關系。譬如之間相互獨立時應有

 

    還有一個是著名的貝葉斯公式,這和上面的乘法准則是一樣的(當然分母也可以用加法公式寫,這樣就是那個全概率公式了)

3.圖和概率圖模型

    下面這張圖片描述的就是,它是由一些帶有數字的圓圈和線段構成的,其中數字只是一種標識。我們將圓圈稱為節點,將連接圓圈的節點稱為邊,那么圖可以表示為

File:6n-graf.svg

    如果邊有方向,稱圖為有向圖,否則為無向圖;

    兩個節點是連通的是指兩節點之間有一條路;

    路是由節點和邊交叉構成的;

    上述定義都不太嚴格,具體可參考圖論相關知識。

有向圖模型(貝葉斯網絡)

    舉個例子,譬如有一組變量,如果每個變量只與其前一個變量有關(1階馬爾可夫過程),那么以下等式成立

    那么如何用圖來表示這一關系呢?自然,我們要表示的是右邊的式子,右邊的式子表示了變量之間的聯系。而當我們觀察條件概率時,我們發現我們必須要指明哪個是條件。如果我們采用變量為節點,采用無向圖這種節點等價的關系顯然不能直接描述條件概率,因此這里選擇了有向圖來描述這一關系,即表示為

image

    那么此時上述的1階馬爾可夫過程表示為,注意其中沒有箭頭指向,故表示意味着無條件。

image

    有向圖模型,或稱貝葉斯網絡,描述的是條件概率,或許這就是其被稱為貝葉斯網絡的原因吧。此處不再細說,更多內容(包括d-separation等)可參考后文提及的相關資料。

無向圖模型(馬爾可夫隨機場)

    構造有向圖模型需要變量之間顯式的、很強的約束關系。即首先要有條件概率分布關系,其次還要是可求的。為了達到這一目的,很有可能我們要做很多不切實際的假設。譬如朴素貝葉斯(Naive Bayes)的假設就相當的Naive。如下所示,其假設往往是不成立的。


\begin{align}
p(C_k \vert x_1, \dots, x_n) & \varpropto p(C_k, x_1, \dots, x_n) \\
                             & \varpropto p(C_k) \ p(x_1 \vert C_k) \ p(x_2\vert C_k) \ p(x_3\vert C_k) \ \cdots \\
                             & \varpropto p(C_k) \prod_{i=1}^n p(x_i \vert C_k)\,.
\end{align}

    那什么是更弱的假設呢?很多時候我們知道兩個變量之間一定是相關的,但我們不知道到底是怎么相關的。這時候我們也可以用其相關性來構造概率圖模型。相關是不分方向的,此時我們應該選擇無向圖來表示。

    和相關對應的是獨立(實際上是不相關,這里不做區分了),我們可以這樣來構造圖模型,如果兩個節點之間獨立,那么沒有路使其相連。條件獨立即去掉條件中節點后,兩節點之間沒有路相連。具體可由《PATTERN RECOGNITION and MACHINE LEARNING》中的例子闡述

image

    如上圖所示,A中節點到B集合中節點的每一條路都通過了C中節點,這代表着。無向圖模型很完美的將這種弱的關系表現出來了,有一種很神奇的感覺,但光表示是沒有多大用處的,我們還是要計算概率。對於變量,顯然有

   但更顯然的是我們不應該這樣做,因為沒有意義。所以他們是這樣做的,為什么可以?我也沒弄明白,我只是感覺了一下,覺得差不多……思想是一樣的,就是把概率分開,分開了才能體現特點。

   將圖中的節點分成多個小的集合$X_c$,其中集合內的點兩兩之間有邊相連接,這些集合被稱為cliques,那么概率分布滿足

    其中$Z$是歸一化因子(使得概率之和為1),$\Phi$函數是勢能函數,恆正。取為

    是能量函數,不得不說這是一個很神奇的東西。不太會就先總結到這里了。

因子圖

    按理來說,無向+有向就全了。為什么還有一類呢?或許嚴格來說不應該將因子圖和上述兩類並列的,但我不知道放到哪里去……

    因子,從名字中就強調了的兩個字一定是其重要組成部分。而上述的兩類圖表現出的變量之間最終的關系實際上就是將概率分布化為了多個式子的乘積。對於多項式而言,我們有因式分解。譬如在解高次方程的時候,我們非常希望方程能夠分解為多個低次方程的乘積。那么,對於概率分布函數而言,我們也希望能夠這樣做,即

    其中,中變量的子集,至於到底能夠如何分解是取決於問題的,就好象多項式的分解取決於其具體形式。對於一個實際的問題,如果有以下關系

    那么這一個式子的因子圖表示如下

image

    從這個例子,我們總結一下因子圖是什么。因子圖有兩類節點,一是變量節點,另一類為因子節點。這兩類節點的內部沒有邊直接相連,變量的概率分布可以因式分解為因子節點的函數的乘積,因子節點的函數變量包括與其直接相連的變量節點。


    三類圖各有特點,適用於不同的場合,且這三類圖是可以相互轉換的。轉換方式此處不做描述。


4.舉例

    HMM,隱馬爾可夫模型,是一種有向圖模型。這和上述的1階馬爾可夫過程是類似的,不同之處在於我們能夠觀測到的量不是過程本身,而是與其有一定關系的另一些量。HMM應用很廣泛,可以參考隱馬爾可夫模型(HMM)攻略

image

    RBM,限制玻爾茲曼機,無向圖模型。了解深度學習相關知識的對這個應該很熟悉,看到無向圖模型的時候就會發現,都有一個勢能函數。這個我不太會,就不介紹了。

image

    圖像去噪,PRML中的一個例子,無向圖模型。目的是從觀測到的有噪聲的圖片中恢復出原始圖片,做出的假設是觀察到的圖片像素點和原始圖片相關,同時原始圖片相鄰像素點之間相關。

image

    LDPC譯碼,差錯控制編碼中的例子,因子圖。其中$Y$是觀測節點,和變量節點$X$相關,同時$f$是因子節點,約束是連接該節點的變量節點模2和為0。(也可以去掉$Y$,這樣就是比較標准的因子圖了)

image

5.推理:和積算法

    本節將以和積算法為例,說明概率圖模型下的概率計算過程。和積算法也用在LDPC譯碼過程中,這一過程也將證實“一些概率上的復雜的計算可以理解為圖上的信息傳遞,這是我們就無需關注太多的復雜表達式了”這一觀點。和積算法作用在因子圖上,旨在計算邊緣概率

    其中,表示除之外的變量集合。 具體算法推導過程可以參考PRML的p402。這里僅簡單敘述。


    最簡單的情況是只有一個變量節點和因子節點,這個時候就不用算了。但實際情況不可能是這樣的,但這並不影響我們采用化繁為簡的思路

    這里我們做出一個假設是一旦我們斷開了一條變量節點和因子節點的邊,那么因子圖就變成了兩個互不連通的因子圖。(否則則有環,但實際上很多有環的圖采用這一算法也得到了很好的結果)

image

    考慮圖上的信息流動,從因子節點$f_s$到變量節點$x$以及從變量節點$x$到因子節點$f_s$。充分利用上述假設帶來的結果,最后我們可以推得

    以及

    此處不做具體解釋,僅說明何為“圖上的信息傳遞”。推理過程和最后的結果都不是很直觀,但我們可以理解

    是因子節點傳遞給變量節點的信息,這包括除該變量節點之外的所有因子節點傳遞給校驗節點的信息。表示為因子節點接收到的信息的乘積乘上因子節點本身的約束函數后求和。

    是變量節點傳遞給因子節點的信息,這表現為接收到的其他變量節點信息的乘積。


6.參考和其他

     本文主要參考了《PATTERN RECOGNITION and MACHINE LEARNING》(以下簡稱PRML)和《Probabilistic Graphical Models:Principles and Techniques》(以下簡稱PGM)這兩本書。在本文的撰寫過程中,還發現了CMU的同名公開課 ,並做了一定的參考(有些圖是上面的)。

    PRML只有一章講圖模型,內容遠遠沒有PGM多,思路也不相同。CMU公開課的參考書籍是PGM,我看的是03版的,不知道10多年過去了有沒有再版。PGM的結構是從以下三點來進行的

  • Reprentation:如何建模以表示現實世界中的不確定性和各個量之間的關系。
  • Inference:如何從我們建立的模型中去推知我們要求的問題(概率).
  • Learnig:對於我的數據來說,什么模型是相對正確的?

    這一思路致力於建立一個解決問題的框架,很多機器學習算法可以從這一框架下來理解。這一部分內容還沒怎么看,如果有機會的再好好看看吧,現在實在是……

    這部分內容我也是初學,且主要在差錯控制編碼(LDPC)上,希望能和大家多多交流.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM