为什么切片采样器使用密度的对数?

机器算法验证 吉布斯 大都会黑斯廷斯
2022-03-25 21:41:49

Slice 采样器1将要从中采样的密度的对数作为其参数。

为什么要这样做?对此问题的评论者指出,从密度的对数中“采样”是没有意义的,因为它通常是负值。那么,为什么切片采样器会记录密度的对数,它仍然如何工作?

Radford M. Neal 的切片采样器的代码,在他的网站上: http ://www.cs.toronto.edu/~radford/ftp/slice-R-prog

1 Neal, Radford M:切片抽样统计年鉴31(3), 705–741, 2003

1个回答

切片采样器不会“从对数密度中采样”。但是,它可以在计算中使用对数密度来密度中获得相关的观察序列

切片采样器的基本思想是根据密度本身,但由于各种原因(主要是计算精度),使用对数密度通常更方便。

只要您使用 do everything 的方式与在 density 方面完全一致,那么无论使用 log density 都没有问题。

此处维基百科中单变量案例的描述说:

  • 给定一个样本中随机均匀地选择xy[0,f(x)]
  • 给定中随机均匀地选择yxf1[y,+)
  • 的样本是通过忽略值获得的。 xy

中的负指数分布采样来代替第一步,其中指数的下限位于的事实)和以前一样进行。结果就像我们根据原始算法准确采样一样,该算法处的密度本身下均匀采样......但实际上,对数尺度的计算做得“更好” -精度损失较小。logylog(f(x))yx

Neal 在 Annals 论文中非常清楚地解释了这样做的动机,您包含了 (p712) 的参考:

而不是本身通常更安全, 以避免可能出现的浮点下溢问题。然后可以使用辅助变量 ,其中 与平均值呈指数分布,并通过定义切片。g(x)=log(f(x))f(x)z=log(y)=g(x0)eeS=x:z<g(x)