MCMC-2|機器學習推導系列(十六)

酷酷的群發表於2020-10-06

一、概述

1. 概述

在對一個概率分佈進行隨機抽樣,或者是求函式關於該概率分佈的數學期望時可以使用馬爾可夫鏈蒙特卡羅法(MCMC)。相比與拒絕取樣法和重要性取樣法,MCMC更適用於隨機變數是多元的、概率密度函式是非標準形式的、隨機變數各分量不獨立等情況。

對於多元隨機變數 x x x,滿足 x ∈ X x\in \mathcal{X} xX,其概率密度函式為 p ( x ) p(x) p(x) f ( x ) f(x) f(x)為定義在 x ∈ X x\in \mathcal{X} xX的函式,目標是獲得概率分佈 p ( x ) p(x) p(x)的樣本集合以及求函式 f ( x ) f(x) f(x)的數學期望 E p ( x ) [ f ( x ) ] E_{p(x)}[f(x)] Ep(x)[f(x)]

應用MCMC解決這個問題。基本想法是:在隨機變數 x x x的狀態空間 S S S上定義一個滿足遍歷定理的馬爾可夫鏈 X X X,使其平穩分佈就是抽樣的目標分佈 p ( x ) p(x) p(x)。然後在這個馬爾可夫鏈上隨機遊走,每個時刻得到一個樣本。

根據遍歷定理,當時間趨於無窮時,樣本的分佈趨於平穩分佈,樣本的函式均值趨近函式的數學期望。所以,當時間足夠長時(時刻大於某個正整數 m m m),在之後的時間(時間小於等於某個正整數 n n n n > m n> m n>m)裡隨機遊走得到的樣本集合 { x m + 1 , x m + 2 , ⋯   , x n } \left \{x_{m+1},x_{m+2},\cdots ,x_{n}\right \} {xm+1,xm+2,,xn}就是目標概率分佈的抽樣結果,得到的函式均值(遍歷均值)就是要計算的數學期望值:

E ^ f = 1 n − m ∑ i = m + 1 n f ( x i ) \hat{E}f=\frac{1}{n-m} \sum_{i=m+1}^{n} f(x_{i}) E^f=nm1i=m+1nf(xi)

到時刻 m m m為止的時間段稱為燃燒期

2. 需要注意的幾個知識點

  • 由於這個馬爾可夫鏈滿足遍歷定理,隨機遊走的初始點並不影響得到的結果,也就是說從不同的起始點出發,都會收斂到同一平穩分佈。

  • MCMC的收斂性的判斷往往是經驗性的,比如,在馬爾可夫鏈上進行隨機遊走,檢驗遍歷均值是否收斂。具體的方法有:
    ①每隔一段時間取一次樣本,得到多個樣本以後,計算遍歷均值,當計算的均值穩定後,認為馬爾可夫鏈已經收斂。
    ②在馬爾可夫鏈上並行進行多個隨機遊走,比較各個隨機遊走的遍歷均值是否接近一致。

  • MCMC中得到的樣本序列,相鄰的樣本點是相關的,而不是獨立的。因此,在需要獨立樣本時,可以在該樣本序列中再次進行隨機抽樣,比如每隔一段時間取一次樣本,將這樣得到的子樣本集合作為獨立樣本集合。

  • 一般來說,MCMC比拒絕取樣法更容易實現,因為只需要定義馬爾可夫鏈,而不需要定義建議分佈。一般來說MCMC比拒絕取樣效率更高,因為沒有大量被拒絕的樣本,雖然燃燒期的成本也要拋棄。

3. 馬爾可夫鏈蒙特卡羅法的基本步驟

①首先,在隨機變數 x x x的狀態空間上構造一個滿足遍歷定義的馬爾可夫鏈,使其平穩分佈為目標分佈 p ( x ) p(x) p(x);
②從狀態空間的某一點 x 0 x_0 x0出發,用構造的馬爾可夫鏈進行隨機遊走,產生樣本序列 x 0 , x 1 , ⋯   , x t , ⋯ x_0,x_1,\cdots ,x_t,\cdots x0,x1,,xt,;
③應用馬爾可夫鏈的遍歷定理,確定正整數 m m m n n n m < n m<n m<n),得到樣本集合 { x m + 1 , x m + 2 , ⋯   , x n } \left \{x_{m+1},x_{m+2},\cdots ,x_{n}\right \} {xm+1,xm+2,,xn},求得 f ( x ) f(x) f(x)的均值(遍歷均值):

E ^ f = 1 n − m ∑ i = m + 1 n f ( x i ) \hat{E}f=\frac{1}{n-m} \sum_{i=m+1}^{n} f(x_{i}) E^f=nm1i=m+1nf(xi)

這裡有幾個重要問題:

①如何定義馬爾可夫鏈,保證MCMC的條件成立;
②如何確定收斂步數 m m m,保證樣本抽樣的無偏性;
③如何確定迭代步數 n n n,保證遍歷均值計算的精度。

二、Metropilis-Hastings演算法(MH演算法)

1. 基本原理

假設要抽樣的概率分佈為 p ( x ) p(x) p(x)。MH演算法採用轉移核為 p ( x , x ′ ) p(x,x^{'}) p(x,x)的馬爾可夫鏈:

p ( x , x ′ ) = q ( x , x ′ ) α ( x , x ′ ) p(x,x^{'})=q(x,x^{'})\alpha (x,x^{'}) p(x,x)=q(x,x)α(x,x)

其中 q ( x , x ′ ) q(x,x^{'}) q(x,x)稱為建議分佈(proposal distribution) α ( x , x ′ ) \alpha (x,x^{'}) α(x,x)稱為接受分佈(acceptance distribution)

q ( x , x ′ ) q(x,x^{'}) q(x,x)是另一個馬爾可夫鏈的轉移核,並且 q ( x , x ′ ) q(x,x^{'}) q(x,x)是不可約的,即其概率值恆不為 0 0 0,同時也是一個容易抽樣的分佈。接受分佈 α ( x , x ′ ) \alpha (x,x^{'}) α(x,x)是:

α ( x , x ′ ) = m i n { 1 , p ( x ′ ) q ( x ′ , x ) p ( x ) q ( x , x ′ ) } \alpha (x,x^{'})=min \left \{1,\frac{p(x^{'})q(x^{'},x)}{p(x)q(x,x^{'})}\right \} α(x,x)=min{1,p(x)q(x,x)p(x)q(x,x)}

這時,轉移核 p ( x , x ′ ) p(x,x^{'}) p(x,x)可以寫成:

p ( x , x ′ ) = { q ( x , x ′ ) ,                      p ( x ′ ) q ( x ′ , x ) ≥ p ( x ) q ( x , x ′ ) q ( x ′ , x ) p ( x ′ ) p ( x ) ,        p ( x ′ ) q ( x ′ , x ) < p ( x ) q ( x , x ′ ) p(x,x^{'})=\left\{\begin{matrix} q(x,x^{'}),\; \; \; \; \; \; \; \; \; \; p(x^{'})q(x^{'},x)\geq p(x)q(x,x^{'})\\ q(x^{'},x)\frac{p(x^{'})}{p(x)},\; \; \; p(x^{'})q(x^{'},x)< p(x)q(x,x^{'}) \end{matrix}\right. p(x,x)={q(x,x),p(x)q(x,x)p(x)q(x,x)q(x,x)p(x)p(x),p(x)q(x,x)<p(x)q(x,x)

轉移核為 p ( x , x ′ ) p(x,x^{'}) p(x,x)的馬爾可夫鏈上的隨機遊走以以下方式進行。如果在時刻 t − 1 t-1 t1處於狀態 x x x,即 x t − 1 = x x_{t-1}=x xt1=x,則先按建議分佈 q ( x , x ′ ) q(x,x^{'}) q(x,x)抽樣產生一個候選狀態 x ′ x^{'} x,然後按照接受分佈 α ( x , x ′ ) \alpha (x,x^{'}) α(x,x)抽樣決定是否接受狀態 x ′ x^{'} x。以概率 α ( x , x ′ ) \alpha (x,x^{'}) α(x,x)接受 x ′ x^{'} x,決定時刻 t t t轉移到狀態 x ′ x^{'} x,而以概率 1 − α ( x , x ′ ) 1-\alpha (x,x^{'}) 1α(x,x)拒絕 x ′ x^{'} x,決定時刻 t t t仍停留在狀態 x x x。具體地,從區間 ( 0 , 1 ) (0,1) (0,1)上的均勻分佈中抽取一個隨機數 u u u,決定時刻 t t t的狀態:

x t = { x ′ ,      u ≤ α ( x , x ′ ) x ,      u > α ( x , x ′ ) x_{t}=\left\{\begin{matrix} x^{'},\; \; u\leq \alpha (x,x^{'})\\ x,\; \; u> \alpha (x,x^{'}) \end{matrix}\right. xt={x,uα(x,x)x,u>α(x,x)

可以證明,轉移核為 p ( x , x ′ ) p(x,x^{'}) p(x,x)的馬爾可夫鏈是可逆馬爾可夫鏈(滿足遍歷定理),其平穩分佈就是 p ( x ) p(x) p(x),即要抽樣的目標分佈。也就是說這是MCMC的一個具體實現。

2. 定理

由轉移核 p ( x , x ′ ) = q ( x , x ′ ) α ( x , x ′ ) p(x,x^{'})=q(x,x^{'})\alpha (x,x^{'}) p(x,x)=q(x,x)α(x,x)構成的馬爾可夫鏈是可逆的,即
p ( x ) p ( x , x ′ ) = p ( x ′ ) p ( x ′ , x ) p(x)p(x,x^{'})=p(x^{'})p(x^{'},x) p(x)p(x,x)=p(x)p(x,x)
並且 p ( x ) p(x) p(x)是該馬爾可夫鏈的平穩分佈。

證明如下:

x = x ′ x=x^{'} x=x,則上式顯然成立。
x ≠ x ′ x\neq x^{'} x=x,則:
p ( x ) p ( x , x ′ ) = p ( x ) q ( x , x ′ ) m i n { 1 , p ( x ′ ) q ( x ′ , x ) p ( x ) q ( x , x ′ ) } = m i n { p ( x ) q ( x , x ′ ) , p ( x ′ ) q ( x ′ , x ) } = p ( x ′ ) q ( x ′ , x ) m i n { p ( x ) q ( x , x ′ ) p ( x ′ ) q ( x ′ , x ) , 1 } = p ( x ′ ) p ( x ′ , x ) p(x)p(x,x^{'})=p(x)q(x,x^{'})min \left \{1,\frac{p(x^{'})q(x^{'},x)}{p(x)q(x,x^{'})}\right \}\\ =min\left \{p(x)q(x,x^{'}),p(x^{'})q(x^{'},x)\right \}\\ =p(x^{'})q(x^{'},x)min \left \{\frac{p(x)q(x,x^{'})}{p(x^{'})q(x^{'},x)},1\right \}\\ =p(x^{'})p(x^{'},x) p(x)p(x,x)=p(x)q(x,x)min{1,p(x)q(x,x)p(x)q(x,x)}=min{p(x)q(x,x),p(x)q(x,x)}=p(x)q(x,x)min{p(x)q(x,x)p(x)q(x,x),1}=p(x)p(x,x)
p ( x ) p ( x , x ′ ) = p ( x ′ ) p ( x ′ , x ) p(x)p(x,x^{'})=p(x^{'})p(x^{'},x) p(x)p(x,x)=p(x)p(x,x)知:
∫ p ( x ) p ( x , x ′ ) d x = ∫ p ( x ′ ) p ( x ′ , x ) d x = p ( x ′ ) ∫ p ( x ′ , x ) d x = p ( x ′ ) \int p(x)p(x,x^{'})\mathrm{d}x\\ =\int p(x^{'})p(x^{'},x)\mathrm{d}x\\ =p(x^{'})\int p(x^{'},x)\mathrm{d}x\\ =p(x^{'}) p(x)p(x,x)dx=p(x)p(x,x)dx=p(x)p(x,x)dx=p(x)
所以 p ( x ) p(x) p(x)是該馬爾可夫鏈的平穩分佈。

3. 建議分佈

建議分佈 q ( x , x ′ ) q(x,x^{'}) q(x,x)有多種可能的形式,這裡介紹兩種常用形式。

  • 第一種形式

假設建議分佈是對稱的,即對任意的 x x x x ′ x^{'} x有:

q ( x , x ′ ) = q ( x ′ , x ) q(x,x^{'})=q(x^{'},x) q(x,x)=q(x,x)

這樣的建議分佈稱為Metropolis選擇,也是MH演算法最初採用的建議分佈。這時,接受分佈 α ( x , x ′ ) \alpha (x,x^{'}) α(x,x)簡化為:

α ( x , x ′ ) = m i n { 1 , p ( x ′ ) p ( x ) } \alpha (x,x^{'})=min \left \{1,\frac{p(x^{'})}{p(x)}\right \} α(x,x)=min{1,p(x)p(x)}

Metropolis特例:

q ( x , x ′ ) = p ( x ′ ∣ x ) q(x,x^{'})=p(x^{'}|x) q(x,x)=p(xx),定義為多元正態分佈,其均值是 x x x,其協方差矩陣是常數矩陣(因為協方差矩陣是常數矩陣,所以 q ( x , x ′ ) q(x,x^{'}) q(x,x)對稱)。
q ( x , x ′ ) = q ( ∣ x = x ′ ∣ ) q(x,x^{'})=q(|x=x^{'}|) q(x,x)=q(x=x),這時演算法稱為隨機遊走Metropolis演算法。例如:
q ( x , x ′ ) ∝ e x p { − ( x ′ − x ) 2 2 } q(x,x^{'})\propto exp\left \{-\frac{(x^{'}-x)^{2}}{2}\right \} q(x,x)exp{2(xx)2}

Metropolis選擇的特點是當 x ′ x^{'} x x x x接近時, q ( x , x ′ ) q(x,x^{'}) q(x,x)的概率值高,否則 q ( x , x ′ ) q(x,x^{'}) q(x,x)的概率值低。狀態轉移在附近點的可能性更大。

  • 第二種形式

第二種形式稱為獨立抽樣。假設 q ( x , x ′ ) q(x,x^{'}) q(x,x)與當前狀態 x x x無關,即 q ( x , x ′ ) = q ( x ′ ) q(x,x^{'})=q(x^{'}) q(x,x)=q(x)。建議分佈的計算按照 q ( x ′ ) q(x^{'}) q(x)獨立抽樣進行。此時,接受分佈可以寫成:

α ( x , x ′ ) = m i n { 1 , w ( x ′ ) w ( x ) } \alpha (x,x^{'})=min \left \{1,\frac{w(x^{'})}{w(x)}\right \} α(x,x)=min{1,w(x)w(x)}

其中 w ( x ′ ) = p ( x ′ ) q ( x ′ ) , w ( x ) = p ( x ) q ( x ) w(x^{'})=\frac{p(x^{'})}{q(x^{'})},w(x)=\frac{p(x)}{q(x)} w(x)=q(x)p(x),w(x)=q(x)p(x)

獨立抽樣實現簡單,但可能收斂速度慢,通常選擇接近目標狀態分佈 p ( x ) p(x) p(x)的分佈作為建議分佈 q ( x ) q(x) q(x)

4. 滿條件分佈

MCMC的目標分佈通常是多元聯合概率分佈 p ( x ) = p ( x 1 , x 2 , ⋯   , x k ) p(x)=p(x_{1},x_{2},\cdots ,x_{k}) p(x)=p(x1,x2,,xk),其中 x = ( x 1 , x 2 , ⋯   , x k ) T x=(x_{1},x_{2},\cdots ,x_{k})^T x=(x1,x2,,xk)T k k k維隨機變數。如果條件概率分佈 p ( x I ∣ x − I ) p(x_{I}|x_{-I}) p(xIxI)中所有 k k k個變數全部出現,其中 x I = { x i , i ∈ I } , x − I = { x i , i ∉ I } , I ⊂ K = { 1 , 2 , ⋯   , k } x_{I}=\left \{x_{i},i\in I\right \},x_{-I}=\left \{x_{i},i\notin I\right \},I\subset K=\left \{1,2,\cdots ,k\right \} xI={xi,iI},xI={xi,i/I},IK={1,2,,k},那麼稱這種條件概率分佈為滿條件分佈(full conditional distribution)

滿條件分佈有以下性質:對任意的 x , x ′ ∈ X x,x^{'}\in \mathcal{X} x,xX和任意的 I ⊂ K I\subset K IK有:

p ( x I ∣ x − I ) = p ( x ) ∫ p ( x ) d x I ∝ p ( x ) p(x_{I}|x_{-I})=\frac{p(x)}{\int p(x)\mathrm{d}x_{I}}\propto p(x) p(xIxI)=p(x)dxIp(x)p(x)

而且,對任意的 x , x ′ ∈ X x,x^{'}\in \mathcal{X} x,xX和任意的 I ⊂ K I\subset K IK有:

p ( x I ′ ∣ x − I ′ ) p ( x I ∣ x − I ) = p ( x ′ ) p ( x ) \frac{p(x_{I}^{'}|x_{-I}^{'})}{p(x_{I}|x_{-I})}=\frac{p(x^{'})}{p(x)} p(xIxI)p(xIxI)=p(x)p(x)

MH演算法中可以利用上述性質,簡化運算,提高效率。具體地,通過滿條件分佈概率的比 p ( x I ′ ∣ x − I ′ ) p ( x I ∣ x − I ) \frac{p(x_{I}^{'}|x_{-I}^{'})}{p(x_{I}|x_{-I})} p(xIxI)p(xIxI)計算聯合概率的比 p ( x ′ ) p ( x ) \frac{p(x^{'})}{p(x)} p(x)p(x),而前者更容易計算。

5. 基本步驟

①任意選擇一個初始值 x 0 x_0 x0
②對 i = 1 , 2 , ⋯   , n i=1,2,\cdots ,n i=1,2,,n迴圈執行:
  (a)設狀態 x i − 1 = x x_{i-1}=x xi1=x,按照建議分佈 q ( x , x ′ ) q(x,x^{'}) q(x,x)隨機抽取一個候選狀態 x ′ x^{'} x
  (b)計算接收概率:

α ( x , x ′ ) = m i n { 1 , p ( x ′ ) q ( x ′ , x ) p ( x ) q ( x , x ′ ) } \alpha (x,x^{'})=min \left \{1,\frac{p(x^{'})q(x^{'},x)}{p(x)q(x,x^{'})}\right \} α(x,x)=min{1,p(x)q(x,x)p(x)q(x,x)}

  ©從區間 ( 0 , 1 ) (0,1) (0,1)中按均勻分佈隨機抽取一個數 u u u。若 u ≤ α ( x , x ′ ) u\leq \alpha (x,x^{'}) uα(x,x),則狀態 x i = x ′ x_i=x^{'} xi=x,否則,狀態 x i = x x_i=x xi=x

③得到樣本集合 { x m + 1 , x m + 2 , ⋯   , x n } \left \{x_{m+1},x_{m+2},\cdots ,x_{n}\right \} {xm+1,xm+2,,xn},計算函式樣本均值 f m n f_{mn} fmn

f m n = 1 n − m ∑ i = m + 1 n f ( x i ) f_{mn}=\frac{1}{n-m} \sum_{i=m+1}^{n} f(x_{i}) fmn=nm1i=m+1nf(xi)

6. 單分量MH演算法

在MH演算法中,通常需要對多元變數分佈進行抽樣,有時對多元變數的抽樣是困難的。可以對多元變數的每一變數的條件分佈依次分別進行抽樣,從而實現對整個多元變數的一次抽樣,這就是單分量MH(single-component Metropolis-Hastings)演算法。

假設馬爾可夫鏈的狀態有 k k k維隨機變數表示:

x = ( x 1 , x 2 , ⋯   , x k ) T x=(x_{1},x_{2},\cdots ,x_{k})^{T} x=(x1,x2,,xk)T

為了生成容量為 n n n的樣本集合 { x ( 1 ) , x ( 2 ) , ⋯   , x ( n ) } \left \{x^{(1)},x^{(2)},\cdots ,x^{(n)}\right \} {x(1),x(2),,x(n)},單分量MH演算法由下面的 k k k步迭代實現MH演算法的一次迭代。

設在第 i − 1 i-1 i1次迭代結束時分量 x j x_j xj的取值為 x j ( i − 1 ) x_{j}^{(i-1)} xj(i1),在第 i i i次迭代的第 j j j步,對分量 x j x_j xj根據MH演算法更新,得到其新的取值 x j ( i ) x_{j}^{(i)} xj(i)。首先,由建議分佈 q ( x j ( i − 1 ) , x j ∣ x − j ( i ) ) q(x_{j}^{(i-1)},x_{j}|x_{-j}^{(i)}) q(xj(i1),xjxj(i))抽樣產生分量 x j x_j xj的候選值 x j ′ ( i ) x_{j}^{'(i)} xj(i),這裡 x − j ( i ) x_{-j}^{(i)} xj(i)表示在第 i i i次迭代的第 j − 1 j-1 j1步後的 x i x^{i} xi除去 x j i − 1 x_{j}^{i-1} xji1的所有值,即:

x − j ( i ) = ( x 1 ( i ) , ⋯   , x j − 1 ( i ) , x j + 1 ( i − 1 ) , ⋯   , x k ( i − 1 ) ) T x_{-j}^{(i)}=(x_{1}^{{\color{Red}{(i)}}},\cdots ,x_{j-1}^{{\color{Red}{(i)}}},x_{j+1}^{(i-1)},\cdots ,x_{k}^{(i-1)})^{T} xj(i)=(x1(i),,xj1(i),xj+1(i1),,xk(i1))T

其中分量 1 , 2 , ⋯   , j − 1 1,2,\cdots ,j-1 1,2,,j1已經更新。然後,按照接受概率:

α ( x j ( i − 1 ) , x j ′ ( i ) ∣ x − j ( i ) ) = m i n { 1 , p ( x j ′ ( i ) ∣ x − j ( i ) ) q ( x j ′ ( i ) , x j ( i − 1 ) ∣ x − j ( i ) ) p ( x j ( i − 1 ) ∣ x − j ( i ) ) q ( x j ( i − 1 ) , x j ′ ( i ) ∣ x − j ( i ) ) } \alpha (x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})=min\left \{1,\frac{p(x_{j}^{'(i)}|x_{-j}^{(i)})q(x_{j}^{'(i)},x_{j}^{(i-1)}|x_{-j}^{(i)})}{p(x_{j}^{(i-1)}|x_{-j}^{(i)})q(x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})}\right \} α(xj(i1),xj(i)xj(i))=min{1,p(xj(i1)xj(i))q(xj(i1),xj(i)xj(i))p(xj(i)xj(i))q(xj(i),xj(i1)xj(i))}

抽樣決定是否接受候選值 x j ′ ( i ) x_{j}^{'(i)} xj(i)。如果 x j ′ ( i ) x_{j}^{'(i)} xj(i)被接受,則令 x j ( i ) = x j ′ ( i ) x_{j}^{(i)}=x_{j}^{'(i)} xj(i)=xj(i);否則 x j ( i ) = x j ( i − 1 ) x_{j}^{(i)}=x_{j}^{(i-1)} xj(i)=xj(i1)。其餘分量在第 j j j步不改變。馬爾可夫鏈的轉移概率為:

p ( x j ( i − 1 ) , x j ′ ( i ) ∣ x − j ( i ) ) = α ( x j ( i − 1 ) , x j ′ ( i ) ∣ x − j ( i ) ) q ( x j ( i − 1 ) , x j ′ ( i ) ∣ x − j ( i ) ) p(x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})=\alpha (x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)})q(x_{j}^{(i-1)},x_{j}^{'(i)}|x_{-j}^{(i)}) p(xj(i1),xj(i)xj(i))=α(xj(i1),xj(i)xj(i))q(xj(i1),xj(i)xj(i))

三、吉布斯抽樣

吉布斯抽樣可以認為是MH演算法的特殊情況,但是更容易實現,因此被廣泛使用。

1. 基本原理

吉布斯抽樣(Gabbs sampling) 用於多元變數聯合分佈的抽樣和估計。其基本做法是,從聯合概率分佈定義滿條件概率分佈,依次對滿條件概率分佈進行抽樣,得到樣本的序列。可以證明這樣的抽樣過程是在一個馬爾可夫鏈上的隨機遊走,每一個樣本對應著馬爾可夫鏈的狀態,平穩分佈就是目標的聯合分佈。整體成為一個MCMC,燃燒期之後的樣本就是聯合分佈的隨機樣本。

假設多元變數的聯合概率分佈為 p ( x ) = p ( x 1 , x 2 , ⋯   , x k ) p(x)=p(x_{1},x_{2},\cdots ,x_{k}) p(x)=p(x1,x2,,xk)。吉布斯抽樣從一個初始樣本 x ( 0 ) = ( x 1 ( 0 ) , x 2 ( 0 ) , ⋯   , x k ( 0 ) ) T x^{(0)}=(x_{1}^{(0)},x_{2}^{(0)},\cdots ,x_{k}^{(0)})^{T} x(0)=(x1(0),x2(0),,xk(0))T出發,不斷進行迭代,每一次迭代得到聯合概率分佈的一個樣本 x ( i ) = ( x 1 ( i ) , x 2 ( i ) , ⋯   , x k ( i ) ) T x^{(i)}=(x_{1}^{(i)},x_{2}^{(i)},\cdots ,x_{k}^{(i)})^{T} x(i)=(x1(i),x2(i),,xk(i))T。最終得到樣本序列 { x ( 0 ) , x ( 1 ) , ⋯   , x ( n ) } \left \{x^{(0)},x^{(1)},\cdots ,x^{(n)}\right \} {x(0),x(1),,x(n)}

在每次迭代中,依次對 k k k個隨機變數中的一個變數進行隨機抽樣。如果在第 i i i次迭代中,對第 j j j個變數進行隨機抽樣,那麼抽樣的分佈就是滿條件概率分佈 p ( x j , x − j ( i ) ) p(x_{j},x_{-j}^{(i)}) p(xj,xj(i))

設在第 i − 1 i-1 i1步得到樣本 ( x 1 ( i − 1 ) , x 2 ( i − 1 ) , ⋯   , x k ( i − 1 ) ) T (x_{1}^{(i-1)},x_{2}^{(i-1)},\cdots ,x_{k}^{(i-1)})^{T} (x1(i1),x2(i1),,xk(i1))T,在第 i i i步,首先對第一個變數按照以下滿條件概率分佈隨機抽樣:

p ( x 1 ∣ x 2 ( i − 1 ) , ⋯   , x k ( i − 1 ) ) p(x_{1}|x_{2}^{(i-1)},\cdots ,x_{k}^{(i-1)}) p(x1x2(i1),,xk(i1))

得到 x 1 ( i ) x_{1}^{(i)} x1(i),之後依次對第 j j j個變數按照以下滿條件概率分佈隨機抽樣:

p ( x j ∣ x 1 ( i ) , ⋯   , x j − 1 ( i ) , x j + 1 ( i − 1 ) , ⋯   , x k ( i − 1 ) ) ,      j = 2 , ⋯   , k − 1 p(x_{j}|x_{1}^{{\color{Red}{(i)}}},\cdots ,x_{j-1}^{{\color{Red}{(i)}}},x_{j+1}^{(i-1)},\cdots ,x_{k}^{(i-1)}),\; \; j=2,\cdots ,k-1 p(xjx1(i),,xj1(i),xj+1(i1),,xk(i1)),j=2,,k1

得到 x j ( i ) x_{j}^{(i)} xj(i),最後對第 k k k個變數按照以下滿條件概率分佈隨機抽樣:

p ( x k ∣ x 1 ( i ) , ⋯   , x k − 1 ( i ) ) p(x_{k}|x_{1}^{(i)},\cdots ,x_{k-1}^{(i)}) p(xkx1(i),,xk1(i))

得到 x k ( i ) x_{k}^{(i)} xk(i),於是得到樣本 x ( i ) = ( x 1 ( i ) , x 2 ( i ) , ⋯   , x k ( i ) ) T x^{(i)}=(x_{1}^{(i)},x_{2}^{(i)},\cdots ,x_{k}^{(i)})^{T} x(i)=(x1(i),x2(i),,xk(i))T

2. 吉布斯抽樣與單分量MH演算法的關係

吉布斯抽樣是單分量MH演算法的特殊情況。定義建議分佈是當前變數 x j x_j xj j = 1 , 2 , ⋯   , k j=1,2,\cdots ,k j=1,2,,k的滿條件概率分佈:

q ( x , x ′ ) = p ( x j ′ ∣ x − j ) q(x,x^{'})=p(x_{j}^{'}|x_{-j}) q(x,x)=p(xjxj)

這時,接受概率 α = 1 \alpha = 1 α=1

α ( x , x ′ ) = m i n { 1 , p ( x ′ ) q ( x ′ , x ) p ( x ) q ( x , x ′ ) } = m i n { 1 , p ( x − j ′ ) p ( x j ′ ∣ x − j ′ ) p ( x j ∣ x − j ′ ) p ( x − j ) p ( x j ∣ x − j ) p ( x j ′ ∣ x − j ) } = 1 \alpha (x,x^{'})=min \left \{1,\frac{p(x^{'})q(x^{'},x)}{p(x)q(x,x^{'})}\right \}\\ =min \left \{1,\frac{{\color{Orange}{p(x_{-j}^{'})}}{\color{Blue}{p(x_{j}^{'}|x_{-j}^{'})}}{\color{Orchid}{p(x_{j}|x_{-j}^{'})}}}{{\color{Orange}{p(x_{-j})}}{\color{Orchid}{p(x_{j}|x_{-j})}}{\color{Blue}{p(x_{j}^{'}|x_{-j})}}}\right \}\\ =1 α(x,x)=min{1,p(x)q(x,x)p(x)q(x,x)}=min{1,p(xj)p(xjxj)p(xjxj)p(xj)p(xjxj)p(xjxj)}=1

這裡用到了 p ( x − j ) = p ( x − j ′ ) p(x_{-j})=p(x_{-j}^{'}) p(xj)=p(xj) p ( ⋅ ∣ x − j ) = p ( ⋅ ∣ x − j ′ ) p(\cdot |x_{-j})=p(\cdot |x_{-j}^{'}) p(xj)=p(xj)

轉移核就是滿條件概率分佈:

p ( x , x ′ ) = p ( x j ′ ∣ x − j ) p(x,x^{'})=p(x_{j}^{'}|x_{-j}) p(x,x)=p(xjxj)

也就是說按照單分量的滿條件概率分佈 p ( x j ′ ∣ x − j ) p(x_{j}^{'}|x_{-j}) p(xjxj)進行隨機抽樣,就能實現單分量MH演算法。吉布斯抽樣對每次抽樣的結果都接受,沒有拒絕,這一點和一般的MH演算法不同。

這裡,假設滿條件概率分佈 p ( x j ′ ∣ x − j ) p(x_{j}^{'}|x_{-j}) p(xjxj)不為 0 0 0,即馬爾可夫鏈是不可約的。

3. 基本步驟

①初始化。給出初始樣本 x ( 0 ) = ( x 1 ( 0 ) , x 2 ( 0 ) , ⋯   , x k ( 0 ) ) T x^{(0)}=(x_{1}^{(0)},x_{2}^{(0)},\cdots ,x_{k}^{(0)})^{T} x(0)=(x1(0),x2(0),,xk(0))T
②對 i = 1 , 2 , ⋯   , n i=1,2,\cdots ,n i=1,2,,n迴圈執行:
  (1)由滿條件分佈 p ( x 1 ∣ x 2 ( i − 1 ) , ⋯   , x k ( i − 1 ) ) p(x_{1}|x_{2}^{(i-1)},\cdots ,x_{k}^{(i-1)}) p(x1x2(i1),,xk(i1))抽取 x 1 ( i ) x_{1}^{(i)} x1(i)
    ⋮ \vdots
  (j)由滿條件分佈 p ( x j ∣ x 1 ( i ) , ⋯   , x j − 1 ( i ) , x j + 1 ( i − 1 ) , ⋯   , x k ( i − 1 ) ) p(x_{j}|x_{1}^{{\color{Red}{(i)}}},\cdots ,x_{j-1}^{{\color{Red}{(i)}}},x_{j+1}^{(i-1)},\cdots ,x_{k}^{(i-1)}) p(xjx1(i),,xj1(i),xj+1(i1),,xk(i1))抽取 x j ( i ) x_{j}^{(i)} xj(i)
    ⋮ \vdots
  (k)由滿條件分佈 p ( x k ∣ x 1 ( i ) , ⋯   , x k − 1 ( i ) ) p(x_{k}|x_{1}^{(i)},\cdots ,x_{k-1}^{(i)}) p(xkx1(i),,xk1(i))抽取 x k ( i ) x_{k}^{(i)} xk(i)
得到第 i i i次迭代值 x ( i ) = ( x 1 ( i ) , x 2 ( i ) , ⋯   , x k ( i ) ) T x^{(i)}=(x_{1}^{(i)},x_{2}^{(i)},\cdots ,x_{k}^{(i)})^{T} x(i)=(x1(i),x2(i),,xk(i))T
③得到樣本集合 { x ( m + 1 ) , x ( m + 2 ) , ⋯   , x ( n ) } \left \{x^{(m+1)},x^{(m+2)},\cdots ,x^{(n)}\right \} {x(m+1),x(m+2),,x(n)},計算函式樣本均值 f m n f_{mn} fmn

f m n = 1 n − m ∑ i = m + 1 n f ( x ( i ) ) f_{mn}=\frac{1}{n-m} \sum_{i=m+1}^{n} f(x^{(i)}) fmn=nm1i=m+1nf(x(i))

4. 對比單分量MH演算法

單分量MH演算法與吉布斯抽樣的不同之處在於,在前者演算法中,抽樣會在樣本點之間移動,但其間可能在某一些樣本點上停留(由於取樣被拒絕);而在後者演算法中,抽樣點會在樣本點之間持續移動。

吉布斯抽樣適合於滿條件概率分佈容易抽樣的情況,而單分量MH演算法適合於滿條件概率分佈不容易抽樣的情況,這是使用容易抽樣的條件分佈作建議分佈。

參考資料

ref:李航《統計學習方法》

相關文章