一、概述
1.概述
马尔可夫链蒙特卡罗法 (MCMC) 是一种强大的工具,它在处理多元 、非标准形式 的概率密度函数,以及随机变量各分量不独立 的情况时,比拒绝采样法和重要性采样法更具优势。它可以用于从一个概率分布中进行随机抽样,或者计算函数关于该概率分布的数学期望。
假设我们有一个多元随机变量 x x x ,它满足 x ∈ X x \in \mathbb{X} x ∈ X ,并且其概率密度函数为 p ( x ) p(x) p ( x ) 。我们有一个定义在 x ∈ X x \in \mathbb{X} x ∈ X 的函数 f ( x ) f(x) f ( x ) ,我们的目标是获取概率分布 p ( x ) p(x) p ( x ) 的样本集合,以及计算函数 f ( x ) f(x) f ( x ) 的数学期望 E p ( x ) [ f ( x ) ] E_{p(x)}[f(x)] E p ( x ) [ f ( x )] 。
MCMC方法可以用来解决这个问题。其基本思想是在随机变量 x x x 的状态空间 S S S 上定义一个满足遍历定理 的马尔可夫链 X X X ,使其平稳分布就是我们要抽样的目标分布 p ( x ) p(x) p ( x ) 。然后我们在这个马尔可夫链上进行随机游走,每个时刻都会得到一个样本。根据遍历定理,当时间趋于无穷时,样本的分布会趋于平稳分布,样本的函数均值也会趋近函数的数学期望。
因此,当时间足够长时(即时刻大于某个正整数 m m m ),在之后的时间(时间小于等于某个正整数 n , n > m n , n>m n , n > m )里随机游走得到的样本集合 { 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 } 就可以视为目标概率分布的抽样结果,得到的函数均值(遍历均值)就是我们要计算的数学期望值。
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\left(x_i\right) E ^ f = n − m 1 i = m + 1 ∑ n f ( x i )
到时刻 m m m 为止的时间段称为燃烧期 ,即,从初始状态达平稳分布的时间段。
2. 一些要关注的知识点
由于该马尔可夫链符合遍历定理,随机游走的起点对最终结果没有影响。也就是说,无论起始点在何处,都将会汇集于同一个平稳分布。
MCMC的收敛性判断常常是基于观察 的,例如,在马尔可夫链上执行随机游走,并检查遍历平均值是否收敛。具体的手段包括:
在MCMC中获取的样本序列,相邻的样本点是有关联的,并非独立的。因此,当需要独立样本时,可以在该样本序列中再进行随机抽样,例如,每隔一段时间取一次样本,然后将这样得到的子样本集合当作独立样本集合。
通常情况下,MCMC比拒绝采样更易于实施,因为只需要定义马尔可夫链,而无需定义建议分布。通常情况下,MCMC比拒绝采样更高效,因为没有大量被拒绝的样本,尽管“燃烧期”的成本也是需要舍弃的。
3. 马尔可夫链蒙特卡罗法的核心步骤
①首先,在随机变量x x x 的状态空间上设定一个满足遍历定义的马尔可夫链,使其平稳分布为目标分布p ( x ) p(x) p ( x ) ;
②从状态空间的某一点x 0 x_0 x 0 开始,利用设定的马尔可夫链执行随机游走,生成样本序列x 0 , x 1 , ⋯ , x t , ⋯ x_0,x_1,\cdots ,x_t,\cdots x 0 , x 1 , ⋯ , x t , ⋯ ;
③应用马尔可夫链的遍历定理,确定正整数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 \} { x m + 1 , x m + 2 , ⋯ , x n } ,然后计算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 = n − m 1 i = m + 1 ∑ n f ( x i )
这里有几个重要问题:
①如何定义马尔可夫链,保证MCMC的条件成立;
②如何确定收敛步数m m m ,保证样本抽样的无偏性;
③如何确定迭代步数n n n ,保证遍历均值计算的精度。
二、Metropilis-Hastings算法(MH算法)
由于满足Detail Balance的公式即为满足平稳分布(公式迭代为稳态),因此MH算法引入了接受率α ( z , z ∗ ) α(z, z^*) α ( z , z ∗ ) 的概念。我们提出了一个设想,当未满足Detail Balance等式时,此时状态转移矩阵为Q,正在进行迭代,此时引入接受率,使得等式两边的 Q * 接受率相等,达到最终的稳态。
p ( z ) ⋅ Q ( z ⟼ z ∗ ) ⋅ α ( z , z ∗ ) ⏟ p ( z ⟶ z ∗ ) = p ( z ∗ ) ⋅ Q ( z ∗ → z ) ⋅ α ( z ∗ , z ) ⏟ P ( z ∗ ⟼ z ) p ( z ) ⋅ p ( z ⟶ z ∗ ) = p ( z ∗ ) ⋅ P ( z ∗ ⟼ z ) 定义 : α ( z , z ∗ ) = min ( 1 , p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) p ( z ) ⋅ Q ( z ⟼ z ∗ ) ) \begin{aligned}
& p(z) \cdot \underbrace{Q\left(z \longmapsto z^*\right) \cdot α\left(z, z^*\right)}_{p\left(z \longrightarrow z^*\right)}=p\left(z^*\right) \cdot \underbrace{Q\left(z^* \rightarrow z\right) \cdot α\left(z^*, z\right)}_{ P\left(z^* \longmapsto z\right)}\\
& p(z) \cdot p\left(z \longrightarrow z^*\right)= p\left(z^*\right) \cdot P\left(z^* \longmapsto z\right)\\
& 定义:α\left(z, z^*\right)=\min \left(1, \frac{p\left(z^*\right) \cdot Q\left(z^* \mapsto z)\right.}{p(z) \cdot Q\left(z \longmapsto z^*)\right.}\right) \\
\end{aligned} p ( z ) ⋅ p ( z ⟶ z ∗ ) Q ( z ⟼ z ∗ ) ⋅ α ( z , z ∗ ) = p ( z ∗ ) ⋅ P ( z ∗ ⟼ z ) Q ( z ∗ → z ) ⋅ α ( z ∗ , z ) p ( z ) ⋅ p ( z ⟶ z ∗ ) = p ( z ∗ ) ⋅ P ( z ∗ ⟼ z ) 定义 : α ( z , z ∗ ) = min ( 1 , p ( z ) ⋅ Q ( z ⟼ z ∗ ) p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) )
有了接受率,我们可以对当前状态式子进行转化
p ( z ) ⋅ Q ( z ↦ z ∗ ) ⋅ α ( z , z ∗ ) = p ( z ) ⋅ Q ( z ↦ z ∗ ) ⋅ min ( 1 , p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ∗ ) p ( z ) ⋅ Q ( z ↦ z ∗ ) ) = min ( p ( z ) ⋅ Q ( z ↦ z ∗ ) , p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) ) = p ( z ∗ ) Q ( z ∗ ↦ z ) ⋅ min ( 1 , p ( z ) ⋅ Q ( z ↦ z ∗ ) p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) ⏟ ) = p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) ⋅ α ( z ∗ , z ) \begin{aligned}
& p(z) \cdot Q\left(z \mapsto z^*\right) \cdot α\left(z, z^*\right) \quad \\
& =p(z) \cdot Q\left(z \mapsto z^*\right) \cdot \min \left(1, \frac{p\left(z^*\right) \cdot Q\left(z^* \mapsto z^*\right)}{p(z) \cdot Q\left(z \mapsto z^*\right)}\right) \\
& =\min \left(p(z) \cdot Q\left(z \mapsto z^*\right), p\left(z^*\right) \cdot Q\left(z^* \mapsto z\right)\right) \\
& \begin{array}{l}
=p\left(z^*\right) Q\left(z^* \mapsto z\right) \cdot \underbrace{\min \left(1, \frac{p(z) \cdot Q\left(z \mapsto z^*\right)}{p\left(z^*\right) \cdot Q\left(z^*\mapsto z\right)}\right.}) \\
=p\left(z^*\right) \cdot Q\left(z^* \mapsto z\right) \cdot α\left(z^*, z\right)
\end{array} \\
&
\end{aligned} p ( z ) ⋅ Q ( z ↦ z ∗ ) ⋅ α ( z , z ∗ ) = p ( z ) ⋅ Q ( z ↦ z ∗ ) ⋅ min ( 1 , p ( z ) ⋅ Q ( z ↦ z ∗ ) p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ∗ ) ) = min ( p ( z ) ⋅ Q ( z ↦ z ∗ ) , p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) ) = p ( z ∗ ) Q ( z ∗ ↦ z ) ⋅ min ( 1 , p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) p ( z ) ⋅ Q ( z ↦ z ∗ ) ) = p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) ⋅ α ( z ∗ , z )
验证构造的接受率能等于原式,形成闭解
Metropolis-Houstings:
u ∼ U ( 0 , 1 ) u \sim U(0,1) u ∼ U ( 0 , 1 ) ,U为均匀分布的意思
z ∗ ∼ Q ( z ∣ z ( i − 1 ) ) z^* \sim Q\left(z \mid z^{(i-1)}\right) z ∗ ∼ Q ( z ∣ z ( i − 1 ) ) (Q可随便取随机矩阵)
α = min ( 1. p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) p ( z ) ⋅ Q ( z → z ∗ ) ) α=\min \left(1 . \frac{p\left(z^*\right) \cdot Q\left(z^* \mapsto z\right)}{p(z) \cdot Q\left(z \rightarrow z^*\right)}\right) α = min ( 1. p ( z ) ⋅ Q ( z → z ∗ ) p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) )
if u ⩽ α , z ( i ) = z ∗ u \leqslant α, z^{(i)}=z^* u ⩽ α , z ( i ) = z ∗
else z ( i ) = z ( i − 1 ) z^{(i)}=z^{(i-1)} z ( i ) = z ( i − 1 )
上述if-else的意思是,若随机采取的样本u小于α时,就将该z ∗ z^* z ∗ 就被接受,作为第i个样本,否则不接受该样本,使用上一样本重新刷新u到下一状态
假如随机执行迭代N次(生成n个u)可得到z ( 1 ) , z ( 2 ) , ⋯ , z ( N ) z^{(1)}, z^{(2)}, \cdots, z^{(N)} z ( 1 ) , z ( 2 ) , ⋯ , z ( N ) 个样本点,这样我们可以认为这些样本点来自于后验分布P ( Z ) P(Z) P ( Z ) ,这样的话可以把n个样本点带入,求得我们最终的目标
p ( z ) → E p ( z ) [ f ( z ) ] = ∫ z f ( z ) p ( z ) d z ≈ 1 N ∑ i = 1 N f ( z ( i ) ) \begin{aligned}
p(z) \rightarrow & E_{p(z)}[f(z)]=\int_z f(z) p(z) d z \\
& \approx \frac{1}{N} \sum_{i=1}^N f(z^{(i)})
\end{aligned} p ( z ) → E p ( z ) [ f ( z )] = ∫ z f ( z ) p ( z ) d z ≈ N 1 i = 1 ∑ N f ( z ( i ) )
关于p ( z ) p(z) p ( z ) 的补充:
p ( z ) = p ^ ( z ) z p p(z)=\frac{\hat{p}(z)}{z_p} p ( z ) = z p p ^ ( z ) ,其中z p z_p z p 为归一化因子,不需要求(α式子中上下抵消),而p ^ ( z ) \hat{p}(z) p ^ ( z ) 为估计,估计通常都能求,一般就是likelihood * prior即可,也就是我们并不是直接使用p ( z ) , p ( z ∗ ) p_{(z)},p_{(z^*)} p ( z ) , p ( z ∗ ) ,所以说,
真正的式子应为p ^ ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) p ^ ( z ) ⋅ Q ( z → z ∗ ) \frac{\hat{p}\left(z^*\right) \cdot Q\left(z^* \mapsto z\right)}{\hat{p}(z) \cdot Q\left(z \rightarrow z^*\right)} p ^ ( z ) ⋅ Q ( z → z ∗ ) p ^ ( z ∗ ) ⋅ Q ( z ∗ ↦ z )
即,样本点z ( i ) z^{(i)} z ( i ) ~ p ^ ( z ) \hat{p}(z) p ^ ( z ) ~ p ( z ) p_{(z)} p ( z )
三、吉布斯抽样
吉布斯抽样可以认为是MH算法的特殊情况,但是更容易实现,因此被广泛使用。
与坐标上升法类似,求一个参数时确定别的参数为定值。
Gibbs p ( z ) = p ( z , z 2 , ⋯ , z m ) \quad p(z)=p\left(z, z_2, \cdots, z_m\right) p ( z ) = p ( z , z 2 , ⋯ , z m )
z i ∼ p ( z i ∣ z − i ) ↪ z 1 , z 2 , ⋯ , z i − 1 , z i + 1 , ⋯ z M 设样本一共有三个 z_i \sim p\left(z_i \mid z_{-i}\right) \\
\hookrightarrow z_1, z_2, \cdots, z_{i-1}, z_{i+1}, \cdots z_M \\
设样本一共有三个\\ z i ∼ p ( z i ∣ z − i ) ↪ z 1 , z 2 , ⋯ , z i − 1 , z i + 1 , ⋯ z M 设样本一共有三个
p ( z ) = p ( z 1 , z 3 , z 3 ) i : z 1 ( 0 ) , z 2 ( 0 ) , z 3 ( 0 ) ii: t + 1 , z 1 ( t + 1 ) ∼ p ( z 1 ∣ z 2 ( t ) z 3 ( t ) ) z 2 ( t + 1 ) ∼ p ( z 2 ∣ z 1 ( t + 1 ) , z 3 ( t ) ) z 3 ( t + 1 ) ∼ p ( z 3 ∣ z 1 ( t + 1 ) , z 2 ( t + 1 ) ) 注意观察上述三个式子的规律,先得到 z 1 ( t + 1 ) ,就将其运用于 z 2 ( t + 1 ) . . . p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) p ( z ) ⋅ Q ( z ↦ z ∗ ) = p ( z i ∗ ∣ z − i ∗ ) ⋅ p ( z − i ∗ ) p ( z i ∣ z − i ∗ ) p ( z i ∣ z − i ) ⋅ p ( z − i ) ⋅ p ( z i ∗ ∣ z − i ) = 1 \begin{aligned}
& p(z)=p\left(z_1, z_3, z_3\right) \\
& i: \quad z_1^{(0)}, z_2^{(0)}, z_3^{(0)} \\
& \text { ii: } t+1 \text {, } \\
& z_1^{(t+1)} \sim p\left(z_1 \mid z_2^{(t)} z_3^{(t)}\right) \\
& z_2^{(t+1)} \sim p\left(z_2 \mid z_1^{(t+1)}, z_3^{(t)}\right) \\
& z_3^{(t+1)} \sim p\left(z_3 \mid z_1^{(t+1)} , z_2^{(t+1)}\right) \\
& 注意观察上述三个式子的规律,先得到z_1^{(t+1)},就将其运用于z_2^{(t+1)}...\\
& \frac{p\left(z^*\right) \cdot Q\left(z^* \mapsto z\right)}{p(z) \cdot Q\left(z \mapsto z^*\right)} \\
& =\frac{p\left(z_i^* \mid z_{-i}^*\right) \cdot p\left(z_{-i}^*\right) p\left(z_i \mid z_{-i}^*\right)}{p\left(z_i \mid z_{-i}\right) \cdot p\left(z_{-i}\right) \cdot p\left(z_i^* \mid z_{-i}\right)}=1 \\
&
\end{aligned} p ( z ) = p ( z 1 , z 3 , z 3 ) i : z 1 ( 0 ) , z 2 ( 0 ) , z 3 ( 0 ) ii: t + 1 , z 1 ( t + 1 ) ∼ p ( z 1 ∣ z 2 ( t ) z 3 ( t ) ) z 2 ( t + 1 ) ∼ p ( z 2 ∣ z 1 ( t + 1 ) , z 3 ( t ) ) z 3 ( t + 1 ) ∼ p ( z 3 ∣ z 1 ( t + 1 ) , z 2 ( t + 1 ) ) 注意观察上述三个式子的规律,先得到 z 1 ( t + 1 ) ,就将其运用于 z 2 ( t + 1 ) ... p ( z ) ⋅ Q ( z ↦ z ∗ ) p ( z ∗ ) ⋅ Q ( z ∗ ↦ z ) = p ( z i ∣ z − i ) ⋅ p ( z − i ) ⋅ p ( z i ∗ ∣ z − i ) p ( z i ∗ ∣ z − i ∗ ) ⋅ p ( z − i ∗ ) p ( z i ∣ z − i ∗ ) = 1
采样的时候其余纬度固定,所以z − i ∗ = z − i z^*_{-i} = z_{-i} z − i ∗ = z − i ,这也是为什么上式能等于1的原因
显然它的效率比传统的MH要高,因为接受率永远是1,吉布斯抽样对每次抽样的结果都接受,没有拒绝,这一点和一般的MH算法不同。
对比吉布斯抽样和MH:
单分量MH算法与吉布斯抽样的主要差别在于,前者的抽样可能在样本点之间跳动,但有可能在某些样本点上停留(因为采样被拒绝);而后者的抽样点则会在样本点之间连续移动。
吉布斯抽样适合于条件概率分布可以容易抽样 的情况,而单分量MH算法则适合于条件概率分布抽样困难的情况,此时使用容易抽样的条件分布作为建议分布。
四、采样思路以及面临困难
思路:利用 Markov Chain 收敛于平稳分布。设计Q,使得 平稳分布(q(x)) ≈ 目标分布(p(x))
设离散的马尔科夫链:
状态空间:{ 1 , 2 , 3 , . . . , k } \{ 1,2,3,...,k \} { 1 , 2 , 3 , ... , k }
状态转移矩阵:Q = [ Q i j ] k × k Q = [Q_{ij}]_{k×k} Q = [ Q ij ] k × k (连续链,即为转移概率密度)
给定状态转移矩阵
Q = ( Q 11 Q 12 ⋯ Q 1 K ⋮ ⋮ ⋮ ⋮ Q i 1 Q i 2 ⋯ Q i K ⋮ ⋮ ⋮ ⋮ Q k 1 Q k 2 ⋯ Q K K ) k × k Q=\begin{pmatrix}
Q_{11}&Q_{12}&\cdots&Q_{1K}\\
\vdots&\vdots&\vdots&\vdots\\
Q_{i1}&Q_{i2}&\cdots&Q_{iK}\\
\vdots&\vdots&\vdots&\vdots\\
Q_{k1}&Q_{k2}&\cdots&Q_{KK}\end{pmatrix}_{k×k} Q = ⎝ ⎛ Q 11 ⋮ Q i 1 ⋮ Q k 1 Q 12 ⋮ Q i 2 ⋮ Q k 2 ⋯ ⋮ ⋯ ⋮ ⋯ Q 1 K ⋮ Q i K ⋮ Q KK ⎠ ⎞ k × k
那么p ( x ( 2 ) ∣ x ( 1 ) = i ) p(x^{(2)}|x^{(1)}=i) p ( x ( 2 ) ∣ x ( 1 ) = i ) 即为Q i 1 Q i 2 ⋯ Q i K Q_{i1}\;\;Q_{i2}\cdots Q_{iK} Q i 1 Q i 2 ⋯ Q i K
问题:
“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天,点击查看活动详情 ”