MCMC:Metropolis-Hastings抽样

2024-01-03 18:59:24

马尔可夫链有两个要素:

  1. 一步转移概率矩阵:P=(P_{ij})_{ij} \quad P_{ij}=P(X_1=j|X_0=i)
  2. 初始分布:Q

如果这两个要素都确定了,这个链的转移行为就被完全确定下来了。我们就可以求得极限分布?\pi,只需解下面这个方程即可。

\pi=\pi P

但是MCMC试图解决的问题刚好是反过来。即已知极限分布?\pi,如何求得一步转移概率矩阵?P

如果这件事情能够做到,而我们的目标是想要获得服从分布?\pi?的伪随机数。那么我们只需要找到一个符合条件的矩阵?P,然后运行这条马氏链直到达到稳态,从这一时刻之后起,生成的每一个随机数都可以当做我们的采样样本。

下面,我们将分三步来说明解算这个问题的方法:

Step1. 什么是细致平衡方程(Detailed Balance)

如果满足如下方程:

\pi_iP_{ij}=\pi_jP_{ji}

我们管这样的关系叫做细致平衡:当你取得平衡之后,各个状态之间的相互的转移行为是处于一种平衡态上的,即转移出去的量和转移进来的量是相等的。也可以看成是在做某种平衡的物质交换。

满足细致平衡方程的马氏链一定处于稳态:\pi=\pi P。注意,这是一个充分条件,证明如下:

(\pi P)_j=\sum\limits_{i}\pi_i P_{ij}=\sum\limits_{i}\pi_j P_{ji}=\pi_j\quad(\sum\limits_{j}P_{ij}=1)

Step2. 任取一个一步转移概率矩阵作为一个 Proposal

\forall \ P=(P_{ij})_{ij}\quad (\mbox{Proposal})

Step3. 对 Proposal 的矩阵进行如下的校正(Correction)

\widetilde{P}_{ij}=P_{ij}\min\{1,\frac{\pi_j P_{ji}}{\pi_iP_{ij}}\}

?\widetilde{P}_{ij}?不难发现满足细致平衡方程:\pi_i\widetilde{P}_{ij}=\pi_j\widetilde{P}_{ji},于是?\widetilde{P}_{ij}?也就是我们要找的那个 P

这个方法的名字叫做 Metropolis-Hastings

其实只要基于细致平衡方程,我们不难从物质交换的角度理解 Step3 的校正所干的事情:如果?i\to j?的物质?\pi_i P_{ij}?超过了?j\to i?的物质\pi_j P_{ji}?,那么 Metropolis-Hastings 的策略就是:P_{ji}?不动,P_{ij}?减小,而?P_{ij}?减小所乘的这一项?\frac{\pi_j P_{ji}}{\pi_iP_{ij}}?不难看成是先单位化,再确定一个放缩量,使之达到和?j\to i?一样的物质交换水平,即:

\pi_i\widetilde{P}_{ij} =\pi_iP_{ij}\cdot\frac{\pi_j P_{ji}}{\pi_iP_{ij}}=\pi_j P_{ji}

但是我学的时候一直存在一个疑问,就是?\widetilde{P}_{ij}?的值校正之后可能会减小,那么?\widetilde{P}?是否还满足一步转移概率矩阵行和为1的条件呢?据说只要将减小的损失部分补到对角线上就可以了。但是这一点我始终搞不太明白为什么。因为教材普遍都是用接受拒绝策略一带而过,并没有触及这个问题。

文章来源:https://blog.csdn.net/weixin_55252589/article/details/135363648
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。