因此,可逆马尔科夫链一定有唯一平稳分布,所以可逆马尔科夫链满足遍历定理的条件 。
马尔科夫链蒙特卡洛法
我们先来看一下 MCMC 方法的大致思路:在随机变量 x 的状态空间 S 上定义一个满足遍历定理的马尔科夫链
,使其平稳分布就是抽样的目标分布 p(x) 。然后在这个马尔科夫链上进行随机游走,每个时刻得到一个样本 。根据遍历定理,当时间趋向于无穷时,样本的分布趋近于平稳分布,样本的函数均值趋近函数的数学期望 。
读者可能会和笔者刚读到这段话的时候也有些疑惑:1)如何定义这个能满足条件的马尔科夫链呢?2)这里的随机游走(转移核)采样具体是怎么实现的?
对于第一个问题,定义满足条件的马尔科夫链,大家也许猜到了可以用可逆马尔科夫链的性质定义一些特殊的转移核来保证遍历定理成立 。但是我们又该如何保证这个特殊的转移核最后可以走到我们期望采样的复杂分布 P(x) 呢?看起来还是一头雾水 。我们接着往下看 。
-
- 算法是马尔科夫链蒙特卡洛法的代表算法 。假设要抽样的终极概率分布是 p(x),它采用的转移核为:
其中 q(x,x’) 是另一个卡尔科夫链的转移核,并且是一个容易抽样的分布,被称之为建议分布 。而 α(x,x′) 被称为接受分布:
文章插图
到这里为止,读者可能觉得好像又和之前的拒绝-接受法很相似了呢 。但是不同的地方是之前我们在拒绝-接受法里需要定义的建议分布还是比较难设定的,因为它需要满足一定的条件才可以 。但是这里的建议分布相是一个比较容易抽样的分布 。同理,我们根据建议分布 q(x,x′) 来进行随机游走,产生样本后,按照接受分布 α(x,x′) 来确定是否要进行转移 。
那接下来,我们需要解决的主要问题是,如何证明通过这个方式最后生成的样本是符合 p(x) 分布的呢?也就是说,如何证明这个转移核 p(x,x′) 满足遍历定理以及最后的平稳分布是 p(x) 呢?
证明略 。其实我们只要能证明这个构造出来的转移核 p(x,x′) 对应的马尔科夫链是可逆的,并且其对应的平稳分布就是 π 即可 。也就是说需要证明:
证明:
文章插图
并且根据细致平衡方程,p(x) 即为这个转移核 p(x,x′) 的平衡分布 。
在给出 M-H 方法的总体流程之前,我们先来看几个特殊的建议分布 。
建议分布
对称建议分布:假设我们的建议分布是对称的,即 q(x,x′)=q(x′,x),那么我们的接受分布 α(x,x′) 可以写成:
文章插图
特别地,q(x,x′)=q(|x?x′|) 被称为随机游走算法,例子:
文章插图
读者也很容易发现,当正态分布的方差为常数,均值为 x,参数为 x′ 的这些转移核都满足这种类型 。这种类型的转移核的特点是,当 x′ 在均值 x 附近的时候,其概率也就越高 。
独立抽样:前面的抽样过程中,可以发现下一个样本总是依赖于前一个样本 。那么我们假设设定的建议分布 q(x,x’) 与当前状态 x 无关,即 q(x,x′)=q(x′), 此时的接受分布 α(x,x′) 可以写成:
文章插图
书上说,这样的抽样虽然简单,但是收敛速度慢,通常选择接近目标分布 p(x) 的分布作为建议分布 q(x) 。
接下来,我们看一下 M-H 方法的总体过程 。
- 【学习笔记60】JavaScript原型链的理解
- 2016如何突破自我,这么疯狂的事谁敢做
- java 图片如何上传_【Java】基础46:如何上传图片?
- unity python服务器_Unity如何连接服务器: 一个简单的例子
- python如何安装whl_python3 whl怎么安装
- chatgpt赋能python:Python绝对值求和:如何用Python求一个
- 如何优雅的拟合非线性曲线
- 程序员该如何有效的找工作?
- 【C语言】struct结构体内存如何分配
- 如何在无公网环境下访问内网搭建的个人kindle书库【内网穿透】