文章目录
- 13 MCMC——马尔可夫链蒙特卡洛
- 13.1 MCMC的意义
- 13.2 简单采样方法介绍
- 13.2.1 概率分布采样
- 13.2.2 Rejection Sampling——拒绝采样
- 13.2.3 Importance Sampling——重要性采样
- 13.3 Markov Chain知识补充
- 13.3.1 Markov Chain定义
- 13.3.2 Markov Chain性质——平稳分布
- 13.3.3 Markov Chain性质——Detailed Balance
- 13.4 Metropolis Hastings方法
- 13.5 Gibbs方法
- 13.6 MCMC总结
13 MCMC——马尔可夫链蒙特卡洛
13.1 MCMC的意义
我们都知道Monte Carlo是一种常用的估计方法,我们经常用这个方法对期望进行随机估计。而Monte Carlo中的一大问题就是采样,要从一个复杂分布中采样是困难的,我们只能通过一些方法,将复杂的分布表示出来,然后进行采样。
我们从三个方面介绍一下MCMC的意义:
- 采样的动机:
- 采样本身:我们经常需要从各种概率分布中取得样本。(例如学习一张图片后生成新的图片)
- 求和或求积分(期望): E p ( x ) [ f ( x ) ] ≈ 1 N ∑ i = 1 N f ( x ( i ) ) E_{p(x)}[f(x)] \approx \frac{1}{N} \sum_{i=1}^{N} f(x^{(i)}) Ep(x)[f(x)]≈N1∑i=1Nf(x(i))
- 什么是好的样本:
- 样本趋向(集中)于高概率区域——能够凸显分布特征
- 样本之间相互独立
- 为什么会采样困难:
- 无法归一化:Partation funtion is intractable——求不出概率(归一化因子是积分形式,维度过高会无法求解)
- 维度灾难:高维的稀疏性使得直接判定的方法无法操作
13.2 简单采样方法介绍
首先简单介绍一下Monte Carlo方法:Monte Carlo Method是基于采样的随即近似方法。假如存在
N
N
N个样本
Z
(
1
)
,
…
,
Z
(
N
)
Z^{(1)}, \dots, Z^{(N)}
Z(1),…,Z(N),我们就可以通过代入样本求均值求期望:
P
(
Z
∣
X
)
→
E
Z
∣
X
[
f
(
Z
)
]
=
∫
Z
f
(
Z
)
⋅
P
(
Z
∣
X
)
d
Z
≈
1
N
∑
i
=
1
N
f
(
Z
(
i
)
)
P(Z|X) \rightarrow E_{Z|X}[f(Z)] = \int_Z f(Z) \cdot P(Z|X) d_Z \approx \frac{1}{N} \sum_{i=1}^{N} f(Z^{(i)})
P(Z∣X)→EZ∣X[f(Z)]=∫Zf(Z)⋅P(Z∣X)dZ≈N1i=1∑Nf(Z(i))
同时给出一个最基本的条件:我们认为样本
u
∽
U
(
0
,
1
)
u \backsim U(0, 1)
u∽U(0,1)的均匀分布是很好取的。
13.2.1 概率分布采样
条件:我们已知目标分布 p ( x ) p(x) p(x)的pdf,而且可以通过积分求出其cdf。
方法:因为均匀分布 u ∽ U ( 0 , 1 ) u \backsim U(0, 1) u∽U(0,1)很好取,所以我们随机取 u u u作为cdf的值,通过反函数求出样本。
缺点:大多数分布的积分、反函数求不出来,无法实现
13.2.2 Rejection Sampling——拒绝采样
条件:我们已知目标分布 p ( x ) p(x) p(x)的pdf,用 q ( x ) q(x) q(x)表示一个可以通过概率分布采样的简单的pdf,令 ∀ Z → M ⋅ q ( Z ) ≥ p ( Z ) \forall Z \rightarrow M \cdot q(Z) \geq p(Z) ∀Z→M⋅q(Z)≥p(Z)(带 M M M是因为 q q q与 p p p的面积相同,不带系数无法实现)
方法:
-
假定在样本点 Z ( i ) Z^{(i)} Z(i)时, p ( Z ( i ) ) p(Z^{(i)}) p(Z(i))的值为 l 1 l_1 l1, M ⋅ q ( Z ( i ) ) M \cdot q(Z^{(i)}) M⋅q(Z(i))的值为 l 2 l_2 l2,如图所示
-
定义一个变量,接受率 α = l 1 l 2 \alpha = \frac{l_1}{l_2} α=l2l1,取值范围为 α ∈ [ 0 , 1 ] \alpha \in [0, 1] α∈[0,1]。
-
在对 q ( Z ) q(Z) q(Z)采样的时候,随机在均匀分布中采样: u ∽ U ( 0 , 1 ) u \backsim U(0, 1) u∽U(0,1)。若 u ≤ α u \leq \alpha u≤α则保留 Z ( i ) Z^{(i)} Z(i),反之则删除。
缺点:若 p ( Z ( i ) ) p(Z^{(i)}) p(Z(i))和 M ⋅ q ( Z ( i ) ) M \cdot q(Z^{(i)}) M⋅q(Z(i))的值相差过大,会增加运算量(可能取好多次样都保留不了几个)
13.2.3 Importance Sampling——重要性采样
原理:对取样分布进行变换:
E
p
(
Z
)
[
f
(
Z
)
]
=
∫
Z
f
(
Z
)
p
(
Z
)
d
Z
=
∫
Z
f
(
Z
)
p
(
Z
)
q
(
Z
)
⋅
q
(
Z
)
d
Z
=
E
q
(
Z
)
[
f
(
Z
)
p
(
Z
)
q
(
Z
)
]
≈
1
N
∑
i
=
1
N
[
f
(
Z
(
i
)
)
p
(
Z
(
i
)
)
q
(
Z
(
i
)
)
]
\begin{align} E_{p(Z)}[f(Z)] &= \int_Z f(Z)p(Z) {\rm d}_Z \\ &= \int_Z f(Z) \frac{p(Z)}{q(Z)} \cdot q(Z) {\rm d}_Z \\ &= E_{q(Z)} \left[ f(Z) \frac{p(Z)}{q(Z)} \right] \\ &\approx \frac{1}{N} \sum_{i=1}^N \left[ f(Z^{(i)}) \frac{p(Z^{(i)})}{q(Z^{(i)})} \right] \end{align}
Ep(Z)[f(Z)]=∫Zf(Z)p(Z)dZ=∫Zf(Z)q(Z)p(Z)⋅q(Z)dZ=Eq(Z)[f(Z)q(Z)p(Z)]≈N1i=1∑N[f(Z(i))q(Z(i))p(Z(i))]
我们将
q
(
Z
)
q(Z)
q(Z)定义为一个简单分布。通过对
q
(
Z
)
q(Z)
q(Z)进行采样,可以求出
f
(
Z
(
i
)
)
p
(
Z
(
i
)
)
q
(
Z
(
i
)
)
f(Z^{(i)}) \frac{p(Z^{(i)})}{q(Z^{(i)})}
f(Z(i))q(Z(i))p(Z(i)),我们将
p
(
Z
(
i
)
)
q
(
Z
(
i
)
)
\frac{p(Z^{(i)})}{q(Z^{(i)})}
q(Z(i))p(Z(i))称为权重,乘上倒数我们便可以得到结果:
1
N
∑
i
=
1
N
f
(
Z
(
i
)
)
(对
p
取样)
→
1
N
∑
i
=
1
N
[
f
(
Z
(
i
)
)
p
(
Z
(
i
)
)
q
(
Z
(
i
)
)
]
(对
q
取样)
\frac{1}{N} \sum_{i=1}^N f(Z^{(i)}) (对p取样) \rightarrow \frac{1}{N} \sum_{i=1}^N \left[ f(Z^{(i)}) \frac{p(Z^{(i)})}{q(Z^{(i)})} \right] (对q取样)
N1i=1∑Nf(Z(i))(对p取样)→N1i=1∑N[f(Z(i))q(Z(i))p(Z(i))](对q取样)
缺点:以来
p
p
p、
q
q
q的相似度,若相差过大,则样本位置分布的差别会很大。
推广:Sampling Importance Resampling——重采样:
- 先进行一次Importance Resampling得到 Z ( i ) Z^{(i)} Z(i)
- 通过将权重 p ( Z ( i ) ) q ( Z ( i ) ) \frac{p(Z^{(i)})}{q(Z^{(i)})} q(Z(i))p(Z(i))设置为概率重新进行采样——可以将更多的点聚集在高概率区域
13.3 Markov Chain知识补充
13.3.1 Markov Chain定义
Markov Chain定义:通过 { x t } {\lbrace x_t \rbrace} {xt}表示节点, P = [ P i j ] P=[P_{ij}] P=[Pij]表示转移矩阵(i,j用于表示节点的状态, P i j = P ( x t + 1 = j ∣ x t = i ) P_{ij} = P(x_{t+1} = j | x_t = i) Pij=P(xt+1=j∣xt=i)), π t \pi_t πt表示 t t t时刻的节点所表示的分布:
13.3.2 Markov Chain性质——平稳分布
Markov Chain性质——平稳分布:节点的分布随时间 t → ∞ t \rightarrow \infty t→∞, π t \pi_t πt将会收敛于一个固定的分布。
重定义:
- 节点为
{
x
t
}
{\lbrace x_t \rbrace}
{xt}, 状态分布为
q
(
t
)
(
x
)
q^{(t)}(x)
q(t)(x),$Q = \begin{pmatrix} Q_{11} & Q_{12} & \dots & Q_{1K} \ Q_{21} & Q_{22} & \dots & Q_{2K} \ \dots \ Q_{K1} & Q_{K2} & \dots & Q_{KK} \end{pmatrix}_{K \times K}
为转移矩阵(随机矩阵),到
为转移矩阵(随机矩阵),到
为转移矩阵(随机矩阵),到m$时刻收敛(分布不变):
为何要引入平稳分布?
- 从结论出发,平稳分布只与转移矩阵相关(也就是说初始分布可以很简单,简单到可以取样),若平稳分布与目标分布相同的话,我们就可以通过Markov Chain的平稳分布,从简单取样到复杂取样。
收敛证明——证明对于Markov Chain, ∃ m \exists m ∃m使得 q ( m + i ) ( x ) , i ∈ N q^{(m+i)}(x), i \in N q(m+i)(x),i∈N进入平稳分布:
定义行向量: q ( t + 1 ) = ( q ( t + 1 ) ( x = 1 ) , … , q ( t + 1 ) ( x = K ) ) 1 × K q^{(t+1)} = {\left( q^{(t+1)}(x = 1), \dots , q^{(t+1)}(x = K) \right)}_{1 \times K} q(t+1)=(q(t+1)(x=1),…,q(t+1)(x=K))1×K
引入转移矩阵的定义可以得到: q ( t + 1 ) ( x = j ) = ∑ i = 1 K q ( t ) ( x = i ) ⋅ Q i j q^{(t+1)}(x=j) = \sum_{i=1}^{K} q^{(t)}(x=i) \cdot Q_{ij} q(t+1)(x=j)=∑i=1Kq(t)(x=i)⋅Qij
可以得到公式:
q ( t + 1 ) = ( ∑ i = 1 K q ( t ) ( x = i ) ⋅ Q i 1 , … , ∑ i = 1 K q ( t ) ( x = i ) ⋅ Q i K ) 1 × K = q ( t ) Q = ⋯ = q ( 1 ) Q t \begin{align} q^{(t+1)} &= {\left( \sum_{i=1}^{K} q^{(t)}(x=i) \cdot Q_{i1}, \dots , \sum_{i=1}^{K} q^{(t)}(x=i) \cdot Q_{iK} \right)}_{1 \times K} \\ &= q^{(t)}Q = \dots = q^{(1)}Q^t \end{align} q(t+1)=(i=1∑Kq(t)(x=i)⋅Qi1,…,i=1∑Kq(t)(x=i)⋅QiK)1×K=q(t)Q=⋯=q(1)Qt
引入随机矩阵的性质(Q满足随机矩阵的性质):随机矩阵的特征值的绝对值 ≤ 1 \leq 1 ≤1,所以有:
Q = A Λ A − 1 = A − 1 Λ A , Λ = d i a g ( λ 1 , … , λ k ) , ∣ λ i ∣ ≤ 1 Q = A \Lambda A^{-1} = A^{-1} \Lambda A, \quad \Lambda = diag(\lambda_1, \dots, \lambda_k), \quad |\lambda_i| \leq 1 Q=AΛA−1=A−1ΛA,Λ=diag(λ1,…,λk),∣λi∣≤1
引入性质继续分解公式可得:
q ( t + 1 ) = q ( 1 ) Q t = q ( 1 ) ( A Λ A − 1 ) t = q ( 1 ) A Λ t A − 1 \begin{align} q^{(t+1)} = q^{(1)}Q^t = q^{(1)}{(A \Lambda A^{-1})}^t = q^{(1)}{A \Lambda^t A^{-1}} \end{align} q(t+1)=q(1)Qt=q(1)(AΛA−1)t=q(1)AΛtA−1
假设目前有一个足够大的 m m m,我们可以知道:
{ q ( m + 1 ) = q ( 1 ) A Λ m A − 1 q ( m + 2 ) = q ( 1 ) A Λ m + 1 A − 1 \begin{cases} q^{(m + 1)} = q^{(1)}{A \Lambda^m A^{-1}} \\ q^{(m + 2)} = q^{(1)}{A \Lambda^{m+1} A^{-1}} \\ \end{cases} {q(m+1)=q(1)AΛmA−1q(m+2)=q(1)AΛm+1A−1
若此时 m m m足够大,不妨设其中只有 λ i = 1 \lambda_i = 1 λi=1,可得 Λ m = d i a g ( 0 , … , 1 , … , 0 ) = Λ m + 1 \Lambda^m = diag(0, \dots, 1, \dots, 0) = \Lambda^{m+1} Λm=diag(0,…,1,…,0)=Λm+1。将该公式代入上文可得
q ( m + 1 ) = q ( m + 2 ) q^{(m + 1)} = q^{(m + 2)} q(m+1)=q(m+2)
由此得证,当 t > m t>m t>m时,有 q ( m + 1 ) = q ( m + 2 ) = q ( ∞ ) q^{(m + 1)} = q^{(m + 2)} = q^{(\infty)} q(m+1)=q(m+2)=q(∞)
但这个收敛证明有一个缺点:
- 我们只证明了在足够大时会收敛,但我们不知道具体的收敛时间与条件。
13.3.3 Markov Chain性质——Detailed Balance
Detailed Balance:
- 满足以下等式(表示为双向映射):
π ( x ) ⋅ P ( x ↦ x ∗ ) = π ( x ∗ ) ⋅ P ( x ∗ ↦ x ) \pi(x) \cdot P(x \mapsto x^*) = \pi(x^*) \cdot P(x^* \mapsto x) π(x)⋅P(x↦x∗)=π(x∗)⋅P(x∗↦x)
作用:
-
Detailed Balance的条件中包含了平稳分布,因为平稳分布的性质表示为: { π k } {\lbrace \pi_k \rbrace} {πk}是 { x t } {\lbrace x_t \rbrace} {xt}的平稳分布:
π ( x ∗ ) = ∫ π ( x ) ⋅ P ( x ↦ x ∗ ) d x \pi(x^*) = \int \pi(x) \cdot P(x \mapsto x^*) {\rm d}x π(x∗)=∫π(x)⋅P(x↦x∗)dx -
要证明Detailed Balance包含平稳分布可以在两边同对 x x x积分:
∫ π ( x ) ⋅ P ( x ↦ x ∗ ) d x = ∫ π ( x ∗ ) ⋅ P ( x ∗ ↦ x ) d x = π ( x ∗ ) ∫ P ( x ∗ ↦ x ) d x = π ( x ∗ ) \begin{align} \int \pi(x) \cdot P(x \mapsto x^*) {\rm d}x &= \int \pi(x^*) \cdot P(x^* \mapsto x) {\rm d}x \\ &= \pi(x^*) \int P(x^* \mapsto x) {\rm d}x \\ &= \pi(x^*) \end{align} ∫π(x)⋅P(x↦x∗)dx=∫π(x∗)⋅P(x∗↦x)dx=π(x∗)∫P(x∗↦x)dx=π(x∗)
13.4 Metropolis Hastings方法
意义:是一种通过接受率满足Detailed Balance条件的方法。
方法:
-
我们先定义一个随机转移矩阵 Q ( Z ↦ Z ∗ ) Q(Z \mapsto Z^*) Q(Z↦Z∗),这个转移矩阵表示条件分布 Q ( Z ∗ ∣ Z ) Q(Z^*|Z) Q(Z∗∣Z),但此时:
p ( Z ) ⋅ Q ( Z ↦ Z ∗ ) ≠ p ( Z ∗ ) ⋅ Q ( Z ∗ ↦ Z ) p(Z) \cdot Q(Z \mapsto Z^*) \neq p(Z^*) \cdot Q(Z^* \mapsto Z) p(Z)⋅Q(Z↦Z∗)=p(Z∗)⋅Q(Z∗↦Z) -
定义一个接受率 α ( Z , Z ∗ ) = min ( 1 , p ( Z ∗ ) ⋅ Q ( Z ∗ ↦ Z ) p ( Z ) ⋅ Q ( Z ↦ Z ∗ ) ) \alpha(Z, Z^*) = \min(1, \frac{p(Z^*) \cdot Q(Z^* \mapsto Z)}{p(Z) \cdot Q(Z \mapsto 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 ( p ( Z ) ⋅ Q ( Z ↦ Z ∗ ) p ( Z ∗ ) ⋅ Q ( Z ∗ ↦ Z ) , 1 ) = p ( Z ∗ ) ⋅ Q ( Z ∗ ↦ Z ) ⋅ α ( Z ∗ , Z ) \begin{align} p(Z) \cdot Q(Z \mapsto Z^*) \cdot \alpha(Z, Z^*) &= p(Z) \cdot Q(Z \mapsto Z^*) \cdot \min(1, \frac{p(Z^*) \cdot Q(Z^* \mapsto Z)}{p(Z) \cdot Q(Z \mapsto Z^*)}) \\ &= \min(p(Z) \cdot Q(Z \mapsto Z^*), {p(Z^*) \cdot Q(Z^* \mapsto Z)}) \\ &= p(Z^*) \cdot Q(Z^* \mapsto Z) \cdot \min(\frac{p(Z) \cdot Q(Z \mapsto Z^*)}{p(Z^*) \cdot Q(Z^* \mapsto Z)}, 1) \\ &= p(Z^*) \cdot Q(Z^* \mapsto Z) \cdot \alpha(Z^*, Z) \\ \end{align} 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(p(Z∗)⋅Q(Z∗↦Z)p(Z)⋅Q(Z↦Z∗),1)=p(Z∗)⋅Q(Z∗↦Z)⋅α(Z∗,Z) -
此时 Q ( Z ↦ Z ∗ ) ⋅ α ( Z , Z ∗ ) Q(Z \mapsto Z^*) \cdot \alpha(Z, Z^*) Q(Z↦Z∗)⋅α(Z,Z∗)就相当于是新的转移矩阵。
具体实现:
- 从均匀分布中取得 u ∽ U ( 0 , 1 ) u \backsim U(0, 1) u∽U(0,1)
- 从转移矩阵中进行抽样 Z ∗ ∽ Q ( Z ↦ Z ∗ ) Z^* \backsim Q(Z \mapsto Z^*) Z∗∽Q(Z↦Z∗)
- 引入接受率,对样本进行一个筛选: u ≤ α ? Z ( i ) = z ∗ : Z ( i ) = Z ( i − 1 ) u \leq \alpha ? Z^{(i)} = z^* : Z^{(i)} = Z^{(i-1)} u≤α?Z(i)=z∗:Z(i)=Z(i−1)
13.5 Gibbs方法
Gibbs实际上是特殊的MH算法,这个时候我们取 α = 1 \alpha = 1 α=1
Gibbs的思想是:
- 固定
p
(
Z
)
=
p
(
Z
1
,
Z
2
,
…
,
Z
M
)
p(Z) = p(Z_1, Z_2, \dots, Z_M)
p(Z)=p(Z1,Z2,…,ZM)中的每个维度,然后进行坐标上升。每个维度就是在条件分布中取样:
Z i ∽ p ( Z i ∣ Z − i ) Z_i \backsim p(Z_i | Z_{-i}) Zi∽p(Zi∣Z−i)
具体实现:
-
先采样出 Z 1 ( 0 ) , Z 2 ( 0 ) , … , Z M ( 0 ) Z_1^{(0)}, Z_2^{(0)}, \dots, Z_M^{(0)} Z1(0),Z2(0),…,ZM(0)
-
然后不停的上升:
{ Z 1 ( t + 1 ) = p ( Z 1 ∣ Z 2 ( t ) , … , Z M ( t ) ) Z M ( t + 1 ) = p ( Z M ∣ Z 2 ( t + 1 ) , … , Z M − 1 ( t + 1 ) ) \begin{cases} Z_1^{(t+1)} = p(Z_1| Z_2^{(t)}, \dots, Z_M^{(t)}) \\ Z_M^{(t+1)} = p(Z_M| Z_2^{(t+1)}, \dots, Z_{M-1}^{(t+1)}) \\ \end{cases} {Z1(t+1)=p(Z1∣Z2(t),…,ZM(t))ZM(t+1)=p(ZM∣Z2(t+1),…,ZM−1(t+1)) -
这样到最后将维度组合起来就是样本了
为什么Gibbs不用像MH中一样乘 α \alpha α,为什么 α = 1 \alpha = 1 α=1:
- 在Gibbs中我们假设
Q
(
Z
↦
Z
∗
)
=
P
(
Z
i
∗
∣
Z
i
)
Q(Z \mapsto Z^*) = P(Z_i^*|Z_i)
Q(Z↦Z∗)=P(Zi∗∣Zi),因为我们在求取第
i
i
i项到时候固定住了其他的项,所以有
Z
i
=
Z
i
∗
Z_i = Z_i^*
Zi=Zi∗,根据这些性质可以得到:
p ( Z ) ⋅ Q ( Z ↦ Z ∗ ) p ( Z ∗ ) ⋅ Q ( Z ∗ ↦ Z ) = p ( Z ∣ Z i ) ⋅ p ( Z i ) ⋅ Q ( Z ↦ Z ∗ ) p ( Z ∗ ∣ Z i ∗ ) ⋅ p ( Z i ∗ ) ⋅ Q ( Z ∗ ↦ Z ) = 1 \frac{p(Z) \cdot Q(Z \mapsto Z^*)}{p(Z^*) \cdot Q(Z^* \mapsto Z)} = \frac{p(Z|Z_i) \cdot p(Z_i) \cdot Q(Z \mapsto Z^*)}{p(Z^*|Z_i^*) \cdot p(Z_i^*) \cdot Q(Z^* \mapsto Z)} = 1 p(Z∗)⋅Q(Z∗↦Z)p(Z)⋅Q(Z↦Z∗)=p(Z∗∣Zi∗)⋅p(Zi∗)⋅Q(Z∗↦Z)p(Z∣Zi)⋅p(Zi)⋅Q(Z↦Z∗)=1
所以我们无需加入 α \alpha α
13.6 MCMC总结
整体思路:利用Markov Chain收敛与平稳分布的性质,设计Q使得平稳分布 ≈ \approx ≈目标分布
MCMC有的问题:
-
理论证明了收敛性,但没有给出证明结束时刻m的方法——不能简单判定相邻时刻的分布,如果提早判定了,就有可能无法测出一个较低的高峰:
-
mixing time过长: p ( x ) p(x) p(x)过于复杂/高维/高相关性
-
样本间存在一定的相关性。
将MCMC化为一张图就是: