MCMC 在线监控有个实际矛盾:你想边采样边判断链是否收敛,又不想保存完整历史。常用的 split R-hat 会把每条链从中间切开,以便发现前后漂移;但这一刀不只增加缓存,还会改变 R-hat 与有效样本量的关系。Bob Carpenter 在开发 Walnuts 的在线监控时,重新算了这笔账。结果是:同一阈值下,split R-hat 可能要求更多 draws(抽样次数)。不过,目前材料只有 Carpenter 的单篇文章,尚无实现基准或多源验证。
为什么拆链会妨碍在线计算?
MCMC 用一条或多条马尔可夫链产生相关样本,以近似难以直接计算的目标分布。只有链充分探索目标分布后,汇总出的贝叶斯估计才可信。
R-hat 通过比较链间变异与链内变异,检查多条链是否像来自同一稳定分布。它接近 1 是必要的收敛信号,但不能单独证明采样可靠。
Carpenter 想在 Walnuts 中逐迭代更新 R-hat。他使用 Welford 累加器——一种稳定递推均值和方差的方法——所以每来一个样本就能更新统计量,不必保留全部历史。
问题出在 split R-hat。它把每条链的前半段和后半段当成两条独立链,更容易暴露随时间发生的漂移。但在线运行时,中点不断移动,系统需要分别维护两个时间段的信息。Carpenter 称这会带来“过多缓存”,因此 Walnuts 的实现无法直接采用。文章没有给出具体内存量、链长或性能测试,所以这里能确认的是实现障碍,不能量化工程成本。
统计代价藏在分子里
文章给出的近似关系是:
其中, 是链数, 是所有链合并后的有效样本量。ESS 会把样本间的相关性折算进去,因此通常比原始 draws 更能反映实际信息量。
split R-hat 把每条链拆成两条,链数从 变为 ,却没有凭空增加 ESS。于是近似式变成:
直觉上,这像是把同一批信息分装进两倍数量的盒子:观察单位增加了,信息总量没有增加。R-hat 中高于 1 的那一部分因而近似翻倍。
Carpenter 用 4 条链、combined ESS 为 400 举例。regular R-hat 约为:
split R-hat 则约为:
两个数都很接近 1,但如果在线系统使用固定阈值自动停止,差异会直接转化为额外采样。根据 Carpenter 的推导,在阈值固定、近似关系成立且采用小量一阶近似时,split R-hat 达标所需 draws 大约是 original R-hat 的两倍。这不是无条件精确结论;自相关、非平稳性以及具体 R-hat 实现都可能改变结果。
阈值低,不等于要求高
这篇文章也提醒我们,R-hat 阈值必须和 ESS 一起看。Carpenter 写道,在默认 4 条链下,R-hat 阈值 1.1 在 combined ESS 约为 20 时就可能满足。也就是说,“已经低于 1.1”未必代表手里已有很多有效信息。
对离线分析,这通常意味着多检查一个诊断指标。对在线系统,问题更尖锐:阈值可能决定采样何时自动停止。split R-hat 一方面更擅长发现链前后漂移,另一方面又可能因为拆链本身,让同一 ESS 对应更高的 R-hat。若不区分这两种作用,系统可能把诊断的保守性误当成采样仍然不足。
为什么值得关注?
重点不是宣布 regular R-hat 胜出,而是把诊断能力、统计门槛和流式实现放到同一张账单上。split R-hat 的设计目标是发现时间漂移;Welford 累加器的优势则是少存历史、持续更新。两者在离线计算中容易共存,到了逐迭代监控里,状态管理和停止成本就暴露出来了。
Carpenter 还称,他尚未见过 NUTS 中存在 split R-hat 能诊断、regular R-hat 不能诊断的实例。Andrew Gelman 提到 Kenny Shirley 曾做出过一个案例,但该案例已经遗失。这只能视为作者经验,不能据此断言 split R-hat 对 NUTS 没有额外价值。
局限与未知
- 文章没有披露 Walnuts 的版本、发布日期、缓存规模或基准测试,无法判断工程代价在真实工作负载中有多大。
- “约两倍 draws”依赖近似公式、固定阈值和小量展开,并非对所有链、自相关结构及实现都成立;rank normalization、folded R-hat 等细节也可能影响结果。
- split R-hat 在 NUTS 中究竟能多发现多少 regular R-hat 漏掉的问题,现有材料没有实证比较;作者自己也在征集反例。