此文章主要是结合哔站shuhuai008大佬的白板推导视频:MCMC_218min
全部笔记的汇总贴:机器学习-白板推导系列笔记
一、蒙特卡洛方法
蒙特卡洛方法(Monte Carlo Method):基于采样的随机近似方法。
该方法旨在求得复杂概率分布下的期望值:
E Z ∣ x [ f ( z ) ] = ∫ p ( z ∣ x ) f ( z ) d z ≈ 1 N ∑ i = 1 N f ( z i ) \!E_{Z|x}[ f( z ) ]=\int{p( z|x )}\,f\left( z \right) \text{d}z\approx\frac{1}{N}\sum_{i=1}^N{f}\text{(}z_i\text{)} EZ∣x[f(z)]=∫p(z∣x)f(z)dz≈N1∑i=1Nf(zi)
其中 z i z_i zi 是从概率分布 p ( z ∣ x ) p( z|x ) p(z∣x) 中取的样本,也就是从概率分布中取 N N N个点来近似计算这个积分。
(一)概率分布采样
- a.求得概率密度函数PDF的累计密度函数CDF
- b.求CDF的反函数
- c.在0-1之间均匀取样,带入反函数,得到取样点
缺点:大部分PDF难以求得CDF
(二)拒绝采样(Rejection Sampling)
对于较复杂的概率分布 p ( z ) p( z ) p(z) ,引入简单的提议分布(proposal distribution) q ( z ) q( z ) q(z),使得任意的 M q ( z i ) ≥ p ( z i ) Mq(z_{i})\ge p(z_{i}) Mq(zi)≥p(zi) ,然后对 q ( z ) q( z ) q(z) 进行采样获得样本。具体的采样方法步骤为:
- a.选择概率密度函数为 q ( z ) q( z ) q(z),作为提议分布,使其对任一 z z z满足 M q ( z i ) ≥ p ( z i ) Mq(z_{i})\ge p(z_{i}) Mq(zi)≥p(zi),其中 M > 0 M>0 M>0;
- b.按照提议分布随机抽样 q ( z ) q( z ) q(z)得到样本 z i z_i zi,再按照均匀分布在 ( 0 , 1 ) (0,1) (0,1)范围内抽样得到 u i u_i ui;
- c.如果 u i ≤ p ( z i ) M q ( z i ) u_i\le \frac{p( z_i)}{Mq(z_i)} ui≤Mq(zi)p(zi),则将 z i z_i zi作为抽样结果;否则,返回步骤b;
- d.获得 N N N个样本,即结束。
优点:容易实现
缺点:采样效率可能不高
如果 p ( z ) p(z) p(z)的涵盖体积占 M q ( z ) Mq(z) Mq(z)的涵盖体积的比例很低,就会导致拒绝的比例很高,抽样效率很低。
一般是在高维空间抽样,会遇到维度灾难的问题,即使 p ( z ) p(z) p(z)与 M q ( z ) Mq(z) Mq(z)很接近,两者涵盖体积的差异也可能很大。
(三)重要性采样(Importance Sampling)
直接对期望 E p ( z ) [ f ( z ) ] E_{p(z)}[f(z)] Ep(z)[f(z)]进行采样
引入另一个分布 q ( z ) q( z ) q(z):
E p ( z ) [ f ( z ) ] = ∫ p ( z ) f ( z ) d z = ∫ p ( z ) q ( z ) q ( z ) f ( z ) d z = ∫ f ( z ) p ( z ) q ( z ) q ( z ) d z ≈ 1 N ∑ i = 1 N f ( z i ) p ( z i ) q ( z i ) ⏟ w e i g h t z i ∼ q ( z ) , i = 1 , 2 , ⋯ , N \!E_{p\left( z \right)}\left[ f\left(z \right) \right] =\int{p\left( z \right)}\,f\left( z \right) \text{d}z \\=\int{\frac{p\left(z\right)}{q\left(z \right)}}q\left(z \right) \,f\left( z \right) \text{d}z \\=\int{f}\left( z \right) \frac{p\left( z \right)}{q\left( z \right)}q\left( z \right) \text{d}z \\\approx \frac{1}{N}\sum_{i=1}^N{f}\text{(}z_i\text{)}\underset{weight}{\underbrace{\frac{p\left( z_i \right)}{q\left( z_i \right)}}} \\z_{i} \sim q(z),i=1,2,\cdots,N Ep(z)[f(z)]=∫p(z)f(z)dz=∫q(z)p(z)q(z)f(z)dz=∫f(z)q(z)p(z)q(z)dz≈N1i=1∑Nf(zi)weight q(zi)p(zi)zi∼q(z),i=1,2,⋯,N
于是在 q ( z ) q( z ) q(z)中采样,并通过权重计算和。
缺点:权重⾮常⼩的时候,效率非常低
重要性采样有⼀个变种 Sampling Importance Resampling,这种方法,首先和上面⼀样进行采样,然后在采样出来的N个样本中,重新采样,这个重新采样,使⽤每个样本点的权重作为概率分布进行采样。
二、齐次马尔可夫链
马尔可夫链:时间和状态都是离散的
(一)齐次马尔可夫链(一阶马尔可夫链)
X = { X 0 , X 1 , ⋯ , X t , ⋯ } X=\{X_0,X_1,\cdots,X_t,\cdots\} X={
X0,X1,⋯,Xt,⋯}其中 X t X_t Xt表示 t t t时刻的随机变量,并且每个随机变量的取值空间相同。
如果 X t X_t Xt只依赖于 X t − 1 X_{t-1} Xt−1,而不依赖于 { X 0 , X 1 , ⋯ , X t − 2 } \{X_0,X_1,\cdots,X_{t-2}\} {
X0,X1,⋯,Xt−2},则称这一性质为马尔可夫性,即
P ( X t ∣ X 1 , X 2 , ⋯ , X t − 1 ) = P ( X t ∣ X t − 1 ) , t = 1 , 2 , ⋯ P(X_t|X_1,X_2,\cdots,X_{t-1})=P(X_t|X_{t-1}),t=1,2,\cdots P(Xt∣X1,X2,⋯,Xt−1)=P(Xt∣Xt−1),t=1,2,⋯
具有马尔可夫性的随机序列 X = { X 0 , X 1 , ⋯ , X t , ⋯ } X=\{X_0,X_1,\cdots,X_t,\cdots\} X={ X0,X1,⋯,Xt,⋯}称为马尔可夫链(Markov Chain),或马尔可夫过程(Markov Process)。条件概率分布 P ( X t ∣ X t − 1 ) P(X_t|X_{t-1}) P(Xt∣Xt−1)称为马尔可夫链的转移概率分布。
当转移概率分布 P ( X t ∣ X t − 1 ) P(X_t|X_{t-1}) P(Xt∣Xt−1)与 t t t无关,也就是说不同时刻的转移概率是相同的,则称该马尔可夫链为时间齐次的马尔可夫链(Time Homogenous Markov Chain),形式化的表达是:
P ( X t + s ∣ X t − 1 + s ) = P ( X t ∣ X t − 1 ) , t = 1 , 2 , ⋯ ; s = 1 , 2 , ⋯ P(X_{t+s}|X_{t-1+s})=P(X_t|X_{t-1}),t=1,2,\cdots;s=1,2,\cdots P(Xt+s∣Xt−1+s)=P(Xt∣Xt−1),t=1,2,⋯;s=1,2,⋯
(二)概率转移矩阵
如果马尔可夫链的随机变量 X t ( t = 0 , 1 , 2 , ⋯ ) X_{t}(t=0,1,2,\cdots ) Xt(t=0,1,2,⋯)定义在离散空间,则转移概率分布可以由矩阵表示。若马尔可夫链在时刻 t − 1 t-1 t−1处于状态 j j j,在时刻t移动到状态 i i i,将转移概率记作:
q i j = ( X t = i ∣ X t − 1 = j ) , i = 1 , 2 , ⋯ ; j = 1 , 2 , ⋯ q_{ij}=(X_{t}=i|X_{t-1}=j),i=1,2,\cdots ;\; \; j=1,2,\cdots qij=(Xt=i∣Xt−1=j),i=1,2,⋯;j=1,2,⋯
满足: q i j ≥ 0 , ∑ i q i j = 1 q_{ij}\geq 0,\; \; \sum _{i}q_{ij}=1 qij≥0,∑iqij=1
马尔可夫链的转移概率可以由矩阵表示,状态转移矩阵:(随机矩阵)
Q = [ Q 11 Q 12 Q 13 ⋯ Q 1 k Q 21 Q 22 Q 23 ⋯ Q 2 k Q 31 Q 32 Q 33 ⋯ Q 3 k ⋯ ⋯ ⋯ ⋯ ⋯ Q k 1 Q k 2 Q k 3 ⋯ Q k k ] k ∗ k p i j ≥ 0 , ∑ i p i j = 1 Q=\begin{bmatrix} Q_{11} & Q_{12} & Q_{13} & \cdots& Q_{1k} \\ Q_{21} & Q_{22} & Q_{23} & \cdots & Q_{2k}\\ Q_{31} & Q_{32} & Q_{33} & \cdots& Q_{3k} \\ \cdots & \cdots & \cdots & \cdots& \cdots\\ Q_{k1} & Q_{k2} & Q_{k3} & \cdots& Q_{kk} \end{bmatrix}_{k*k}\\ p_{ij}\geq 0,\; \; \sum _{i}p_{ij}=1 Q=⎣⎢⎢⎢⎢⎡Q11Q21Q31⋯Qk1Q12Q22Q32⋯Qk2Q13Q23Q33⋯Qk3⋯⋯⋯⋯⋯Q1kQ2kQ3k⋯Qkk⎦⎥⎥⎥⎥⎤k∗kpij≥0,i∑pij=1
令 q ( t + 1 ) = [ ( q ( t + 1 ) ( x = 1 ) q ( t + 1 ) ( x = 2 ) ⋯ q ( t + 1 ) ( x = k ) ) ] 1 ∗ k q^{(t+1)}=\begin{bmatrix} (q^{(t+1)}(x=1) & q^{(t+1)}(x=2) & \cdots &q^{(t+1)}(x=k))\end{bmatrix}_{1*k} q(t+1)=[(q(t+1)(x=1)q(t+1)(x=2)⋯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)Q_{ij}} q(t+1)(x=j)=∑