機器學習之MCMC算法


1、MCMC概述

  從名字我們可以看出,MCMC由兩個MC組成,即蒙特卡羅方法(Monte Carlo Simulation,簡稱MC)和馬爾科夫鏈(Markov Chain ,也簡稱MC)。之前已經介紹過蒙特卡洛方法,接下來介紹馬爾科夫鏈,以及結合兩者的采樣算法。

 

2、馬爾科夫鏈

  馬爾科夫鏈的概念在很多地方都被提及過,它的核心思想是某一時刻狀態轉移的概率只依賴於它的前一個狀態。  

  我們用數學定義來描述,則假設我們的序列狀態是...Xt2Xt1XtXt+1,...,那么我們的在時刻Xt+1的狀態的條件概率僅僅依賴於時刻Xt,即:

  

  既然某一時刻狀態轉移的概率只依賴於它的前一個狀態,那么我們只要能求出系統中任意兩個狀態之間的轉換概率,這個馬爾科夫鏈的模型就定了。狀態轉移情況如下圖所示

  

  則狀態轉移矩陣可以表示為

  

  此時,我們給定一個初始狀態,然后經過該狀態轉移矩陣的轉換,最終會收斂到一個穩定的狀態,具體如馬爾科夫鏈定理所示

  

  由於馬爾科夫鏈能收斂到平穩分布, 於是有了一個想法:如果我們能構造一個轉移矩陣為P的馬氏鏈,使得該馬氏鏈的平穩分布恰好是p(x), 那么我們從任何一個初始狀態x0出發沿着馬氏鏈轉移, 得到一個轉移序列 x0, x1, x2,⋯xn, xn+1⋯, 如果馬氏鏈在第n步已經收斂了,於是我們就得到了 π(x) 的樣本xn, xn+1⋯(也就是從第n步收斂時開始,之后的x都服從同一個平穩分布,我們可以將這個分布設定為我們的目標采樣分布)。

  從上面可以看出馬爾科夫鏈的平穩分布收斂主要依賴於狀態轉移矩陣,所以關鍵是如何構建狀態轉移矩陣,使得最終的平穩分布是我們所要的分布。想做到這一點主要依賴於細致平穩定理

  

 

3、MCMC采樣和M-H采樣

  在MCMC采樣中先隨機一個狀態轉移矩陣Q,然而該矩陣不一定能滿足細致平穩定理,一次會做一些改進,具體過程如下

  

  MCMC采樣算法的具體流程如下

  

  然而關於MCMC采樣有收斂太慢的問題,所以在MCMC的基礎上進行改進,引出M-H采樣算法

  

  M-H算法的具體流程如下

  

  M-H算法在高維時同樣適用

  

  一般來說M-H采樣算法較MCMC算法應用更廣泛,然而在大數據時代,M-H算法面臨着兩個問題:

  1)在高維時的計算量很大,算法效率很低,同時存在拒絕轉移的問題,也會加大計算量

  2)由於特征維度大,很多時候我們甚至很難求出目標的各特征維度聯合分布,但是可以方便求出各個特征之間的條件概率分布(因此就思考是否能只知道條件概率分布的情況下進行采樣)。

 

4、Gibbs采樣

  

  

  因此可以得出在二維的情況下Gibbs采樣算法的流程如下

  

  而在多維的情況下,比如一個n維的概率分布π(x1x2...xn),我們可以通過在n個坐標軸上輪換采樣,來得到新的樣本。對於輪換到的任意一個坐標軸xi上的轉移,馬爾科夫鏈的狀態轉移概率為P(xi|x1x2...xi1xi+1...xn),即固定n1個坐標軸,在某一個坐標軸上移動。而在多維的情況下Gibbs采樣算法的流程如下

  

  由於Gibbs采樣在高維特征時的優勢,目前我們通常意義上的MCMC采樣都是用的Gibbs采樣。當然Gibbs采樣是從M-H采樣的基礎上的進化而來的,同時Gibbs采樣要求數據至少有兩個維度,一維概率分布的采樣是沒法用Gibbs采樣的,這時M-H采樣仍然成立。


免責聲明!

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



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