什么是 切片采样(Slice Sampling)?
切片采样(Slice Sampling)是一种马尔可夫链蒙特卡洛方法,它为未归一化目标密度引入随机高度,并在高于该高度的水平集中更新状态。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
用辅助高度构造目标水平集
对未归一化密度 f(x),先从 (0, f(x)) 均匀抽取 y。给定 y 后,下一状态必须保持集合 S_y = {x: f(x) > y} 上的均匀分布不变。把 y 积分掉即可恢复与 f(x) 成比例的边缘密度,因此不需要未知的归一化常数。
Neal 的 Slice Sampling 论文给出了单变量与多变量构造。两个看似条件抽样的更新共同组成 MCMC 转移,连续保留状态并不独立。
在不改变目标分布的前提下框定切片
常见单变量实现先随机偏移一个宽度为 w 的区间,再让两端 Stepping-out 直至离开切片,随后在区间内反复提议,并从拒绝候选所在一侧执行 Shrinkage。随机放置区间和保留当前点的收缩规则属于转移定义,不能当作可随意删除的优化。
宽度 w 影响密度求值次数与移动距离,但不必等于真实切片宽度。扩展上限能控制最坏工作量,却也可能截断相关的非连通区域。实现时应在对数域使用 logY = log f(x) + log(U),避免密度下溢。
同时评估几何、混合与求值成本
逐坐标切片采样能适应局部尺度,却仍可能沿强相关方向移动缓慢,也可能无法跨越分离模态。围绕当前点构造的单个连通区间不会自动发现水平集的所有非连通分量;多变量和 Elliptical Slice 解决的是不同几何问题,各自需要独立正确性论证。
由于有效 Shrinkage 最终会按构造接受候选,不应把接受率当成主要指标。应比较每次对数密度求值和每秒产生的有效样本,并检查多链、Bulk/Tail ESS、Monte Carlo Error、模态占比、区间扩展次数以及对参数化和宽度的敏感性。
主要特点
- 在未归一化密度曲线下方引入辅助高度
- 在目标密度的水平集中更新状态
- 使用 Stepping-out 或 Doubling 框定切片
- 在保留当前状态的同时收缩拒绝区间
- 不需要以 Metropolis 接受率作为调参目标
- 面对强相关或非连通区域仍可能混合缓慢
常见用途
- 缺少合适 Proposal Scale 的单变量后验更新
- 大型 Gibbs 类采样器中的条件更新步骤
- 经过适当变换后的正值或受约束参数
- 低维连续模型的后验采样基线
- 使用专门切片变体采样潜在高斯模型
示例
Loading code...常见问题
切片采样为什么不需要归一化后的密度?
算法只需要比较随机切片高度与未归一化正密度的函数值。给密度乘上同一个常数只会同步缩放辅助高度,不会改变保留状态的边缘分布。
切片采样的区间宽度是否无关紧要?
不是。有效的 Stepping-out 与 Shrinkage 构造可在多种宽度下保持目标分布,但宽度会显著影响密度求值次数和移动距离;宽度不合适会让正确的采样器效率很低。
切片采样每次迭代会产生独立样本吗?
不会。下一切片以当前状态为锚点,因此输出仍构成马尔可夫链。仍需评估自相关、有效样本量、Monte Carlo Error 与模态覆盖。
切片采样与 Metropolis-Hastings 有什么区别?
Metropolis-Hastings 提议候选后可能因拒绝而保留当前状态。切片采样引入高度并在对应水平集中搜索,通常在区间收缩后接受,但每次转移消耗的密度求值次数不固定。
切片采样能自动处理多峰目标吗?
不能可靠保证。围绕当前状态构造的局部区间可能只覆盖切片的一个连通分量,分离模态仍可能无法发现,因此需要分散初值、多模态专项检查或更强的全局方法。