VEGAS 中的重组算法

计算科学 蒙特卡洛
2021-12-08 12:23:10

我试图了解 VEGAS 的重组算法(原始出版物LKlevin 的预印本)和实施说明)蒙特卡洛集成。我将尝试首先解释我认为我理解的内容,然后提出我的问题。

为简单起见,假设我们有一个一维函数f(x)在整个区间内都是正数[0,1]. 这个区间被分成,比方说,n垃圾箱。这些箱最初大小相同。垃圾箱尺寸Δxi定义概率密度

ρ(x)={0x<Δx1:1nΔx1Δxn1x<Δxn:1nΔxn.

bin 大小必须加起来等于间隔的长度才能使ρ(x)适当归一化:

i=1nΔxi=101dxρ(x)=1.

使用N随机选择的数字{xi}从分布ρ(x)VEGAS 计算一个近似值S(1)积分:

S(1)=1N{xi}f(xi)ρ(xi)01dxf(x)

到目前为止,这只是使用可变大小网格的重要性抽样(我对分层抽样不感兴趣)。VEGAS 中有趣的部分是 rebinning 算法,即根据之前迭代中累积的函数值重新计算 bin 大小的算法:

  • 对于每个 bin,平方函数值 (?) 被求和(在原始出版物中,绝对值被求和)。
  • 每个值还有一个阻尼函数,以“避免快速、不稳定的变化”。
  • 之后,每个值都使用相邻的 bin 进行平滑处理。我想这也为某些函数的重新分箱算法增加了一些稳定性(但我无法解释原因)。让我们调用最终值bi.
  • 现在设置 bin 大小,使得每个新 bin 都包含大约平均值:

b¯=1ni=1nbi

该算法使 bin 在函数“小”的地方增长,在函数“大”的地方缩小。小和大是相互关联的,例如,函数的最大值被认为是“大”,而其他一切都被认为是“更小”。由于一个点的概率x最终在任何 bin 中都是相等的(编写 VEGAS 是为了展示这种行为),函数在最大的地方被采样最多,从而减少了误差。

为什么会这样写?为什么不更直接地解决问题,例如将平均和分箱函数作为下一次迭代的概率密度?

1个回答

免责声明:我对蒙特卡洛算法非常熟悉,但对 VEGAS 算法并不特别熟悉。

VEGAS 算法基于这样一个事实,即如果我们知道最小化蒙特卡洛积分方差的确切概率密度,我们可以使用函数 f 的精确 1 次评估得到答案。

这是由

p(x)=|f(x)|Ω|f(x)|dx

我们不知道概率密度,准确估计它对于高维函数是不可行的,因为它会很快占用大量内存。

相反,VEGAS 算法将其近似为 M 步分段常数函数。

我猜你无法访问完整的文章?原始文章没有使用平方函数,而是绝对函数(可以在此处找到预印本)。

我希望这有助于回答你的问题。原始文章回答了大部分问题,因此可能值得