MCMC作为一种随机采样的方法,全名“Markov Chain Monte Carlo”,MCMC有两部分组成,马尔科夫链(Markov Chain简称MC)和蒙特卡洛方法(Monte Carlo Simulation简称MC)组成。
如果我们模型中的P(X)非常的复杂,那么我们是无法直接在P(X)中进行采样的,我们知道的两种采样拒绝采样(Rejection-sampling)和重要性采样(Importance-sampling)是绕过了从P(X)中采样,而采用了提议分布q(X)(propose distribution),借助q(x)进行采样。这两种方法对于提议分布q(x)是有限制条件的,它们要求提议分布q(x)和样本分布P(x)接近,如果两个分布不接近,那么效果就非常的差。但通常情况下P(X)会非常的复杂,那么就会导致我们非常困难的去寻找一个分布q(X)让它跟P(X)接近且q(X)还要简单,这个目标太难了,我们根本没办法去做。为了解决上述找q(x)难的问题,所以我们就用到了MCMC方法进行采样。
MCMC方法是一大种类方法论,我们知道的MH算法和Gibbs算法是基于MCMC方法的两种具体实现。
它借助于构建一套马氏链,用马氏链的性质(即:马氏链在经过若干步骤后,它从初始状态收敛到平稳分布)
我们假设马氏链的状态空间为: { 1 , 2 , . . , K } \{1,2,..,K\} {1,2,..,K},即:我们用下图表示可得:
为了更好的表达从 t 时刻到 t+1 时刻的状态变化,我们定义一个状态转移分布Q ,Q矩阵形式如下:
Q = ( Q 11 Q 12 . . . Q 1 k Q 21 Q 22 . . . Q 1 k ⋮ ⋮ ⋮ ⋮ Q k 1 Q k 2 . . . Q k k ) k × k (1) Q=\begin{pmatrix} Q_{11}&Q_{12}&...&Q_{1k}\\Q_{21}&Q_{22}&...&Q_{1k}\\\vdots&\vdots&\vdots&\vdots\\Q_{k1}&Q_{k2}&...&Q_{kk}\end{pmatrix}_{k \times k} \tag 1 Q=⎝⎜⎜⎜⎛Q11Q21⋮Qk1Q12Q22⋮Qk2......⋮...Q1kQ1k⋮Qkk⎠⎟⎟⎟⎞k×k(1)
我们单独分析马氏链从 t 时刻到 t+1 时刻下的分布状态:如下图所示:
由下图可得:在 t+1 时刻时的 第 x=j 状态等于在 t 时刻状态下的K种状态的和再乘以转移矩阵;
q ( t + ! ) ( x = j ) = ∑ i = 1 K q ( t ) ( x = i ) ⋅ Q i j (2) q^{(t+!)}(x=j)=\sum_{i=1}^{K}q^{(t)}(x=i)·Q_{ij}\tag 2 q(t+!)(x=j)=i=1∑Kq(t)(x=i)⋅Qij(2)
我们定义 q ( t + 1 ) q^{(t+1)} q(t+1)为一个行向量:
q ( t + 1 ) = ( q ( t + 1 ) ( x = 1 ) , q ( t + 1 ) ( x = 2 ) , . . . , q ( t + 1 ) ( x = K ) ) 1 × k (3) q^{(t+1)}=(q^{(t+1)}(x=1),q^{(t+1)}(x=2),...,q^{(t+1)}(x=K))_{1 \times k}\tag {3} q(t+1)=(q(t+1)(x=1),q(t+1)(x=2),...,q(t+1)(x=K))1×k(3)
将公式2代入到公式3中可得:
q ( t + 1 ) = ( ∑ i = 1 K q ( t ) ( x = i ) ⋅ Q i 1 , ∑ i = 1 K q ( t ) ( x = i ) ⋅ Q i 2 , . . . , ∑ i = 1 K q ( t ) ( x = i ) ⋅ Q i k ) = q t ⋅ Q (4) q^{(t+1)}=(\sum_{i=1}^{K}q^{(t)}(x=i)·Q_{i1},\sum_{i=1}^{K}q^{(t)}(x=i)·Q_{i2},...,\sum_{i=1}^{K}q^{(t)}(x=i)·Q_{ik})=q^t·Q\tag {4} q(t+1)=(i=1∑Kq(t)(x=i)⋅Qi1,i=1∑Kq(t)(x=i)⋅Qi2,...,i=1∑Kq(t)(x=i)⋅Qik)=qt⋅Q(4)
故我们可以得到一个状态转移公式:
q ( t + 1 ) = q t ⋅ Q = . . . = q ( 1 ) ⋅ Q t (5) q^{(t+1)}=q^t·Q=...=q^{(1)}·Q^t\tag {5} q(t+1)=qt⋅Q=...=q(1)⋅Qt(5)
随机矩阵Q有一个性质:特征值的绝对值小于等于1
我们对随机矩阵Q进行特征值分解:
Q = A Λ A − 1 (6) Q=A\Lambda A^{-1}\tag{6} Q=AΛA−1(6)
我们假设特征值只有一个为1,其余值得绝对值均小于1:
Λ = ( λ 11 ⋮ 1 . . . λ k k ) ; ∣ λ i i ∣ ≤ 1 (7) \Lambda=\begin{pmatrix} \lambda_{11}&&\\&\vdots&&\\&&1\\&&...& \lambda_{kk}\end{pmatrix}; |\lambda_{ii}|\le 1\tag{7} Λ=⎝⎜⎜⎜⎛λ11⋮1...λkk⎠⎟⎟⎟⎞;∣λii∣≤1(7)
则可得:
q ( t + 1 ) = q ( 1 ) ⋅ { A Λ A − 1 } t = q ( 1 ) ⋅ A Λ t A − 1 (8) q^{(t+1)}=q^{(1)}·\{{A\Lambda A^{-1}\}}^t=q^{(1)}·A\Lambda^{t}A^{-1}\tag {8} q(t+1)=q(1)⋅{AΛA−1}t=q(1)⋅AΛtA−1(8)
由 随 机 矩 阵 性 质 可 得 , 当 t → ∞ 时 , Λ t = ( 0 ⋮ 1 . . . 0 ) ; 由随机矩阵性质可得,当 t \rightarrow∞时,\Lambda^{t}=\begin{pmatrix} 0&&\\&\vdots&&\\&&1\\&&...& 0\end{pmatrix}; 由随机矩阵性质可得,当t→∞时,Λt=⎝⎜⎜⎜⎛0⋮1...0⎠⎟⎟⎟⎞;
所以我们代入求得:
第 m+1 时刻的分布 q ( m + 1 ) q^{(m+1)} q(m+1)
q ( m + 1 ) = q ( 1 ) ⋅ A Λ m A − 1 q^{(m+1)}=q^{(1)}·A\Lambda^{m}A^{-1} q(m+1)=q(1)⋅AΛmA−1
第 m+1 时刻的分布 q ( m + 1 ) q^{(m+1)} q(m+1)
q ( m + 2 ) = q ( 1 ) ⋅ A Λ m A − 1 ⋅ A Λ A − 1 = q ( 1 ) ⋅ A Λ m + 1 A − 1 (9) q^{(m+2)}=q^{(1)}·A\Lambda^{m}A^{-1}·A\Lambda A^{-1}=q^{(1)}·A\Lambda^{m+1}A^{-1}\tag {9} q(m+2)=q(1)⋅AΛmA−1⋅AΛA−1=q(1)⋅AΛm+1A−1(9)
因为 Λ m = Λ m + 1 \Lambda^{m}=\Lambda^{m+1} Λm=Λm+1
可得:
q ( m + 2 ) = q ( m + 1 ) (10) q^{(m+2)}=q^{(m+1)}\tag {10} q(m+2)=q(m+1)(10)
结 论 : 当 t ≥ m 结论:当 t \geq m 结论:当t≥m时,可得:
q ( m + 1 ) = q ( m + 2 ) = . . . = q ( ∞ ) (10) q^{(m+1)}=q^{(m+2)}=...=q^{(∞)}\tag {10} q(m+1)=q(m+2)=...=q(∞)(10)
故以上可以证明在第 m 时刻后 ,其分布为同一个概率分布,即趋近于平稳,故为平稳分布。
之前我们讲到的变分推断(Variational Inference),我们知道推断inference的意思是我们看到数据X,我们假设有隐变量Z,我们在隐变量先验P(Z)已知的情况下,求解后验P(Z|X)的过程称之为推断Inference.推断分类如下:
蒙特卡罗方法是一种基于采样的随机近似方法。主要用于做数值积分。我们的目标是为了求解后验概率P(Z|X),其中我们定义如下:
后 验 概 率 : P ( Z ∣ X ) (1) 后验概率:P(Z|X)\tag 1 后验概率:P(Z∣X)(1)
三种基本采样方法:
假设P(z)是我们要采样的概率分布,我们需要有一个均匀分布 U ∈ [ 0 , 1 ] U \in [0,1] U∈[0,1],用计算机的随机数来采集N个数据集 { u ( 1 ) , u ( 2 ) , . . . , u ( N ) } ∈ U = [ 0 , 1 ] , x ( i ) \{u^{(1)},u^{(2)},...,u^{(N)}\}\in U=[0,1],x^{(i)} {u(1),u(2),...,u(N)}∈U=[0,1],x(i),我们定义p.d.f为概率密度函数,c.d.f为概率分布函数;
概率分布采样步骤如下:
我们对于这种概率采样方法看起来非常的有用,但是我们发现,当我们的概率密度函数十分的复杂的时候,我们就没办法直接求得c.d.f,在用 u ( i ) u^{(i)} u(i)通过c.d.f反向求 x ( i ) x^{(i)} x(i)时出现问题,即:
x ( i ) = c . d . f ( − 1 ) ( u ( i ) ) (3) x^{(i)}=c.d.f^{(-1)}(u^{(i)})\tag 3 x(i)=c.d.f(−1)(u(i))(3)
当我们c.d.f很复杂的时候,我们就没办法直接求得 x ( i ) x^{(i)} x(i)
由于对于目标分布p(z)十分的难估计和采样,所以我们假设一个简单的分布q(z),进行辅助采样,具体如下:
我们定义一个叫proposal distribution的分布为q(Z) ,对于任意 ∀ z i \forall z_i ∀zi,保证如下:
M ⋅ q ( z ( i ) ) ≥ p ( z ( i ) ) (4) M·q(z^{(i)})\geq p(z^{(i)})\tag 4 M⋅q(z(i))≥p(z(i))(4)
我们定义接受率为α=L1/L2: 0≤α≤1;
α = p ( z ( i ) ) M ⋅ q ( z ( i ) ) (5) \alpha=\frac{p(z^{(i)})}{M·q(z^{(i)})}\tag 5 α=M⋅q(z(i))p(z(i))(5)
采样步骤如下:
综上所述,我们非常的依赖q(z)的形式,红色部分为我们拒绝区域,绿色部分为我们的拒绝区域。但这个分布又有很多的缺点,当M·q(z)远大于p(z)时,那么拒绝区域就非常的大,导致采样经常失败。就会导致采样率非常的低。所以这个采样方法非常的依赖于M·q(z)的选择,但实际上,我们发现p(z)十分的复杂,我们根本就没有办法来得到那么准确的结果,特别是采样 cost 非常高的话,经常性的采样失败带来的损失是很大的。
重要性采样并不是对概率进行采样,而是对概率分布的期望进行采样,即:
E p ( z ) [ f ( z ) ] = ∫ z p ( z ) ⋅ f ( z ) d z = ∫ z p ( z ) q ( z ) ⋅ q ( z ) f ( z ) d z (6) \mathbb{E}_{p(z)}[f(z)]=\int_zp(z)·f(z)dz=\int_z\frac{p(z)}{q(z)}·q(z)f(z)dz\tag 6 Ep(z)[f(z)]=∫zp(z)⋅f(z)dz=∫zq(z)p(z)⋅q(z)f(z)dz(6)
= ∫ 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 ) ) ] (7) =\int_zf(z)\frac{p(z)}{q(z)}·q(z)dz=\mathbb{E}_{q(z)}[f(z)\frac{p(z)}{q(z)}]≈\frac{1}{N}\sum_{i=1}^{N}[f(z^{(i)})\frac{p(z^{(i)})}{q(z^{(i)})}]\tag 7 =∫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))](7)
经过重要性采样后,我们得到了 N 个样本点,以及对应的权重。那么我用权重来作为采样的概率,重新测采样出 N 个样本。也就是如下图所示
通过二次采样可以降低采样不平衡的问题。至于为什么呢?大家想一想,我在这里表达一下自己的看法。p(zi)/q(zi) 是 Weight,如果 Weight 比较大的话,说明 p(zi) 比较大而 q(zi) 比较的小,也就是我们通过 q(zi) 采出来的数量比较少。那么我们按权重再来采一次,就可以增加采到重要性样本的概率,成功的弥补了重要性采样带来的缺陷,有效的弥补采样不均衡的问题。
我们知道蒙特卡罗方法[Monte Carlo Method]是一个基于随机采样的近似方法,我们定义马尔科夫链[Markov Chain]是时间和状态都是离散的链。随机过程就是研究对象是一个随机对象序列 { X 1 , X 2 , . . . , X N } , 而 不 是 一 个 单 独 的 随 机 变 量 X . \{X_1,X_2,...,X_N\},而不是一个单独的随机变量X. {X1,X2,...,XN},而不是一个单独的随机变量X.
马氏链定义是它的随机变量序列满足马尔科夫性质;马尔科夫性质定义:当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的过程通常称之为马尔可夫过程;简单来说:在给定当前状态下,未来只依赖于当前,未来跟过去无关,就是英雄不问出处,未来只取决于现在,跟过去没任何关系。
齐次(一阶)马尔科夫链的数学表达:
P ( X t + 1 = x ∣ X 1 , X 2 , . . . , X t ) = P ( X t + 1 = x ∣ X t ) (8) P(X_{t+1}=x|X_1,X_2,...,X_t)=P(X_{t+1}=x|X_t)\tag 8 P(Xt+1=x∣X1,X2,...,Xt)=P(Xt+1=x∣Xt)(8)
转移矩阵 P , 每 一 个 转 移 矩 阵 为 [ P i j ] P,每一个转移矩阵为[P_{ij}] P,每一个转移矩阵为[Pij]
P i j = P ( X t + 1 = j ∣ X t = i ) (9) P_{ij}=P(X_{t+1}=j|X_{t}=i)\tag 9 Pij=P(Xt+1=j∣Xt=i)(9)
假如存在一个向量 π = [ π ( 1 ) , π ( 2 ) , . . . , π ( N ) , . . . ] , 假 如 有 一 个 概 率 分 布 π 满 足 : ∑ i = 1 ∞ π ( i ) = 1 \pi=[\pi^{(1)},\pi^{(2)},...,\pi^{(N)},...],假如有一个概率分布\pi满足:\sum_{i=1}^{\infty}\pi^{(i)}=1 π=[π(1),π(2),...,π(N),...],假如有一个概率分布π满足:∑i=1∞π(i)=1,且满足如下公式:那么我们就称这个序列 { π ( k ) } \{\pi(k)\} {π(k)}为马氏链 X t X_t Xt的平稳分布。
π t + 1 ( X ∗ ) = ∫ π t ( X ) ⋅ P ( X ⟼ X ∗ ) d x (10) \pi _{t+1}(X^*)=\int \pi _{t}(X)·P(X\longmapsto X^*)dx\tag {10} πt+1(X∗)=∫πt(X)⋅P(X⟼X∗)dx(10)
重点:我们引入平稳分布的目的是当我们要通过采样的方式来求出后验分布P(Z)时,如果我们把P(Z)看作平稳分布的 { π ( k ) } \{\pi(k)\} {π(k)},我们就可以构造一系列的 { X 1 , X 2 , . . . . , X N } \{X_1,X_2,....,X_N\} {X1,X2,....,XN}的马氏链,让这个马氏链的 { π ( k ) } \{\pi(k)\} {π(k)}来逼近于P(Z)。
细致平稳概念(detailed balance)
π ( X ) ⋅ P ( X ⟼ X ∗ ) = π ( X ∗ ) ⋅ P ( X ∗ ⟼ X ) (11) \pi(X)·P(X\longmapsto X^*)=\pi(X^*)·P(X^*\longmapsto X)\tag {11} π(X)⋅P(X⟼X∗)=π(X∗)⋅P(X∗⟼X)(11)
detailed-balance是平稳分布的充分非必要条件。
P ( X ⟼ X ∗ ) : 表 示 条 件 概 率 , 相 当 于 P ( X ∣ X ∗ ) P(X\longmapsto X^*):表示条件概率,相当于P(X| X^*) P(X⟼X∗):表示条件概率,相当于P(X∣X∗)
∫ π ( X ) ⋅ P ( X ⟼ X ∗ ) d x \int\pi(X)·P(X\longmapsto X^*)dx ∫π(X)⋅P(X⟼X∗)dx
我们知道细致分布为: π ( X ) ⋅ P ( X ⟼ X ∗ ) = π ( X ∗ ) ⋅ P ( X ∗ ⟼ X ) \pi(X)·P(X\longmapsto X^*)=\pi(X^*)·P(X^*\longmapsto X) π(X)⋅P(X⟼X∗)=π(X∗)⋅P(X∗⟼X)
= ∫ π ( X ∗ ) ⋅ P ( X ∗ ⟼ X ) d x =\int\pi(X^*)·P(X^*\longmapsto X)dx =∫π(X∗)⋅P(X∗⟼X)dx
= π ( X ∗ ) ⋅ ∫ P ( X ∗ ⟼ X ) d x ⏟ = 1 =\pi(X^*)·\underbrace{\int P(X^*\longmapsto X)dx}_{=1} =π(X∗)⋅=1 ∫P(X∗⟼X)dx
= π ( X ∗ ) =\pi(X^*) =π(X∗)
结 论 : π ( X ∗ ) = ∫ π ( X ) ⋅ P ( X ⟼ X ∗ ) d x ; [ 平 稳 分 布 公 式 ] 结论:\pi(X^*)=\int\pi(X)·P(X\longmapsto X^*)dx;[平稳分布公式] 结论:π(X∗)=∫π(X)⋅P(X⟼X∗)dx;[平稳分布公式]
我们关心的是我们的后验概率P(Z),为了求关于后验概率相关函数的期望即:
E P ( Z ) [ f ( z ) ] = ∫ z f ( z ) ⋅ p ( z ) d z ≈ 1 N ∑ i = 1 N f ( z ( i ) ) (12) \mathbb{E}_{P(Z)}[f(z)]=\int_zf(z)·p(z)dz≈\frac{1}{N}\sum_{i=1}^{N}f(z^{(i)})\tag{12} EP(Z)[f(z)]=∫zf(z)⋅p(z)dz≈N1i=1∑Nf(z(i))(12)
我们由细致分布公式可知: π ( X ) ⋅ P ( X ⟼ X ∗ ) = π ( X ∗ ) ⋅ P ( X ∗ ⟼ X ) \pi(X)·P(X\longmapsto X^*)=\pi(X^*)·P(X^*\longmapsto X) π(X)⋅P(X⟼X∗)=π(X∗)⋅P(X∗⟼X),我们所求最终的平稳分布为 π ( X ) \pi(X) π(X),所以我们把目标后验分布P(Z)看作平稳分布的 π ( X ) \pi(X) π(X),通过构造一个马氏链,让这个马氏链最终趋向于平稳分布P(Z);那么我们的问题转换为怎么找到detailed balance里的转移矩阵,使得这个马氏链趋向于平稳P(Z).
构造转移矩阵Q使得满足detailed-balance:
P ( Z ) ⋅ Q ( Z ⟼ Z ∗ ) ⋅ α ( z , z ∗ ) ⏟ P ( Z ⟼ Z ∗ ) = P ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) ⋅ α ( z ∗ , z ) ⏟ P ( Z ∗ ⟼ Z ) (13) P(Z)·\underbrace{Q(Z\longmapsto Z^*)·\alpha(z,z^*)}_{P(Z\longmapsto Z^*)}=P(Z^*)·\underbrace{Q(Z^*\longmapsto Z)·\alpha(z^*,z)}_{P(Z^*\longmapsto Z)}\tag{13} P(Z)⋅P(Z⟼Z∗) Q(Z⟼Z∗)⋅α(z,z∗)=P(Z∗)⋅P(Z∗⟼Z) Q(Z∗⟼Z)⋅α(z∗,z)(13)
α ( z , z ∗ ) : \alpha(z,z^*): α(z,z∗):表示接受率。
α ( z , z ∗ ) = m i n ( 1 , p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) p ( Z ) ⋅ Q ( Z ⟼ Z ∗ ) ) (14) \alpha(z,z^*)=min( 1,\frac{p(Z^*)·Q(Z^*\longmapsto Z)}{p(Z)·Q(Z\longmapsto Z^*)})\tag{14} α(z,z∗)=min(1,p(Z)⋅Q(Z⟼Z∗)p(Z∗)⋅Q(Z∗⟼Z))(14)
Q ( Z ∗ ⟼ Z ) = Q ( Z ∣ Z ∗ ) ; Q ( Z ⟼ Z ∗ ) = Q ( Z ∗ ∣ Z ) Q(Z^*\longmapsto Z)=Q(Z|Z^*);Q(Z\longmapsto Z^*)=Q(Z^*|Z) Q(Z∗⟼Z)=Q(Z∣Z∗);Q(Z⟼Z∗)=Q(Z∗∣Z)
P ( Z ) ⋅ P ( Z ⟼ Z ∗ ) = P ( Z ∗ ) ⋅ P ( Z ∗ ⟼ Z ) (15) P(Z)·{P(Z\longmapsto Z^*)}=P(Z^*)·{P(Z^*\longmapsto Z)}\tag{15} P(Z)⋅P(Z⟼Z∗)=P(Z∗)⋅P(Z∗⟼Z)(15)
证:
P ( Z ) Q ( Z ⟼ Z ∗ ) ⋅ α ( z , z ∗ ) = P ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) ⋅ α ( z ∗ , z ) (16) P(Z)Q(Z\longmapsto Z^*)·\alpha(z,z^*)=P(Z^*)·Q(Z^*\longmapsto Z)·\alpha(z^*,z)\tag{16} P(Z)Q(Z⟼Z∗)⋅α(z,z∗)=P(Z∗)⋅Q(Z∗⟼Z)⋅α(z∗,z)(16)
证明如下:
P ( Z ) Q ( Z ⟼ Z ∗ ) ⋅ α ( z , z ∗ ) P(Z)Q(Z\longmapsto Z^*)·\alpha(z,z^*) P(Z)Q(Z⟼Z∗)⋅α(z,z∗)
= P ( Z ) Q ( Z ⟼ Z ∗ ) ⋅ m i n ( 1 , p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) p ( Z ) ⋅ Q ( Z ⟼ Z ∗ ) ) =P(Z)Q(Z\longmapsto Z^*)·min( 1,\frac{p(Z^*)·Q(Z^*\longmapsto Z)}{p(Z)·Q(Z\longmapsto Z^*)}) =P(Z)Q(Z⟼Z∗)⋅min(1,p(Z)⋅Q(Z⟼Z∗)p(Z∗)⋅Q(Z∗⟼Z))
= ⋅ m i n ( P ( Z ) Q ( Z ⟼ Z ∗ ) , p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) ) =·min( P(Z)Q(Z\longmapsto Z^*),p(Z^*)·Q(Z^*\longmapsto Z)) =⋅min(P(Z)Q(Z⟼Z∗),p(Z∗)⋅Q(Z∗⟼Z))
= p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) ) ⋅ m i n ( p ( Z ) ⋅ Q ( Z ⟼ Z ∗ ) p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) , 1 ) =p(Z^*)·Q(Z^*\longmapsto Z))·min( \frac{p(Z)·Q(Z\longmapsto Z^*)}{p(Z^*)·Q(Z^*\longmapsto Z)},1) =p(Z∗)⋅Q(Z∗⟼Z))⋅min(p(Z∗)⋅Q(Z∗⟼Z)p(Z)⋅Q(Z⟼Z∗),1)
由于可得:
α ( z ∗ , z ) = m i n ( p ( Z ) ⋅ Q ( Z ⟼ Z ∗ ) p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) , 1 ) (17) \alpha(z^*,z)=min( \frac{p(Z)·Q(Z\longmapsto Z^*)}{p(Z^*)·Q(Z^*\longmapsto Z)},1)\tag{17} α(z∗,z)=min(p(Z∗)⋅Q(Z∗⟼Z)p(Z)⋅Q(Z⟼Z∗),1)(17)
所以原式可得:
P ( Z ) Q ( Z ⟼ Z ∗ ) ⋅ α ( z , z ∗ ) = p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) ) ⋅ α ( z ∗ , z ) (18) P(Z)Q(Z\longmapsto Z^*)·\alpha(z,z^*)=p(Z^*)·Q(Z^*\longmapsto Z))·\alpha(z^*,z)\tag{18} P(Z)Q(Z⟼Z∗)⋅α(z,z∗)=p(Z∗)⋅Q(Z∗⟼Z))⋅α(z∗,z)(18)
证毕,公式16成立!
结论:只要我们取接受率 α ( z ∗ , z ) \alpha(z^*,z) α(z∗,z),,那么马氏链就满足detailed-balance 的条件,从而得到平稳分布。
α ( z , z ∗ ) = m i n ( 1 , p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) p ( Z ) ⋅ Q ( Z ⟼ Z ∗ ) ) (19) \alpha(z,z^*)=min( 1,\frac{p(Z^*)·Q(Z^*\longmapsto Z)}{p(Z)·Q(Z\longmapsto Z^*)})\tag{19} α(z,z∗)=min(1,p(Z)⋅Q(Z⟼Z∗)p(Z∗)⋅Q(Z∗⟼Z))(19)
Metropolis-Hastings Sampling (M.H算法具体采样步骤):
注意:对于后验概率P(Z)来说,我们隐含了一个重要的条件,即:
P ( Z ) = p ^ ( Z ) Z p (20) P(Z)=\frac{\hat{p}(Z)}{Z_p}\tag{20} P(Z)=Zpp^(Z)(20)
吉布斯算法采样本质上也是属于MH采样,不过是一种特殊的MH采样。Gibbs采样假设要采样的分布P(Z)维度非常的高。即:
P ( Z ) = P ( Z 1 , Z 2 , . . . , Z N ) (21) P(Z)=P(Z_1,Z_2,...,Z_N)\tag{21} P(Z)=P(Z1,Z2,...,ZN)(21)
我们知道MH算法中的接受率α表示如下,我们现在可以用Gibbs算法来类比MH算法的接受率:
p ( Z ∗ ) ⋅ Q ( Z ∗ ⟼ Z ) p ( Z ) ⋅ Q ( Z ⟼ Z ∗ ) ) \frac{p(Z^*)·Q(Z^*\longmapsto Z)}{p(Z)·Q(Z\longmapsto Z^*)}) p(Z)⋅Q(Z⟼Z∗)p(Z∗)⋅Q(Z∗⟼Z))
蒙特卡洛方法主要是为了做采样的。那我们采样的动机是什么?在机器学习中我们为什么要去采样。
但在实际过程中,我们采样是十分困难的,比如无向图模型中的P(X)中,往往有一个归一化因子Z,满足如下:
P ( X ) = 1 ⋅ P ^ ( X ) Z (28) P(X)=\frac{1·\hat{P}(X)}{Z}\tag{28} P(X)=Z1⋅P^(X)(28)
所以我们遇到的困难如下:
正因为我们发现直接采样P(X)十分的困难,所以我们才另辟蹊径采取了拒绝采样和重要性采样。借助简单的辅助分布q(X)来代替复杂的P(X)来进行采样,来绕过直接采样P(X);
MCMC的思想是试图构建一个马氏链去逼近最终的目标分布,比如MH算法采样和Gibbs算法采样。
蒙特卡洛方法的马尔科夫链经过若干周期后会趋向于平稳分布,我们假设状态空间为离散 { 1 , 2 , . . . , K } \{1,2,...,K\} {1,2,...,K},定义状态转移矩阵为 Q = [ Q i j ] k × k Q=[Q_{ij}]_{k\times k} Q=[Qij]k×k,即假定到达m步后马氏链趋向于平稳分布。因此启发我们和采样方法结合起来产生MCMC。MCMC其实是一套方法论,我们常用的是MH算法采样和吉布斯算法采样。