知名emcee 包的开发者经常给出这样的建议来帮助链收敛:
- 运行一个短(几百步)链
- 重新初始化到目前为止看到的具有最大对数概率的点附近的所有步行者
- 多次返回步骤 1
- 然后从你最后一次运行第 1 步的地方开始运行你的最后一个链
我的问题是:这与简单地允许链运行更多步骤然后丢弃更长的老化期有什么不同吗?即,这与具有更多老化步骤的“正常”运行有什么不同?
知名emcee 包的开发者经常给出这样的建议来帮助链收敛:
- 运行一个短(几百步)链
- 重新初始化到目前为止看到的具有最大对数概率的点附近的所有步行者
- 多次返回步骤 1
- 然后从你最后一次运行第 1 步的地方开始运行你的最后一个链
我的问题是:这与简单地允许链运行更多步骤然后丢弃更长的老化期有什么不同吗?即,这与具有更多老化步骤的“正常”运行有什么不同?
与 MCMC 中标准老化步骤的不同之处在于后者通常是盲目的,作为总迭代次数的固定比例,例如 20%。这里的老化或预热步骤更积极地寻找一个合理的起点,即与目标密度兼容的起点。然而,该方法的性能取决于 MCMC 链的混合行为。如果它相对于几百次迭代的预期范围非常缓慢地混合,则链可能会停留在上一轮发现的模式的吸引盆内。在热身期间最好考虑退火或放松的目标,其中将运行由幂密度(幂小于一)或部分后验(仅使用一小部分数据)组成的更平坦的目标(并且仍然监测实际目标密度的值)。因此,初步勘探将更加有效并且容易离开吸引盆地。
如果您只有一条链(或者如果您希望所有链完全独立),那么此过程与经典老化没有什么不同。
但是,如果您允许您的链进行交互,它可以加速收敛。从一个随机位置开始,让你的所有链独立运行步。然后,将所有链的所有walkers设置到相同的位置(迄今为止在所有链中看到的最大对数概率的点),让它们再次独立运行。因此,恰好距离高可能性区域最近的链将“引导”其他链向该位置移动。
这个过程的一个可能的缺点是它可能会增加陷入局部最优的风险。