使用 MCMC 评估高维函数的期望值

机器算法验证 采样 马尔可夫链蒙特卡罗 matlab 期望值
2022-03-21 21:31:14

我正在从事一个与优化相关的研究项目,最近有一个想法在此设置中使用 MCMC。不幸的是,我对 MCMC 方法还很陌生,所以我有几个问题。我将从描述问题开始,然后提出我的问题。

我们的问题归结为估计成本函数的期望值,其中维随机变量.c(ω)ω=(ω1,ω2,...ωh)hf(ω)

在我们的例子中,不存在的封闭形式版本。这意味着我们必须使用蒙特卡罗方法来逼近期望值。不幸的是,事实证明,使用 MC 或 QMC 方法生成的估计值具有太大的方差,无法在实际环境中使用。c(ω)E[c(ω)]

一种想法是我们必须使用重要性抽样分布来生成样本点,这些样本点将产生的低方差估计。在我们的例子中,理想的重要性采样分布必须与大致成比例。看到如何知道是恒定的,我想知道是否可以使用 MCMC 以及提议分布生成样本E[c(ω)]g(ω)c(ω)f(ω)g(ω)c(ω)f(ω)g(ω)

我的问题是:

  • 可以在此设置中使用 MCMC 吗?如果是这样,哪种 MCMC 方法是合适的?我在 MATLAB 中工作,所以我偏爱任何已经有 MATLAB 实现的东西。

  • 有什么技术可以用来加快 MCMC 的老化期。我怎么知道已经达到了平稳分布?在这种情况下,计算给定实际上需要相当长的时间c(ω)ω

3个回答

我永远记得,MCMC 只是一种数值积分工具(而且效率相当低)。这不是什么神奇/神秘的东西。它非常有用,因为它相当容易应用。与其他一些数值积分技术相比,它不需要太多思考。例如,您不必做任何衍生品。您只需要生成“随机数”。

然而,像任何数值积分方法一样,它并不是一个通用的包罗万象的工具。有用时有条件,无用时有条件。

设置另一种技术可能更明智。取决于有多大,您的计算机有多快,以及您准备等待结果的时间。一个统一的网格可以完成这项工作(尽管这需要很小或很长的等待时间)。“工作”是评估积分 - 方程不关心你或我对结果的意义(因此它不关心我们是否随机获得结果)。hh

的估计非常准确,则将出现尖锐的峰值并且非常类似于 delta 函数,因此积分有效地替代了ωf(ω)ωωmax

另一种数值积分技术是在积分下使用泰勒级数。 f(ω)f(ωmax)+(ωωmax)f(ωmax)+12(ωωmax)2f(ωmax)+

的矩很容易获得时,这是一种有用的策略。ω

Edwin Jaynes 对此有一个很好的引用:

每当有一种随机的方式做某事时,就有一种非随机的方式可以产生更好的结果,但需要更多的思考

一种“多思考”的方式是使用“分层的MCMC”来做积分。因此,与其“随机”在整个参数空间中选择一个点:将其划分为“层”。应该选择这些“分层”,以便您获得积分高部分的良好范围。然后在每个层中随机抽样。但这将要求您编写自己想象的代码(即更多思考)。

没有任何迹象表明您的变量在这里是相关的,所以我不知道您为什么要使用 MCMC 而不是常规的蒙特卡洛。有许多不同的抽样方法,包括提到的分层抽样(拉丁超立方)和 QMC。如果问题的维数不太高(不超过 10),稀疏求积方法非常好,因为稀疏求积网格呈几何增长(维度灾难)。

但听起来你在重要性抽样方面走在了正确的轨道上。这里的关键是选择一个有偏分布,该分布具有大概率集中在您感兴趣的区域附近,并且它的尾部比名义分布更厚。

我想补充一点,这是一个开放的研究问题,所以如果你能想出一些好的东西,它会引起社区的极大兴趣!

由于似乎没有人真正直接回答这个问题:是的,您可以使用 MCMC 从中采样。MCMC 可用于从已知分布仅达到比例常数的任何分布中进行采样。g(ω)

此外,您可能想查找 MC 集成领域中的方差减少技术。斯坦福大学的 Art Owen 提供的免费书籍章节是一套很棒的自包含资源。特别是第 8、9 和 10 章。

在那里,您将找到对自适应采样、递归和其他技术的深入处理。