我在真实研究中用过这三种采样器,常常没有仔细考虑为什么选择其中一种而不是另一种。emcee 是我最早使用的采样器,当我把似然函数迁移到 JAX 后才开始用 NUTS,而每当有人要求计算贝叶斯因子时,我就会用到 dynesty。最终我意识到,对于一个我并不already理解的问题,我无法说出自己会信任哪一个。
大多数采样器比较关注速度,但如果样本是错误的,速度就没有太大意义,而只有在知道正确答案时才能检验样本是否错误。因此,我选择了三个足够简单、可以精确求解的问题,通过密集网格或解析方法求解,并把每个采样器与真实答案而不是彼此相比来评分。
NUTS 是最快的,在平滑问题上快两到四倍,但它在多峰问题上完全失败,而且其诊断信息对此给出了明确提示。emcee 在简单问题上表现良好,但在多峰问题上给出了自信却错误的答案,其默认输出中没有任何警告。dynesty 是唯一找到所有峰并给出正确证据值的采样器,不过其证据误差条偏于乐观。
三个测试问题难度逐步提高。第一个是对照问题:在平坦 ΛCDM 模型中,用 40 个模拟的 Ia 型超新星拟合 Ωm 和 H0,得到近似椭圆形的后验分布。第二个是弯曲而狭窄的脊状问题:在固定 H0 的情况下拟合 Ωm 和暗能量状态方程。第三个是多峰问题:在 80 天内的 40 个夜晚观测一个正弦信号并求其频率,会产生多个分离的峰。
关键实体:公司:Towards Data Science | 人物:Arvi Z.
常见问题:在多峰问题上应该信任哪一种采样器?
在本次基准测试中,dynesty 是唯一找到所有峰并给出正确证据值的采样器,而 NUTS 失败,emcee 给出了自信却错误的结果。不过,其证据误差条被发现偏于乐观。
来源: Towards Data Science · 由HeadlinesBriefing整理摘要