1. 程式人生 > >一文讀懂貝葉斯推理問題:MCMC方法和變分推斷

一文讀懂貝葉斯推理問題:MCMC方法和變分推斷

全文共6415字,預計學習時長20分鐘或更長

圖片來源:pexels.com/@lum3n-com-44775

貝葉斯推理(Bayesian inference)是統計學中的一個重要問題,也是許多機器學習方法中經常遇到的問題。例如,用於分類的高斯混合模型或用於主題建模的潛在狄利克雷分配(Latent Dirichlet Allocation,簡稱LDA)模型等概率圖模型都需要在擬合數據時解決這一問題。

同時,由於模型設定(假設、維度……)不同,貝葉斯推理問題有時會很難解決。在解決大型問題時,精確的方案往往需要繁重的計算,要完成這些難以處理的計算,必須採用一些近似技術,並構建快速且有可擴充套件性的系統。

本文將討論兩種可用於解決貝葉斯推理問題的主要方法:基於取樣的馬爾可夫鏈蒙特卡羅(Markov Chain Monte Carlo,簡稱MCMC)方法和基於近似的變分推理(Variational Inference,簡稱VI)方法。

 

本文第一部分將討論貝葉斯推理問題,並介紹幾個機器學習應用的經典案例,當然,這些案例中會出現貝葉斯推理問題。第二部分將全面介紹用於解決該問題的MCMC技術,並詳細介紹其中的兩種演算法:Metropolis-Hasting演算法和吉布斯取樣(Gibbs Sampling)演算法。最後,第三部分將介紹變分推斷,並瞭解如何通過優化引數化數族分佈得到近似解。

注意,以a(∞)為標記的小節數學專業性非常強,跳過也不會影響對本文的整體理解。還要注意,本文中的p(.)可以用來表示概率、概率密度或概率分佈,具體含義取決於上下文。

貝葉斯推理問題

這一部分提出了貝葉斯推理問題,討論了一些計算困難,並給出了LDA演算法的例子。LDA演算法是一種具體的主題建模機器學習技術,能夠反映貝葉斯推理問題。

統計推斷旨在根據可觀察到的事物來了解不可觀察到的事物。即,統計推斷是基於一個總體或一些樣本中的某些觀察變數(通常是影響)得出結論的過程,例如關於總體或樣本中某些潛在變數(通常是原因)的準時估計、置信區間或區間估計等。

而貝葉斯推理則是從貝葉斯的角度產生統計推斷的過程。簡而言之,貝葉斯正規化是一種統計/概率正規化,在這種正規化中,每次記錄新的觀測資料時就會更新由概率分佈建模的先驗知識,觀測資料的不確定性則由另一個概率分佈建模。支配貝葉斯正規化的整個思想嵌入在所謂的貝葉斯定理中,該定理表達了更新知識(“後驗”)、已知知識(“先驗”)以及來自觀察的知識(“可能性”)之間的關係。

一個經典的例子是用貝葉斯推理進行引數估計。假設一個模型中資料x是根據未知引數θ的概率分佈生成的,並且有關於引數θ的先驗知識,可以用概率分佈p(θ)來表示。那麼,當觀察到資料x時,我們可以使用貝葉斯定理更新關於該引數的先驗知識,如下所示:

貝葉斯定理應用於給定觀測資料的引數推斷的說明。

計算困難

根據貝葉斯定理,後驗分佈的計算需要三個條件:先驗分佈、可能性和證據。前兩個條件很容易理解,因為它們是假設模型的一部分(在許多情況下,先驗分佈和可能性是顯而易見的)。然而,第三個條件,即歸一化因子,需要如下計算:

雖然在低維中,這個積分可以較容易地計算出來,但在高維中它會變得難以處理。在上述案例中,對後驗分佈進行精確計算是不可行的,必須使用一些近似技術(例如平均計算)來獲得後驗分佈。

貝葉斯推理問題還可能會產生一些其他的計算困難。例如,當某些變數是離散的時候會產生組合學問題。馬爾可夫鏈蒙特卡羅(Markov Chain Monte Carlo,簡稱MCMC)和變分推理(Variational Inference,簡稱VI)是最常用於解決這些問題的兩種方法。下文將描述這兩種方法,尤其關注“歸一化因子問題”,但是應該記住,這些方法也可用於與貝葉斯推理相關的其他計算困難。

為了讓接下來的章節更易於理解,可以觀察到,由於x應該是給定的,因此可以作為引數,那麼,θ的概率分佈則被定義為歸一化因子

在描述MCMC和VI兩個部分之前,先來看一個具體例子,瞭解在機器學習LDA中存在的貝葉斯推理問題。

舉例

貝葉斯推理問題通常出現在需要假設概率圖模型或根據給定觀測值得出模型潛變數的機器學習方法中。在主題建模中,潛在狄利克雷分配(LDA)定義了一個用於描述語料庫文字的模型。因此,給定大小為V的完整語料庫詞彙表和給定數量為T的主題,模型假設:

· 對於每個主題,在詞彙表上都存在一個“主題詞”的概率分佈(使用Dirichlet先驗假設)

· 對於每個文件,在主題上都存在一個“文件主題”的概率分佈(使用另一個Dirichlet先驗假設)

· 對文件中的每個單詞進行取樣。首先,從文件的“文件 - 主題”分佈中對主題進行取樣;其次,從附加到取樣話題的“主題 - 單詞”分佈中取樣一個單詞。

該方法的名稱來源於模型中假設的Dirichlet先驗,其目的是推斷觀察到的語料庫中的潛在主題以及每個文件的主題分解。即使不深入研究LDA方法的細節,也可以粗略地用w來表示語料庫中單詞的向量,用z來表示與這些單詞相關的主題向量,用貝葉斯方法根據觀測到的w推斷出z:

由於維度過高,這裡無法推斷出歸一化因子,同時,還存在組合問題(因為一些變數是離散的),需要使用MCMC方法或VI方法來獲得近似解。對主題建模及其特定的貝葉斯推理問題感興趣的讀者可以看看下面這篇關於LDA的參考文獻。

傳送門:http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf

LDA方法的說明。

馬爾可夫鏈蒙特卡洛(MCMC)方法

上文提到,貝葉斯推理問題中的主要困難來自於歸一化因子。本節將描述MCMC取樣方法,為歸一化因子以及與貝葉斯推理相關的其他計算困難提供解決方案。

取樣方法

取樣方法如下,首先假設有一種方法(MCMC)可以從由一個因子定義的概率分佈中抽取樣本。然後,可以從這個分佈中得到樣本(僅使用未標準化的部分定義),並使用這些樣本計算各種準時統計量,如均值和方差,甚至通過核密度估計來求得近似分佈,從而避免處理涉及後驗的棘手計算。

與下一節所述的VI方法相反,對所研究的概率分佈(貝葉斯推理中的後驗分佈)MCMC方法無需假設模型。因此,該方法具有低偏差但高方差,這意味著大多數情況下,獲得的結果比從VI方法中得到的結果花費更多時間精力,但也更準確。

總結本小節,即上述的取樣過程並不侷限於後驗分佈的貝葉斯推理,它還可以普遍用於所有由歸一化因子定義的概率分佈。

取樣方法(MCMC)的說明。

MCMC方法的概念

在統計學中,馬爾可夫鏈蒙特卡羅(MCMC)演算法旨在從給定的概率分佈中生成樣本。該方法名稱中的“蒙特卡羅”部分是出於取樣目的,而“馬爾可夫鏈”部分來自獲取這些樣本的方式。

為了得到樣本,要建立一個馬爾可夫鏈,從其平穩分佈中獲得樣本。然後,可以從馬爾可夫鏈中模擬隨機的狀態序列,該序列足夠長,能夠(幾乎)達到穩態,再保留生成的一些狀態作為樣本。

在隨機變數生成技術中,MCMC是一種相當高階的方法,可以從一個非常困難的概率分佈中獲得樣本,這個概率分佈可能僅由一個乘法常數定義。更出乎意料的是,可以用MCMC從一個未經標準化的分佈中獲得樣本,這來自於定義馬爾可夫鏈的特定方式,馬爾可夫鏈對這些歸一化因子並不敏感。

MCMC方法旨在從一個困難的概率分佈中生成樣本,該概率分佈可以僅由一個因子定義而成。

馬爾可夫鏈的定義

整個MCMC方法是基於馬爾可夫鏈的建立,並從其平穩分佈中取樣。為此,Metropolis-Hasting和吉布斯取樣演算法都使用了馬氏鏈的一個特殊性質:可逆性。

狀態空間為E的馬爾可夫鏈,轉移概率由下式表示

如果存在概率分佈γ,上式則是可逆的

對於這樣的馬氏鏈,可以很容易地證明有

然後,γ是一個平穩分佈(對不可約馬氏鏈來說,也是唯一一個平穩分佈)。

現在假設想要取樣的概率分佈π僅由一個因子定義

(其中C是未知的乘法常數)。可以注意到以下等式成立

接著,是轉移概率為k(.,.)的馬爾可夫鏈被定義為驗證過去的等式,如預期那樣將π定義為平穩分佈。因此,我們可以定義一個馬爾可夫鏈的平穩概率分佈為π,該分佈不能精確計算。

Gibbs取樣轉換(∞)

假設待定義的Markov鏈是D維的,則

吉布斯取樣(Gibbs Sampling)假設即使在無法得知聯合概率的情況下,也可以基於其他維度計算得出某一維度的條件分佈。基於此假設,Gibbs取樣轉換可定義為,下一階段狀態,如在n+1次迭代的狀態,可由如下步驟得出。

首先,從D維X_n中隨機選擇一個整數d。然後,根據相應的條件概率,通過取樣賦予維度d一個新數值。這一過程中,其他維度保持如下狀態不變:

其中

是基於其他維度得出的第d個維度的條件分佈。

通常,設

則轉換概率可以表示為

並且,在唯一有意義的情況下,區域性平衡按預期得到了驗證

Metropolis-Hasting轉換(∞)

有時候,計算Gibbs取樣中的條件分佈也是很複雜的。在這種情況下,可以採用Metropolis-Hasting演算法。運用該演算法,需要先定義一個側向的轉換概率h(.,.),該概率將被用於建議轉換。下一階段(n+1次迭代)Markov鏈的狀態可由如下步驟得出。首先,從h中生成“建議轉換”x,並計算一個關聯概率r用於接受x:

可以得到如下有效轉換

通常,轉換概率可以表示為

同時,區域性平衡按預期得到了驗證

取樣過程

定義Markov鏈後,模擬一串隨機狀態序列(隨機初始化數值),並對其中一些狀態進行設定,如設定為服從目標分佈的獨立樣本。

第一步,為了讓樣本(近似)服從目標分佈,僅考慮與初始設定序列狀態相差大的狀態,使Markov鏈近似達到穩定狀態(理論上來說,漸進達到穩定狀態)。這樣一來,初始設定狀態就沒樣本那麼有用了。這一達到平穩的階段被稱為老化時間(burn-in time)。需要注意的是,實際操作中很難知道該階段會持續多長時間。

第二步,為了獲得(近似)獨立樣本,不能把所有的序列連續狀態都放在老化時間之後。實際上,Markov鏈的定義中就已經表明了兩個連續狀態之間有很強的聯絡。因此,需要把狀態相差很遠的樣本預設為近似獨立。在實際操作中,可以通過分析自相關函式來預測兩個近似獨立狀態間所需要的滯後(僅限於數值資料)。

所以,為了得到服從目標分佈的獨立樣本,需要從位於老化時間B之後的、彼此間滯後為L的初始序列中分離出狀態。設Markov鏈連續狀態為

則樣本狀態為

MCMC取樣需要考慮老化時間和滯後。

變分推斷(VI)

另一個可用於解決複雜推斷計算問題的方法是變分推斷(Variational Inference,簡稱VI)。VI旨在找到引數化數族的最優近似分佈。為此,需要遵循一個優化過程(優化數族裡的引數),該過程需要僅由一個因子定義的目標分佈。

逼近法

給定一個數族,VI旨在搜尋該數族中某些複雜目標概率分佈的最優近似解。具體來說,VI定義一個引數化數族分佈,並通過優化引數得到具有確定誤差測量的最接近目標的元素。

將歸一化因子C的概率分佈π定義為:

應用數學術語,設引數化數族分佈為

對於兩個分佈p和q的誤差測量E(p,q),搜尋如下最優引數

如果想要在未明確標準化π的情況下解決該問題,那麼不需要複雜的計算,f_