Stan 中的不同过渡

机器算法验证 r 贝叶斯 马尔可夫链蒙特卡罗 斯坦
2022-03-17 06:33:44

直观地说,“热身后有 214 个不同的过渡”的警告是什么意思。意思是?

我知道获得的样本是无用的,增加adapter_delta和max_treedepth以及降低步长会有所帮助。此外,重新参数化也有帮助。

我想知道当发生发散过渡时实际发生了什么。

在 Stan 参考手册的第 14.5 节发散转换中,它指出“在哈密顿量发散后沿模拟轨迹的位置将永远不会被选为 MCMC 算法的下一次绘制”。这是否意味着在发散过渡之后,随后的过渡都被拒绝了?因此最后接受的提案(和当前状态)将在后验样本中多次返回?

我注意到,在使用分层模型时,我得到了许多不同的转换(这在互联网上的博客中有很好的记录),但我的一些参数(似乎是)收敛,而其他参数则不是。但是,在联合模型中,每个命题都应该是一个参数向量,如果这个建议在发散转换后被拒绝(以及之后的所有其他人,如上所述),所有边际分布不应该是发散的吗?

诊断图似乎表明,说μ已经收敛并且σ没有。我的一个例子是σ标准偏差为零。我认为这意味着在第一个提案之后存在分歧的过渡,因此所有其他提案σ被拒绝,因此,σ在其返回的样本中只有一个唯一值。但是,我的样本μ曾经(或看起来)很好。但建议不应该(μ,σ)在第一次提案后被拒绝,因此μsample 也应该只有一个唯一值。

现在考虑一个只有一个参数的模型。假设我的初始命题远离后验密度高的区域,并假设这条链永远不会到达后验密度高的区域。这是当 Stan 返回消息说“热身后有 x 个不同的转换。”时吗?既然它可以看到 MCMC 代码没有从感兴趣的后验分布中采样“足够”?

我认为这种直觉是错误的一个原因是因为我过去运行过没有收敛的 MCMC 代码(仅仅是因为没有运行足够的迭代)并且我没有收到此错误消息。

任何人都可以直观地解释过渡分歧时发生的情况吗?如果提案最终到达高后密度区域会发生什么?是否有可能找到 MCMC 采样器发散的位置,然后丢弃样本直到它们再次收敛?

如果哈密顿量发散沿着模拟轨迹的位置将永远不会被接受。如果我有 214 个发散过渡,这一定意味着我进入了一个发散阶段,然后切换回收敛阶段,然后又切换到另一个发散阶段。否则,我应该只有一个发散过渡。这很难理解,因为根据手册,在轨迹发散后不接受任何提案,所以在轨迹发散后,它不应该一直发散到最后吗?另外,为什么 MCMC 代码不只是在找到发散轨迹后终止?x 个不同的跃迁如何累积?

1个回答

Stan 中的发散过渡告诉您,围绕该发散过渡的后验分布区域在几何上难以探索。

例如,这是手册中的引述:

欧几里得 HMC(除了代码中的错误)中的发散转换的主要原因是后曲率变化很大,因为小步长在某些区域效率太低,而在其他区域发散。如果步长太小,采样器会变得低效并在掉头之前停止(达到 NUTS 中的最大树深度);如果步长太大,哈密顿量模拟就会发散。

https://mc-stan.org/docs/2_19/reference-manual/divergent-transitions.html

基本上,这意味着斯坦提出的哈密顿轨迹与它应该遵循的不同。因此,它预测它应该在参数空间中的某个点具有的 log(密度)的期望值与它在该点的实际值不同。当 Stan 检测到这个问题时,它就知道出了问题并拒绝该转换并基本上“再试一次”。这在此处以图形方式演示:https ://dev.to/martinmodrak/taming-divergences-in-stan-models-5762

您有多个转换的原因是,由于 Stan 拒绝了该特定转换,它将尝试新的转换,而这些可能会或可能不会导致分歧。现在,您不能在遇到第一个分歧时停止采样的原因是分歧并不总是一个问题。

例如,如果您拟合一个 idk 为 10/10,000 的转换发散的模型,并且它们随机分布在参数空间中,那么可能没有问题。但是,如果您最终将这 10 个不同的转换集中在参数空间的某个部分(或者您有更多),那么 Stan 可能无法准确估计您的模型参数。在这种情况下,您应该考虑重新制定模型。基本上,分歧是帮助使您的模型更好的指南,但单个分歧的存在不一定是致命的。

例如,Betancourt 的《哈密顿蒙特卡洛概念介绍》(https://arxiv.org/pdf/1701.02434.pdf)的第 46 页显示了如何将分歧定位到参数空间的一部分,从而忽略它们/或在你得到对他们来说,充其量只会使您的推断产生偏差(因为您不包括那个具有挑战性的区域)。