了解 MCMC:替代方案是什么?

机器算法验证 贝叶斯 马尔可夫链蒙特卡罗
2022-03-24 01:17:12

第一次学习贝叶斯统计;作为理解 MCMC 的一个角度,我想知道:它是在做一些根本无法以其他方式完成的事情,还是只是做一些比其他方法更有效的事情?

举例来说,假设我们在给定数据 P(x,y,z|D) 给定一个计算相反模型的模型 P(D|x,y,z))要使用贝叶斯定理直接计算,我们需要这里指出的分母 P(D) 但是我们可以通过积分来计算吗,比如:

p_d = 0.
for x in range(xmin,xmax,dx):
    for y in range(ymin,ymax,dy):
        for z in range(zmin,zmax,dz):
            p_d_given_x_y_z = cdf(model(x,y,z),d)
            p_d += p_d_given_x_y_z * dx * dy * dz

这会起作用(尽管变量数量较多时效率很低)还是有其他原因会导致这种方法失败?

3个回答

您正在描述后验的网格近似,这是一种有效的方法,尽管不是最流行的。在很多情况下,可以分析计算后验分布。蒙特卡洛马尔可夫链或其他近似方法是获取后验分布样本的方法,有时在无法找到解析解时有效。

可以找到的分析解决方案通常是“共轭”家族的案例,您可以通过谷歌搜索找到更多相关信息,例如参见https://en.wikipedia.org/wiki/Conjugate_prior

作为第一个示例,如果您的先验在 上p是一致的[0, 1],其中p是简单二项式实验中的成功参数,则后验等于 Beta 分布。在这种情况下,可以显式地进行积分或求和。

如果您有有限多个参数选择,或者您在示例中使用网格近似,则可能只需要一个简单的求和。但是,如果您有几个变量并且想要使用密集网格,那么计算的数量可能会迅速爆炸。

有几种从后验采样的算法。Hamiltonian Monte Carlo,特别是 NUTS 采样器,现在很流行并在stan和中使用PyMC3,Metropolis Hastings 是经典之作。变分推理是一个相对较新的方法,实际上不是一种抽样方法,而是一种获得近似值的不同方法。目前,包括分析解决方案在内的任何方法都不是最好的,它们在特定情况下都可以很好地工作。

计算分母无助于理解后验分布(或任何分布)的性质。正如在最近的一个问题中所讨论的,要知道 d 维向量 $\theta$ 的密度是 $$π(θ|x)∝\exp\{−||θ−x||^2−||θ +x||^4−||θ−2x||^6\},\qquad x,θ∈ℝ^d,$$ 没有告诉我这个后验分布的感兴趣区域在哪里。θ is

π(θ|x)exp{||θx||2||θ+x||4||θ2x||6},x,θd,
does not tell me where are the regions of interest for this posterior distribution.

蒙特卡罗方法是利用随机数的技术。目标是找到根据 $P(x)$ 分布的样本 $x$,并假设 $P(x)$ 是复杂的。这意味着我们不能直接评估它。如果不是这种情况,您可以通过分析计算它。在您的示例中,这将是 $P(D)$。x that are distributed according P(x) and it is assumed that P(x) is complex. This means that we cannot evaluate it directly. If this is not the case, you can just compute it analytically. As in your example this would be P(D).

您提出的实质上是通过 $x$ 和 $y$ 的空间进行网格搜索。如果 $x$ 和 $y$ 是高维的并且如果它们是连续的,那么这可能是非常详尽的。另一个问题是您必须在每一步中计算 cdf。x and y. This can be very exhaustive if x and y are high dimensional and infeasible if they are continuous. Another problem is that you have to compute the cdf in each step.

MCMC 方法试图通过提出候选样本 $c_i$ 然后根据某种度量接受或拒绝它们来解决这个问题。理论上,这可以比通过所有可能的组合更快。所以基本上你会找到从之前的 $P(D)$ 中提取的样本。这里的一个理论问题是,这仅是在抽取的样本数量有限的情况下,即在 $\infty$ 个样本之后。所以你不知道什么时候停止马尔可夫链。ci and then accepting or rejecting them depending on some measure. This can in theory be faster then going through all possible combinations. so basically you find samples that are drawn from the prior P(D). A theoretical problem here is that this is only the case in the limit number of samples drawn, i.e. after samples. So you don't know when to stop the Markov Chain.