MCMC-2|机器学习推导系列(十六)

第一篇在这里:MCMC-1|机器学习推导系列(十五)

一、概述

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 mm<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:李航《统计学习方法》

你可能感兴趣的:(机器学习推导系列,算法,机器学习,人工智能,数据挖掘)