|
模型求解系列(1)-Gibbs,MCMC,EM,Variational inference
1. MCMC具体方法:
在蒙特卡洛模拟中,我们在后验分布中抽取样本,当这些样本独立时,利用大数定律样本均值会收敛到期望值。如果得到的样本是不独立的,那么就要借助于马尔科夫链进行抽样。MCMC方法就是为了这个目的而诞生的。马尔科夫链的一个很重要的性质是平稳分布。简单的说,主要统计性质不随时间而变的马尔科夫链就可以认为是平稳的。数学上有马氏链收敛定理,当步长n足够大时,一个非周期且任意状态联通的马氏链可以收敛到一个平稳分布π(x)。这个定理就是所有的MCMC方法的理论基础。我们对一个马氏链进行状态转移。设从初始分布π0出发,假设到第n步这个链可以收敛到平稳分布π0,那个这个过程可以表示为: X0 π0(x),X1 π1(x),...,Xn πn(x)=π(x),Xn+1 π(x),Xn+2 π(x),...在利用马氏链进行抽样时,在收敛之前的一段时间,比如上面的前n-1次迭代,各个状态的边际分布还不能认为是稳定分布,所以在进行估计的时候,应该把前面的这n-1个迭代值去掉。这个过程称为“burn-in”。
MCMC方法就是构造合适的马尔科夫链进行抽样而使用蒙特卡洛方法进行积分计算。 既然马尔科夫链可以收敛到平稳分布。我们可以建立一个以π为平稳分布的马尔科夫链,对这个链运行足够长时间之后,可以达到平稳状态。此时马尔科夫链的值就相当于在分布π(x)中抽取样本。利用马尔科夫链进行随机模拟的方法就是MCMC。
2. Gibbs sampling思路:
由于MLE和MAP进行的估计都是选择了概率最大的点作为最终的结果,这样丢失了取其他小概率点的可能性,所以提出使用贝叶斯估计。
在贝叶斯估计中,计算贝叶斯估计的后验概率就要进行积分。但积分往往是难以计算的,从而贝叶斯估计很难有解析解。Gibbs采样允许我们通过采样逼近一个概率分布,而不需要积分得到概率分布的精确形式。
如何采样?构建一个markov网络,其节点是p(z)的各个可能的取值zi,各节点之间转移的概率为p(z)。p(zi)与访问节点zi的可能性相关(即与zi本身在p(z)中的概率成正比)。另外,t时刻条件下t+1时刻的状态取值概率可表达为:p(z(t+1)|z(t))=p(zj|zi). MCMC采样即通过不断迭代,寻找一组稳定的状态(p(z)的取值),再进行平均,即为服从概率分布p(z)的一个合理取值。
Gibbs采样是MCMC的一种特殊情况,它要求每个状态zi至少是两维以上的变量集合,z(t)=<za(t),zb(t),zc(t),zd(t)>。其中每维za(t)对应模型中的一个参数变量。具体步骤如下:
(1)写出所有变量的联合分布
(2)简化联合分布的形式 collapsed sampling
(3)确定条件分布的形式p(za(t+1)|zb(t),zc(t),zd(t)) block sampling
(4)给出采样器的最终形式
Gibbs在每个循环都会产生变量的值,丢弃达到稳定状态之前的结果,对后面的T个采样值取平均即为各个变量的值。
The standard setup for Gibbs sampling over a space of variables a,b,c (I'll assume there are no exploitable independences) is:
Draw a conditioned on b,c
Draw b conditioned on a,c
Draw c conditioned on a,b
This is quite a simple story that, in some cases, be "improved." For instance, it is often possible to jointly draw a and b, yielding:
Draw a,b conditioned on c
Draw c conditioned on a,b
This is the "blocked Gibbs sampler."
Another variant, that is commonly used in our community, is when one of the variables (say, b) can be analytically integrated out, yielding:
Draw a conditioned on c
Draw b conditioned on a,c
Draw c conditioned on a,b
This is the "collapsed Gibbs sampler." In fact, we can often collapse b out entirely and, in cases where we don't actually care about it's value, we get:
Draw a conditioned on c
Draw c conditioned on a
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-25 13:32
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社