前面的采样方法受限于高维,这里MCMC解决了这个问题。我们知道很多MC都有一个稳态特性,此时一个MC对应于一个概率分布,如果能使这个分布和要采样的分布p(z)一样,那么每次对p(z)的采样就等同于状态的一次转移。如果我们将转移概率分成两个部分:建议转移和判断转移,即先从当前状态和建议转移获得样本,然后通过判定标准判断是否接受样本,这样就可以实现对该MC的每次状态转移采样。如果MC已经达到稳定状态,那么每次状态转移的结果都是可以接受的。
但是这里涉及到几个问题:
1、如何保证MC可以有稳态?
2、如何构造转移概率保证MC收敛于p(z)?
3、如何避免随机游走和高拒绝率的问题?
NOTE:这里提一下几种方法的关系,MCMC是一种利用建议概率和待采样概率构建稳态MC的转移概率,以便高维采样的思想,具体实现方法有MH法 、Gibbs法和slice法。其中gibbs方法是MH方法的一个特例,slice法是为了解决第三个问题的一个自适应改进方法。
MC
定义:
z(m)取值为状态空间,m为时间或者step。
当一系列随机变量满足p(z(m+1)|z(1),...,z(m))=p(z(m+1)|z(m)),则构成MC。
稳态:
达到一定次数后,满足:π(zm+1)=∑zmp(zm,zm+1)∗π(zm)
稳态满足条件(或关系):
1、如果存在K,对于每一个(x->y),k步p(x->y)>0
2、状态两两相连
3、每一个状态都有self-transition。
4、平衡方程:
p(zm,zm+1)∗π(zm)=p(zm+1,zm)∗π(zm+1)
MH方法
NOTE:参考mooc网的斯坦福的PGM视频
(1)平衡方程
该方程可以保证MC的收敛性,左右都对x积分(求和)就可以证明
(2)MH Chain
这里先说一下大致过程:
先选取建议分布:Q(x->x’)
确定接受概率:A(x->x’)
对于每一个状态x,采样x’~Q(x->x’)
对该样本以A(x->x’)概率接受
->如果接受,x更新为x’
->否则x不变
END
这里转移概率T(x->x’)=Q(x->x’)*A(x->x’);
T(x->x)=Q(x->x)+Q(x->x’)*A(x->x)
为了满足平衡方程:
π(x)Q(x−>x′)A(x−>x′)=π(x′)Q(x′−>x)A(x′−>x)
然后有:
A(x→x′)A(x′→x)=π(x′)Q(x′→x)π(x)Q(x→x′)
不失一般性,令A(x’->x)=1,那么可以得到:
A(x→x′)=min(1,π(x′)Q(x′→x)π(x)Q(x→x′))
这就是MH方法的接受概率。
那么怎么选择Q呢?Q首先必须大于0,然后要保证两点:使状态转移步长要大但是不能使接受概率太低,其实就是要解决开始提出的第三个问题。
NOTE:
转移步长:可以参考random walk,比如以(-1:0.25;0:0.5,1:0.25)概率随机游走为例,第i步后,当前随机变量的方差为i/2,也就是说随机游走的距离平均是i的平方根,这对状态遍历是十分不利的,当然不容易达到收敛了。
接受概率过低:试想如果转移概率方差很大,有可能导致一个高概率状态转移到低概率状态,从而使接受概率过低,样本不能接受。
Gibbs采样
gibbs过程比较简单:
比如要对p(z1,z2,z3)采样,首先初始化{zi},然后:
for i=1:T,
->sample zi+11∼p(z1∣zi2,zi3)
->sample zi+12∼p(z2∣zi+11,zi3)
->sample zi+13∼p(z3∣zi+11,zi+12)
现在来证明为什么这个过程就是从p(z1,z2,z3)进行采样。
prove:整个采样过程中p(z1,z2,z3)都是不变的。因为初始化一个样本点可以认为服从p(z1,z2,z3),然后第一次采样后p(z2,z3)
没有变化,是从原概率积分得到的,而根据第一次采样pnew(znew1,z2,z3)=pold(zold1∣z2,z3)∗pold(z2,z3)=pold(z1,z2,z3)也就是说是服从原概率分布。这样MC必然收敛于p(z1,z2,z3)。
也可以从MH方法来理解,计算接受概率:
A(x→x′)=min(1,π(x′)Q(x′→x)π(x)Q(x→x′))
其中:
π(x′)=π(x′k|x∖k)∗π(x∖k)
Q(x′→x)=π(xk|x′∖k)
注意到x′∖k=x∖k
带入可知A=1。表明只要采样就接受。