Metropolis-Hastings 算法

19.4 Metropolis-Hastings 算法

本节叙述 Metropolis-Hastings 算法。该算法是马尔可夫链蒙特卡罗法的代表算法。


19.4.1 基本原理

1. 马尔可夫链

假设要抽样的概率分布为 p ( x ) p(x) p(x)。Metropolis-Hastings 算法采用转移核为 p ( x , x ′ ) p(x, x') p(x,x) 的马尔可夫链:
p ( x , x ′ ) = q ( x , x ′ ) α ( x , x ′ ) (19.38) p(x, x') = q(x, x') \alpha(x, x') \tag{19.38} p(x,x)=q(x,x)α(x,x)(19.38)

其中, q ( x , x ′ ) q(x, x') q(x,x) α ( x , x ′ ) \alpha(x, x') α(x,x) 分别称为建议分布(proposal distribution)和接受分布(acceptance distribution)。

建议分布 q ( x , x ′ ) q(x, x') q(x,x) 是另一个马尔可夫链的转移核,并且 q ( x , x ′ ) q(x, x') q(x,x) 是不可约的,即其概率值恒不为 0,同时是一个容易抽样的分布。接受分布 α ( x , x ′ ) \alpha(x, x') α(x,x) 是:
α ( x , x ′ ) = min ⁡ { 1 , p ( x ′ ) q ( x ′ , x ) p ( x ) q ( x , x ′ ) } (19.39) \alpha(x, x') = \min \left\{ 1, \frac{p(x')q(x', x)}{p(x)q(x, x')} \right\} \tag{19.39} α(x,x)=min{1,p(x)q(x,x)p(x)q(x,x)}(19.39)

这样,转移核 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 ′ ) (19.40) p(x, x') = \begin{cases} 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{cases} \tag{19.40} p(x,x)={q(x,x),q(x,x)p(x)p(x),p(x)q(x,x)p(x)q(x,x)p(x)q(x,x)<p(x)q(x,x)(19.40)

转移核为 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 = \begin{cases} x', & u \leq \alpha(x, x') \\ x, & u > \alpha(x, x') \end{cases} xt={x,x,uα(x,x)u>α(x,x)

可以证明,转移核为 p ( x , x ′ ) p(x, x') p(x,x) 的马尔可夫链是可逆马尔可夫链(满足遍历定理),其平稳分布就是 p ( x ) p(x) p(x),即要抽样的目标分布。也就是说这是马尔可夫链蒙特卡罗法的一个具体实现。

定理 19.6 由转移核 (19.38) ~ (19.40) 构成的马尔可夫链是可逆的,即:
p ( x ) p ( x , x ′ ) = p ( x ′ ) p ( x ′ , x ) (19.41) p(x)p(x, x') = p(x')p(x', x) \tag{19.41} p(x)p(x,x)=p(x)p(x,x)(19.41)

并且 p ( x ) p(x) p(x) 是该马尔可夫链的平稳分布。

证明 x = x ′ x = x' x=x,则式 (19.41) 显然成立。

x ≠ x ′ x \neq x' 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 ′ ) q ( x ′ , x ) \begin{aligned} 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\} \notag \\ &= \min \{p(x)q(x, x'), p(x')q(x', x)\} \notag \\ &= p(x')q(x', x) \min \left\{ \frac{p(x)q(x, x')}{p(x')q(x', x)}, 1 \right\} \notag \\ &= p(x')q(x', x) \end{aligned} 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)q(x,x)
式 (19.41) 成立。

由式 (19.41) 知:
∫ p ( x ) p ( x , x ′ )   d x = ∫ p ( x ′ ) p ( x ′ , x )   d x = p ( x ′ ) ∫ p ( x ′ , x )   d x = p ( x ′ ) \begin{aligned} \int p(x)p(x, x') \, dx &= \int p(x')p(x', x) \, dx \\ &= p(x') \int p(x', x) \, dx \\ &= p(x') \end{aligned} p(x)p(x,x)dx=p(x)p(x,x)dx=p(x)p(x,x)dx=p(x)

根据平稳分布的定义(式 (19.21)), p ( x ) p(x) p(x) 是马尔可夫链的平稳分布。

2. 建议分布

建议分布 q ( x , x ′ ) q(x, x') q(x,x) 有多种可能的形式,这里介绍两种常用形式。

第一种形式:假设建议分布是对称的,即对任意的 x x x x ′ x' x 有:
q ( x , x ′ ) = q ( x ′ , x ) (19.42) q(x, x') = q(x', x) \tag{19.42} q(x,x)=q(x,x)(19.42)

这样的建议分布称为 Metropolis 选择,也是 Metropolis-Hastings 算法最初采用的建议分布。
此时,接受分布 α ( x , x ′ ) \alpha(x, x') α(x,x) 简化为:
α ( x , x ′ ) = min ⁡ { 1 , p ( x ′ ) p ( x ) } (19.43) \alpha(x, x') = \min \left\{1, \frac{p(x')}{p(x)} \right\} \tag{19.43} α(x,x)=min{1,p(x)p(x)}(19.43)

Metropolis 选择的一个特例是 q ( x , x ′ ) q(x, x') q(x,x) 取条件概率分布 p ( x ′ ∣ x ) p(x'|x) p(xx),定义为多元正态分布,其均值是 x x x,协方差矩阵是常数矩阵。

Metropolis 选择的另一个特例是令 q ( x , x ′ ) = q ( ∣ x − x ′ ∣ ) q(x, x') = q(|x - x'|) q(x,x)=q(xx),这时算法称为随机游走 Metropolis 算法。例如:
q ( x , x ′ ) ∝ exp ⁡ [ − ( 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 ′ ) q(x, x') = q(x') q(x,x)=q(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 ′ ) \alpha(x, x') α(x,x) 可以写成:
α ( x , x ′ ) = min ⁡ { 1 , w ( x ′ ) w ( x ) } , (19.44) \alpha(x, x') = \min \left\{ 1, \frac{w(x')}{w(x)} \right\}, \tag{19.44} α(x,x)=min{1,w(x)w(x)},(19.44)

其中: w ( x ′ ) = p ( x ′ ) / q ( x ′ ) , w ( x ) = p ( x ) / q ( x ) . w(x') = p(x') / q(x'), \quad w(x) = p(x) / q(x). w(x)=p(x)/q(x),w(x)=p(x)/q(x).

独立抽样实现简单,但可能收敛速度慢,通常选择接近目标分布 p ( x ) p(x) p(x) 的分布作为建议分布 q ( x ) q(x) q(x)

3. 满条件分布

马尔可夫链蒙特卡罗法的目标分布通常是多元联合概率分布 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} = \{x_i, i \in I\}, x_{-I} = \{x_i, i \notin I\}, I \subseteq K = \{1, 2, \cdots, k\} xI={xi,iI},xI={xi,i/I},IK={1,2,,k},那么称这种条件概率分布为满条件分布(full conditional distribution)。

满条件分布有以下性质:对任意的 x ∈ X x \in X xX 和任意的 I ⊆ K I \subseteq K IK,有:
p ( x I ∣ x − I ) = p ( x ) ∫ p ( x ) d x I ∝ p ( x ) (19.45) p(x_I | x_{-I}) = \frac{p(x)}{\int p(x) dx_I} \propto p(x) \tag{19.45} p(xIxI)=p(x)dxIp(x)p(x)(19.45)

而且,对任意的 x , x ′ ∈ X x, x' \in X x,xX 和任意的 I ⊆ K I \subseteq K IK,有:

p ( x I ′ ∣ x − I ′ ) p ( x I ∣ x − I ) = p ( x ′ ) p ( x ) (19.46) \frac{p(x_I' | x'_{-I})}{p(x_I | x_{-I})} = \frac{p(x')}{p(x)} \tag{19.46} p(xIxI)p(xIxI)=p(x)p(x)(19.46)

Metropolis-Hastings 算法中,可以利用性质 (19.46) 简化计算,提高计算效率。具体地,通过满条件分布概率的比 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) 而前者更容易计算。

例 19.9 x 1 x_1 x1 x 2 x_2 x2 的联合概率分布的密度函数为:

p ( x 1 , x 2 ) ∝ exp ⁡ [ − 1 2 ( x 1 − 1 ) 2 ( x 2 − 1 ) 2 ] p(x_1, x_2) \propto \exp \left[ -\frac{1}{2} (x_1 - 1)^2 (x_2 - 1)^2 \right] p(x1,x2)exp[21(x11)2(x21)2]

求其满条件分布。

由满条件分布的定义有:
p ( x 1 ∣ x 2 ) ∝ p ( x 1 , x 2 ) ∝ exp ⁡ [ − 1 2 ( x 1 − 1 ) 2 ( x 2 − 1 ) 2 ] ∝ N ( 1 , ( x 2 − 1 ) − 2 ) \begin{aligned} p(x_1 \mid x_2) &\propto p(x_1, x_2) \\ &\propto \exp \left[ -\frac{1}{2} (x_1 - 1)^2 (x_2 - 1)^2 \right] \\ &\propto N\left(1, (x_2 - 1)^{-2}\right) \end{aligned} p(x1x2)p(x1,x2)exp[21(x11)2(x21)2]N(1,(x21)2)

这里 N ( 1 , ( x 2 − 1 ) − 2 ) N(1, (x_2 - 1)^{-2}) N(1,(x21)2) 是均值为 1,方差为 ( x 2 − 1 ) − 2 (x_2 - 1)^{-2} (x21)2 的正态分布。这时 x 1 x_1 x1 是变量, x 2 x_2 x2 是参数。同样可得:
p ( x 2 ∣ x 1 ) ∝ p ( x 1 , x 2 ) ∝ exp ⁡ [ − 1 2 ( x 2 − 1 ) 2 ( x 1 − 1 ) 2 ] ∝ N ( 1 , ( x 1 − 1 ) − 2 ) \begin{aligned} p(x_2 \mid x_1) &\propto p(x_1, x_2) \\ &\propto \exp \left[ -\frac{1}{2} (x_2 - 1)^2 (x_1 - 1)^2 \right] \\ &\propto N\left(1, (x_1 - 1)^{-2}\right) \end{aligned} p(x2x1)p(x1,x2)exp[21(x21)2(x11)2]N(1,(x11)2)

19.4.2 Metropolis-Hastings 算法

算法 19.2 (Metropolis-Hastings 算法)
输入:抽样的目标分布的密度函数 p ( x ) p(x) p(x),函数 f ( x ) f(x) f(x)
输出: p ( x ) p(x) p(x) 的随机样本 x m + 1 , x m + 2 , ⋯   , x n x_{m+1}, x_{m+2}, \cdots, x_n xm+1,xm+2,,xn,函数样本均值 f m n f_{mn} fmn
参数:收敛步数 m m m,迭代步数 n n n

  1. 任意选择一个初始值 x 0 x_0 x0

  2. 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 ′ ) = min ⁡ { 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)}

    (c) 从区间 ( 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

  3. 得到样本集合 { x m + 1 , x m + 2 , ⋯   , x n } \{x_{m+1}, x_{m+2}, \cdots, x_n\} {xm+1,xm+2,,xn},计算
    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)

19.4.3 单分量 Metropolis-Hastings 算法

在 Metropolis-Hastings 算法中,通常需要对多元变量分布进行抽样。有时对多元变量分布的抽样是困难的,可以对多元变量的每一变量的条件分布依次分别进行抽样,从而实现对整个多元变量的一次抽样,这就是单分量 Metropolis-Hastings(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

其中, x j x_j xj 表示随机变量 x x x 的第 j j j 个分量, j = 1 , 2 , ⋯   , k j = 1, 2, \cdots, k j=1,2,,k,而 x ( i ) x^{(i)} x(i) 表示马尔可夫链在时刻 i i i 的状态:
x ( i ) = ( x 1 ( i ) , x 2 ( i ) , ⋯   , x k ( i ) ) T , i = 1 , 2 , ⋯   , n x^{(i)} = (x_1^{(i)}, x_2^{(i)}, \cdots, x_k^{(i)})^T, \quad i = 1, 2, \cdots,n x(i)=(x1(i),x2(i),,xk(i))T,i=1,2,,n

其中, x j ( i ) x_j^{(i)} xj(i) 是随机变量 x ( i ) x^{(i)} x(i) 的第 j j j 个分量, j = 1 , 2 , ⋯   , k j = 1, 2, \cdots, k j=1,2,,k

为了生成容量为 n n n 的样本集合 { x ( 1 ) , x ( 2 ) , ⋯   , x ( n ) } \{x^{(1)}, x^{(2)}, \cdots, x^{(n)}\} {x(1),x(2),,x(n)},单分量 Metropolis-Hastings 算法由下面的 k k k 步迭代来实现 Metropolis-Hastings 算法的一次迭代。

设在第 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 根据 Metropolis-Hastings 算法更新,得到其新的取值 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)} x(i) 除去 x j ( i − 1 ) x_{j}^{(i-1)} xj(i1) 的所有值,即:
x j ( i − 1 ) = ( x 1 ( i ) , ⋯   , x j − 1 ( i ) , x j + 1 ( i − 1 ) , ⋯   , x k ( i − 1 ) ) T x_j^{(i-1)} = (x_1^{(i)}, \cdots, x_{j-1}^{(i)}, x_{j+1}^{(i-1)}, \cdots, x_k^{(i-1)})^T xj(i1)=(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 ) ) = min ⁡ { 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 ) ) } (19.47) \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\} \tag{19.47} α(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))}(19.47)

抽样决定是否接受候选值 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 ) ) (19.48) p \left( x_j^{(i-1)}, x_j'^{(i)} \middle| x_{-j}^{(i)} \right) = \alpha \left( x_j^{(i-1)}, x_j'^{(i)} \middle| x_{-j}^{(i)} \right) q \left( x_j^{(i-1)}, x_j'^{(i)} \middle| x_{-j}^{(i)} \right) \tag{19.48} p(xj(i1),xj(i) xj(i))=α(xj(i1),xj(i) xj(i))q(xj(i1),xj(i) xj(i))(19.48)

图 19.10 示意了单分量 Metropolis-Hastings 算法的迭代过程。目标是对含有两个变量的随机变量 x x x 进行抽样。如果变量 x 1 x_1 x1 x 2 x_2 x2 更新,那么在水平方向或垂直方向产生一个移动,连续水平移动和垂直移动产生一个新的样本点。注意由于建议分布可能不被接受,Metropolis-Hastings 算法可能在一些相邻的时刻不产生移动。
在这里插入图片描述


基本原理 1.马尔可夫链 理解
19.39当前状态x转移到候选状态x′的接受概率 公式解析
定理19.6 证明马尔可夫链可逆 公式解析
定理19.6 证明p(x)是马尔可夫链可逆的平稳分布 公式解析
基本原理 2.建议分布 理解
基本原理 3.满条件分布 理解
单分量Metropolis-Hastings算法 理解

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值