马尔科夫蒙特卡洛(MCMC)模拟
问题:找后验分布
假设我们有一组随机变量 θ,以及观测数据 y,我们想要找到参数的后验分布 p(θ ∣ y)。根据贝叶斯定理,可以将后验分布表示为:
p(θ ∣ y)=∫p(y ∣ θ)×p(θ) dθp(y ∣ θ)×p(θ)
其中,p(y ∣ θ) 是假设θ下的观测到y的概率,可以根据模型来计算;p(θ) 是先验分布,一般是假设的。
在实际应用中,分母的计算通常非常困难,因为它涉及到对参数空间进行积分,所以分母很难算,但是分母是一个常数,即使不管它也不影响后验分布的形状,所以可以简化表示为:
p(θ ∣ y)∝p(y ∣ θ)×p(θ)
分子是可以计算的,因为先验分布p(θ)的概率密度函数是已知的,而p(y ∣ θ)也可以通过模型来计算。
所以理论上只需要对参数空间进行均匀采样,比如10均分,得到一系列参数θ的样本,然后根据这些样本计算分子,就能得到后验分布的近似值,也能找到后验分布的峰值。但是在高维空间中,均匀采样的效率非常低,比如如果有10个参数,每个参数均匀采样10个点,那么就需要1010次采样才能覆盖整个参数空间,这在计算上是不可行的。
马尔科夫链蒙特卡洛(MCMC)模拟
除了均匀采样,还可以使用马尔科夫链蒙特卡洛(MCMC)模拟直接从后验分布中采样,只需要知道后验分布的比例关系(即分子)。
马尔科夫链是指一组随机状态,其中每个状态只依赖于前一个状态,所以一个马尔科夫链的状态一直转移,样本多了之后,就会收敛到一个稳定的分布 π(θ),π(θ)表示θ的概率密度函数。
MCMC模拟就是通过构造一个马尔科夫链来生成一系列参数θ的样本,当样本数量足够多时,这些样本就会近似于后验分布 p(θ ∣ y)。关键是如何构造这个马尔科夫链,使得它的稳定分布就是我们想要的后验分布。
Metropolis-Hastings 算法
Metropolis-Hastings 算法是这样实现MCMC模拟的:
- 从一个当前状态开始 θcurrent。
- 提议一个新的状态 θnew,这里提议分布可以是任意的,表示为 q(θnew∣θcurrent)。
- 计算接受概率 α:
α=p(y ∣ θcurrent)×p(θcurrent)×q(θnew ∣ θcurrent)p(y ∣ θnew)×p(θnew)×q(θcurrent ∣ θnew)
这里的接受概率是一个精心设计的比例关系,确保了马尔科夫链的稳定分布是我们想要的后验分布,后面证明这个接受概率的设计是合理的。
- 如果 α≥1,则接受并转移到新的状态 θnew。
- 如果 α<1,则以概率 α 接受新的状态 θnew,否则保持当前状态 θcurrent,但是无论如何都将当前状态添加到样本中。
- 重复直到收集到足够的样本。
结果生成了一个马尔科夫链的样本,也就是一个参数θ的样本集合,这些样本会近似于后验分布 p(θ ∣ y)。
证明为什么上面的马尔科夫链会收敛到后验分布
定性分析
接受概率 α 是一个比值。
分子是 p(y ∣ θnew)×p(θnew)×q(θcurrent ∣ θnew),前面两项其实就是是后验分布 π(θnew)=p(y ∣ θnew)×p(θnew)。第三项当提议分布是均匀的时候为常数。所以分子表示了新状态 θnew 的后验概率密度,分母表示了当前状态 θcurrent 的后验概率密度。
如果新状态的后验概率密度更高,那么接受概率 α 就大于1,必然接受新状态;如果新状态的后验概率密度更低,那么接受概率 α 就小于1,以一定概率接受新状态,这样就保证了马尔科夫链会倾向于向后验分布的高概率区域移动。所以最终高概率区域的样本会更多,低概率区域的样本会更少,这样就能近似于后验分布。
证明
严格一点的证明是需要利用细致平衡(detailed balance)条件来证明的。
对于一个马尔科夫链,转移概率为 T(θa→θb),如果任意两个状态 θa 和 θb,满足:
π(θa)T(θa→θb)=π(θb)T(θb→θa)
那么分布 π(θ) 就是这个马尔科夫链的稳定分布。
上面的细致平衡条件可以理解为,左边是状态 θa 附近单位长度的粒子流向状态 θb 的数量,右边是状态 θb 附近单位长度的粒子流向状态 θa 的数量,如果这两个概率相等,那么就说明在这个马尔科夫链中,状态 θa 和 θb 之间的粒子流是平衡的。
后面只需要证明 Metropolis-Hastings 算法所构造的转移概率满足细致平衡条件,就能证明这个马尔科夫链的稳定分布是我们想要的后验分布。
对于任意两个状态 θa 和 θb,Metropolis-Hastings 算法的转移概率有两种情况:
T(θa→θb)={q(θb∣θa)⋅α,q(θb∣θa),α<1α≥1
其中
α=p(y∣θa)p(θa)q(θb∣θa)p(y∣θb)p(θb)q(θa∣θb)
对于 α<1 的情况,T(θa→θb)取上面的表达式,但是T(θb→θa)刚好相反为q(θa∣θb),代入细致平衡条件:
π(θa)q(θb∣θa)⋅α=π(θb)q(θa∣θb)
里面的 π(θa)=p(y∣θa)p(θa),π(θb)=p(y∣θb)p(θb),代入发现 α 的定义正好满足细致平衡条件。
对于 α≥1 的情况,也是类似的。