机器学习 [白板推导](十)[马尔可夫链蒙特卡洛法]

13. 马尔可夫链蒙特卡洛法(Markov Chain & Monte Carlo,MCMC)

13.1. 蒙特卡洛方法简介

在推断中的近似推断问题中,常常会使用随机近似推断方法,例如最经典的MCMC,核心思想是蒙特卡洛方法,即基于采样的随机近似方法。

例如,要计算推断中的期望 Ez[f(z)]E_{z}\left[f(z) \right ]Ez[f(z)],假设随机变量 zzz 是连续/无限取值的离散,则对其求期望常常是困难的(连续-积分/无限离散-无穷级数),此时可以随机采样 NNN 个样本 {z1,z2,⋯ ,zN}\left \{ z_1,z_2,\cdots,z_N \right \}{z1,z2,⋯,zN},则期望的估计值为 Ez[f(z)]=mean{f(z1),f(z2),⋯ ,f(zN)}E_{z}\left[f(z) \right ]=\text{mean}\left \{ f(z_1),f(z_2),\cdots,f(z_N) \right \}Ez[f(z)]=mean{f(z1),f(z2),⋯,f(zN)}。

蒙特卡洛方法中常常使用以下采样方法:

  • 概率分布采样:利用变量的概率分布 p(z)p(z)p(z) 进行随机数生成,但这个方法仅限概率分布简单的情况;

  • Adjection Sampling (接收-拒绝采样法):

    • 当随机变量的概率分布 p(z)p(z)p(z) 较为复杂时,可以设一个简单分布 q(z)q(z)q(z),以及寻找一个常数 MMM,使得定义域上的任意 ∀ zi, M⋅q(z)⩾p(z)\forall \ z_i,\ \ M\cdot q(z)\geqslant p(z)∀ zi, M⋅q(z)⩾p(z)。
    • 引入一个新的参数 α(z)=p(z)M⋅q(z)\alpha(z)=\frac{p(z)}{M\cdot q(z)}α(z)=M⋅q(z)p(z),称为接收率,其值在0-1之间,且越接近1表示 p(z)p(z)p(z) 和 M⋅q(z)M\cdot q(z)M⋅q(z) 越接近;
    • 此时可以从简单分布 q(z)q(z)q(z) 中进行采样,每采样一个 ziz_izi 的同时也从均匀分布 U(0,1)U(0,1)U(0,1) 中采样一个 uiu_iui,当 ui⩽α(zi)u_i\leqslant \alpha(z_i)ui⩽α(zi) 时,接受采样结果,否则拒绝,需要重新采样;
    • 这种采样方法又叫接受-拒绝法,其优点是容易实现,缺点是效率低,如果 p(z)p(z)p(z) 所含面积占 M⋅q(z)M\cdot q(z)M⋅q(z) 所含面积比例过小,则采样很容易被拒绝,需要重新采样,类似的,如果待采样变量维度过高,也很容易采样被拒绝;
  • 重要度采样:同样设一个简单分布 q(z)q(z)q(z),则原本难算的期望 Ez[f(x)]=∫zp(z)f(z)dz=∫zp(z)q(z)f(z)⋅q(z)dz=Eq(z)[p(z)q(z)f(z)]E_z\left[f(x) \right ]=\int_zp(z)f(z)dz=\int_z\frac{p(z)}{q(z)}f(z)\cdot q(z)dz=E_{q(z)}\left[\frac{p(z)}{q(z)}f(z) \right ]Ez[f(x)]=∫zp(z)f(z)dz=∫zq(z)p(z)f(z)⋅q(z)dz=Eq(z)[q(z)p(z)f(z)] 可以化为另外一个期望,使得原本从 p(z)p(z)p(z) 中采样的困难转为从简单分布 q(z)q(z)q(z) 中采样,而 p(z)q(z)\frac{p(z)}{q(z)}q(z)p(z) 称为重要度;

13.2. 马尔科夫链简介

马尔可夫链 :p(xt)=p(x∣x1,x2,⋯ ,xt−1)p(x_t)=p(x|x_1, x_2, \cdots, x_{t-1})p(xt)=p(x∣x1,x2,⋯,xt−1),其中 xtx_txt 表示序列上某个步/时间的样本,若一阶马尔可夫,则 p(xt)=p(x∣xt−1)p(x_t)=p(x|x_{t-1})p(xt)=p(x∣xt−1),序列上所有随机变量的取值集合相同,被称为状态空间 SSS ,p(xt)=p(x∣xt−1)p(x_t)=p(x|x_{t-1})p(xt)=p(x∣xt−1) 被称为 t 时刻的状态转移函数

这里只讨论一阶马尔可夫链,因为更高阶的马尔可夫链可以推导转换为一阶马尔科夫链,同时若任意的 sss,有 P(xt+s∣xt+s−1)=P(xt∣xt−1)P(x_{t+s}|x_{t+s-1})=P(x_t|x_{t-1})P(xt+s∣xt+s−1)=P(xt∣xt−1),则称为时间齐次的马尔可夫链,这里也只讨论时间齐次的马尔科夫链。

对于状态空间 SSS 全部是离散值的马尔可夫链,其所有的状态转移函数可以写作一个矩阵,即 { pij=P(Xt=i∣Xt−1=j) }\left \{ \ p_{ij}=P(X_t=i|X_{t-1}=j) \ \right \}{ pij=P(Xt=i∣Xt−1=j) },称为状态转移矩阵 ,满足 ∑ipij=1\sum_{i}p_{ij}=1∑ipij=1。

基于状态转移函数,马尔可夫链可以表示为,对 ttt 时刻,取值为 iii 的概率为 P(xt=i)=∑jpij⋅P(xt−1=j)=∑jpij⋅∑kpjkP(xt−2=k)=⋯P(x_t=i)=\sum_{j}p_{ij}\cdot P(x_{t-1}=j)=\sum_{j}p_{ij}\cdot \sum_kp_{jk} P(x_{t-2}=k)=\cdotsP(xt=i)=∑jpij⋅P(xt−1=j)=∑jpij⋅∑kpjkP(xt−2=k)=⋯,为了方便表示,设矩阵 ΠS×T={πi(t)}=P(xt=i)\Pi_{S\times T}=\{ \pi_i(t) \}=P(x_t=i)ΠS×T={πi(t)}=P(xt=i),即为将每一步的计算值存储下来便于后面的计算,其中 π⃗(0)=[πS0(0),πS1(0),⋯ ]T\vec{\pi}(0) =\left [ \pi_{S_0}(0), \pi_{S_1}(0), \cdots \right ]^Tπ (0)=[πS0(0),πS1(0),⋯]T 被称为初始状态分布,常常是个独热向量,表示马尔可夫链从某个固定状态开始。

如果马尔可夫链的状态空间上存在某个分布 π⃗=[πS0,πS1,⋯ ]T\vec{\pi}=\left [ \pi_{S_0}, \pi_{S_1}, \cdots \right ]^Tπ =[πS0,πS1,⋯]T,使得 π=Pπ\pi=P\piπ=Pπ,则称该分布为平稳分布,如果马尔可夫链进入平稳分布,则其接下来的状态分布较为平稳,变化很小,同时一个马尔可夫链可能存在唯一的平稳分布,无穷多个平稳分步,或不存在平稳分布。

马尔可夫链的性质:

  • 可约性:若对于任意初始状态 x0=ix_0=ix0=i 和任意状态 jjj,都至少存在一个时刻 t>0t>0t>0,使得 P(xt=j∣x0=i)>0P(x_t=j|x_0=i)>0P(xt=j∣x0=i)>0,则说明任意初始状态经过一定时间可以到达任意状态,这种情况称马尔可夫链式不可约的,否则,说明从某个状态出发会永远到不了其他某些状态,这个马尔可夫链称为可约的。
  • 周期性:对任意初始状态 x0=ix_0=ix0=i,若其经过一定时间后可以回到状态 xt=ix_t=ixt=i,且所有最短途径时长 {ti}\left \{ t_i \right \}{ti} 的最大公约数不为1,则称该马尔科夫链具有周期性,否则是非周期的。
  • 正常返:定义 pijtp_{ij}^tpijt 表示 P(xt=i,xt−m≠i∣x0=j)P(x_t=i,x_{t-m}\neq i|x_0=j)P(xt=i,xt−m=i∣x0=j),即从状态 jjj 出发,经过 ttt 时间首次来到状态 iii 的概率,若对任意 jjj 和 iii,都有 lim⁡t→∞pijt>0\lim_{t \to \infty }p_{ij}^t>0limt→∞pijt>0,则称为正常返的马尔科夫链,否则称为不是正常返。
  • 可逆性:对于一个马尔可夫链,若存在一种状态分布 π⃗=[π0,π1,⋯ ]\vec{\pi}=[\pi_0, \pi_1, \cdots]π =[π0,π1,⋯],使得任意两个状态 i,ji,ji,j 都有 P(xt=i∣xt−1=j)⋅P(xt−1=j)=P(xt=j∣xt−1=i)⋅P(xt−1=i)P(x_t=i|x_{t-1}=j)\cdot P(x_{t-1}=j)=P(x_t=j|x_{t-1}=i)\cdot P(x_{t-1}=i)P(xt=i∣xt−1=j)⋅P(xt−1=j)=P(xt=j∣xt−1=i)⋅P(xt−1=i),即 pijπj=pjiπip_{ij}\pi_j=p_{ji}\pi_ipijπj=pjiπi(该式被称作细致平衡方程,detailed balance),则称该马尔可夫链是可逆的。

马尔可夫链性质的定理:

  • 不可约且非周期的有限状态马尔可夫链一定有唯一平稳分布存在;
  • 不可约且非周期,正常返的马尔可夫链一定有唯一平稳分布存在;
  • 遍历定理:对于一个不可约,非周期,正常返的马尔可夫链,设其唯一的平稳分布为 π⃗\vec{\pi}π ,则对于任意初始状态 x0=jx_0=jx0=j,有 lim⁡t→∞P(xt=i∣x0=j)=πi\lim_{t \to \infty } P(x_t=i|x_0=j)=\pi_ilimt→∞P(xt=i∣x0=j)=πi,也就是无论初始状态,未来经过无限时刻,状态分布都会趋近于平稳分布,同时对于一个定义在状态空间上的函数 f(x),x∈Sf(x),x\in Sf(x),x∈S,则 limt→∞1t∑k=1tf(xk)→Eπ⃗ [f(x)]=∑if(Si)πilim_{t \to \infty}\frac{1}{t}\sum_{k=1}^tf(x_k) \to E_{\vec{\pi}}\ [f(x)]=\sum _if(S_i)\pi_ilimt→∞t1∑k=1tf(xk)→Eπ [f(x)]=∑if(Si)πi。
  • 满足细致平稳方程的分布就是该马尔可夫链的平稳分布。

13.3. MCMC算法

MCMC适用于随机变量高维且相互不独立,密度函数复杂的情况,在这样的分布中求某个函数的期望 Ep(x)[f(x)]E_{p(x)}\left [f(x) \right ]Ep(x)[f(x)],主要思想是在随机变量的状态空间(所有取值)上定义一个满足便利定理的马尔可夫链,则其平稳分布下函数值的加权平均即为函数的数学期望。

因此MCMC计算期望的方法为 E^[f]=1n−m∑i=m+1nf(xi)\hat{E}[f]=\frac{1}{n-m}\sum_{i=m+1}^{n}f(x_i)E^[f]=n−m1∑i=m+1nf(xi),其中 mmm 是一个较大的数,使得 t>mt>mt>m 时的 xtx_txt 分布趋于平稳分布,在 mmm 之前的遍历称为燃烧期

因为马尔科夫链满足遍历定理,所以随机游走的起点不影响最终结果,因为都会收敛到平稳分布,这个方法比接收-拒绝采样法效率高;

13.3.1. Metropolis-Hastings算法

在MCMC算法中,第一个难点是定义一个马尔可夫链用于随机游走,使其满足遍历定理,无论从任何起点出发都将收敛到平稳分布,对于离散分布,要定义状态转移矩阵 {pij=P(xt=i∣xt−1=j)}\left \{ p_{ij}=P(x_t=i|x_{t-1}=j) \right \}{pij=P(xt=i∣xt−1=j)},对于连续分布,要定义状态转移核函数 p(i,j)=P(xt=i∣xt−1=j)p(i,j)=P(x_t=i|x_{t-1}=j)p(i,j)=P(xt=i∣xt−1=j)。

在MH算法中,可以定义一个建议分布 q(i,j)q(i,j)q(i,j) 较为简单易于操作,以及一个接收分布 α(i,j)=min⁡{1,p(j)q(i,j)p(i)q(j,i)}\alpha (i,j)=\min \{ 1,\frac{p(j)q(i,j)}{p(i)q(j,i)} \}α(i,j)=min{1,p(i)q(j,i)p(j)q(i,j)},则转移核 p(i,j)=q(i,j)α(i,j)={q(i,j)p(j)q(i,j)⩾p(i)q(j,i)q(j,i)⋅p(i)p(j)p(j)q(i,j)<p(i)q(j,i)p(i,j)=q(i,j)\alpha (i,j)=\left\{\begin{matrix} q(i,j) & p(j)q(i,j)\geqslant p(i)q(j,i)\\ q(j,i)\cdot \frac{p(i)}{p(j)} & p(j)q(i,j)< p(i)q(j,i) \end{matrix}\right.p(i,j)=q(i,j)α(i,j)={q(i,j)q(j,i)⋅p(j)p(i)p(j)q(i,j)⩾p(i)q(j,i)p(j)q(i,j)<p(i)q(j,i)。

通俗理解,MH算法的流程为,定义一个简易分布 q(i,j)q(i,j)q(i,j),作为转移函数进行随机游走,每次从状态 xt−1=jx_{t-1}=jxt−1=j 转移到状态 iii 时,计算接受分布 α(i,j)=min⁡{1,p(j)q(i,j)p(i)q(j,i)}\alpha (i,j)=\min \{ 1,\frac{p(j)q(i,j)}{p(i)q(j,i)} \}α(i,j)=min{1,p(i)q(j,i)p(j)q(i,j)},并在0-1之间采样随机数 uuu,若 u<α(i,j)u<\alpha (i,j)u<α(i,j) 则状态转移成功,xt=ix_{t}=ixt=i,否则停留在原状态 xt=jx_{t}=jxt=j。

由:
p(j)p(i,j)=p(j){q(i,j)p(j)q(i,j)⩾p(i)q(j,i)q(j,i)⋅p(i)p(j)p(j)q(i,j)<p(i)q(j,i)={p(j)q(i,j)p(j)q(i,j)⩾p(i)q(j,i)p(i)q(j,i)p(j)q(i,j)<p(i)q(j,i)=p(i){q(i,j)⋅p(j)p(i)p(j)q(i,j)⩾p(i)q(j,i)q(j,i)p(j)q(i,j)<p(i)q(j,i)=p(i)p(j,i) \begin{aligned} p(j)p(i,j)&=p(j)\left\{\begin{matrix} q(i,j) & p(j)q(i,j)\geqslant p(i)q(j,i)\\ q(j,i)\cdot \frac{p(i)}{p(j)} & p(j)q(i,j)< p(i)q(j,i) \end{matrix}\right.\\ &=\left\{\begin{matrix} p(j)q(i,j) & p(j)q(i,j)\geqslant p(i)q(j,i)\\ p(i) q(j,i) & p(j)q(i,j)< p(i)q(j,i) \end{matrix}\right.\\ &=p(i)\left\{\begin{matrix} q(i,j)\cdot \frac{p(j)}{p(i)} & p(j)q(i,j)\geqslant p(i)q(j,i)\\ q(j,i) & p(j)q(i,j)< p(i)q(j,i) \end{matrix}\right.\\ &=p(i)p(j,i) \end{aligned} p(j)p(i,j)=p(j){q(i,j)q(j,i)⋅p(j)p(i)p(j)q(i,j)⩾p(i)q(j,i)p(j)q(i,j)<p(i)q(j,i)={p(j)q(i,j)p(i)q(j,i)p(j)q(i,j)⩾p(i)q(j,i)p(j)q(i,j)<p(i)q(j,i)=p(i){q(i,j)⋅p(i)p(j)q(j,i)p(j)q(i,j)⩾p(i)q(j,i)p(j)q(i,j)<p(i)q(j,i)=p(i)p(j,i)

满足细致平衡方程,因此上面所定义的转移核函数是可逆的,即存在某个分布 p(x)p(x)p(x) 使得 p(i)p(j,i)=p(j)p(i,j)p(i)p(j,i)=p(j)p(i,j)p(i)p(j,i)=p(j)p(i,j),同时该分布为平稳分布。

Metropolis选择 :将建议分布设为可逆分布,即 q(i,j)=q(j,i)q(i,j)=q(j,i)q(i,j)=q(j,i),此时接收分布简化为 α(i,j)=min⁡{1,p(j)p(i)}\alpha(i,j)=\min\{ 1,\frac{p(j)}{p(i)} \}α(i,j)=min{1,p(i)p(j)},这是MH算法最初采用的方法,将 q(i,j)q(i,j)q(i,j) 定义为一个以 jjj 为均值,方差为常数矩阵的正态分布,或是其他在 jjj 附近概率较高的简单分布。

单分量Metropolis-Hastings算法 :当多元变量分布抽样困难时,可以逐步对变量的每一个维度的分量进行抽样,此时建议分布变为 q(xt(m)∣xt(−m),xt−1(m))q(x_t^{(m)}|x_t^{(-m)},x_{t-1}^{(m)})q(xt(m)∣xt(−m),xt−1(m)),其中 xt(m)x_t^{(m)}xt(m) 为t时刻状态的第 mmm 个分量,xt(−m)={xt(1),xt(2),⋯ ,xt(m−1),xt−1(m+1),⋯ ,xt−1(K)}x_t^{(-m)}=\{ x_t^{(1)}, x_t^{(2)}, \cdots, x_t^{(m-1)}, x_{t-1}^{(m+1)}, \cdots, x_{t-1}^{(K)} \}xt(−m)={xt(1),xt(2),⋯,xt(m−1),xt−1(m+1),⋯,xt−1(K)},类似于每次固定 K−1K-1K−1 个维度,更新一个维度的过程,同时接受分布 α(xt(m)∣xt−1(m),xt(−m))=min⁡{1,p(xt(m)∣xt(−m))q(xt−1(m)∣xt(m),xt(−m))p(xt−1(m)∣xt(−m))q(xt(m)∣xt−1(m),xt(−m))}\alpha (x_t^{(m)}|x_{t-1}^{(m)}, x_t^{(-m)})=\min\{ 1,\frac{p(x_{t}^{(m)}|x_{t}^{(-m)})q(x_{t-1}^{(m)}|x_{t}^{(m)}, x_{t}^{(-m)})}{p(x_{t-1}^{(m)}|x_{t}^{(-m)})q(x_t^{(m)}|x_{t-1}^{(m)}, x_{t}^{(-m)})} \}α(xt(m)∣xt−1(m),xt(−m))=min{1,p(xt−1(m)∣xt(−m))q(xt(m)∣xt−1(m),xt(−m))p(xt(m)∣xt(−m))q(xt−1(m)∣xt(m),xt(−m))}。

13.3.2. 吉布斯抽样

满条件分布 :对于一个多元概率联合分布 p(x),x=[x(1),x(2),⋯ ,x(K)]Tp(x),x=[x^{(1)}, x^{(2)}, \cdots, x^{(K)}]^Tp(x),x=[x(1),x(2),⋯,x(K)]T,定义一个条件概率分布 p(xI∣x−I)p(x^I|x^{-I})p(xI∣x−I),其中 III 是变量维度的一个子集,即 xI={x(m),m∈I},x−I={x(m),m∉I}x^I=\{ x^{(m)},m\in I \}, x^{-I}=\{ x^{(m)},m\notin I \}xI={x(m),m∈I},x−I={x(m),m∈/I},也就是所有维度都在括号里出现,无论在 | 之前还是之后,这个条件概率分布叫做满条件分布,满条件分布满足性质:p(xt−1I∣(xt−1−I)p(xtI∣(xt−I)=p(xt−1)p(xt)\frac{p(x^I_{t-1}|(x^{-I}{t-1})}{p(x^I{t}|(x^{-I}{t})}=\frac{p(x{t-1})}{p(x_{t})}p(xtI∣(xt−I)p(xt−1I∣(xt−1−I)=p(xt)p(xt−1),左边计算大大方便,因此可以用满条件分布简化一些计算。

吉布斯抽样的方法类似于单分量MH算法,不同的是吉布斯抽样使用 xt−1x_{t-1}xt−1 的满条件分布代替建议分布,由于满条件分布比例于原分布的性质,使用满条件分布可以完全模拟原分布 p(x)p(x)p(x),因此无需MH算法中的接受分布,或者说接受率为1.

相关推荐
i爱校对9 分钟前
爱校对团队服务全新升级
人工智能
KL1328815269315 分钟前
AI 介绍的东西大概率是不会错的,包括这款酷铂达 VGS耳机
人工智能
vigel199017 分钟前
人工智能的7大应用领域
人工智能
人工智能训练33 分钟前
windows系统中的docker,xinference直接运行在容器目录和持载在宿主机目录中的区别
linux·服务器·人工智能·windows·ubuntu·docker·容器
飞扬的风信子41 分钟前
RAG基础知识
机器学习
南蓝1 小时前
【AI 日记】调用大模型的时候如何按照 sse 格式输出
前端·人工智能
robot_learner1 小时前
11 月 AI 动态:多模态突破・智能体模型・开源浪潮・机器人仿真・AI 安全与主权 AI
人工智能·机器人·开源
Mintopia1 小时前
🌐 动态网络环境中 WebAIGC 的断点续传与容错技术
人工智能·aigc·trae
后端小张1 小时前
【AI 学习】从0到1深入理解Agent AI智能体:理论与实践融合指南
人工智能·学习·搜索引擎·ai·agent·agi·ai agent
Mintopia1 小时前
🧩 Claude Code Hooks 最佳实践指南
人工智能·claude·全栈