马尔可夫链蒙特卡洛(MCMC)中的切片采样(Slice Sampling)算法原理与采样过程
字数 1612 2025-11-19 15:39:25

马尔可夫链蒙特卡洛(MCMC)中的切片采样(Slice Sampling)算法原理与采样过程

题目描述
切片采样是一种马尔可夫链蒙特卡洛(MCMC)方法,用于从难以直接采样的复杂概率分布中生成样本。其核心思想是通过引入辅助变量将高维采样问题转化为一维均匀采样,避免直接设计提议分布。该算法特别适用于单变量分布或多变量分布的逐分量更新,能自适应调整步长以匹配目标分布的局部特性。

解题过程

  1. 问题建模
    设目标分布为 \(p(x) \propto f(x)\),其中 \(f(x)\) 是已知函数但难以直接采样。切片采样的核心是通过构造均匀分布辅助变量 \(u\),将采样问题转化为从联合分布 \(p(x, u)\) 中采样。

  2. 联合分布构造
    引入辅助变量 \(u\),定义联合分布:

\[ p(x, u) = \begin{cases} 1 & \text{若 } 0 \leq u \leq f(x) \\ 0 & \text{否则} \end{cases} \]

边缘分布 \(p(x) = \int_0^{f(x)} du = f(x)\) 符合目标分布。采样时通过吉布斯采样交替更新 \(x\)\(u\)

  1. 切片采样步骤

    • 步骤1:初始化
      随机选择初始状态 \(x_0\),设定迭代次数 \(T\)
    • 步骤2:采样辅助变量 \(u\)
      给定当前状态 \(x_t\),从均匀分布 \(U(0, f(x_t))\) 采样 \(u\)
    • 步骤3:确定水平集区间
      寻找区间 \(I = \{ x : f(x) \geq u \}\),即满足 \(f(x) \geq u\)\(x\) 集合。
      • 方法1:步进法
        1. \(x_t\) 为中心,设置初始区间长度 \(w\)
        2. 向右扩展:从 \(x_t + w, x_t + 2w, \dots\) 依次检查,直到 \(f(x) < u\)
        3. 向左扩展:从 \(x_t - w, x_t - 2w, \dots\) 依次检查,直到 \(f(x) < u\)
        4. 得到区间 \([L, R]\)
      • 方法2:双倍法
        随机选择初始区间 \([L, R]\) 包含 \(x_t\),循环扩展区间直至两端点满足 \(f(L) < u\)\(f(R) < u\)
    • 步骤4:从区间均匀采样
      从区间 \(I\) 的均匀分布 \(U(L, R)\) 采样 \(x_{t+1}\)。若新样本 \(x'\) 满足 \(f(x') \geq u\),接受 \(x_{t+1} = x'\);否则在 \(x'\) 处收缩区间重新采样。
    • 步骤5:迭代循环
      重复步骤2-4直至完成 \(T\) 次迭代,得到样本序列 \(\{x_1, x_2, \dots, x_T\}\)
  2. 算法特性

    • 自适应步长:区间大小随目标分布密度自动调整,避免随机游走行为的低效问题。
    • 保持细节:在高概率区域采样更密集,低概率区域更稀疏。
    • 收敛性:生成的马尔可夫链以目标分布为平稳分布。
  3. 实例演示
    对目标分布 \(p(x) \propto \exp(-x^2/2) + 0.5\exp(-(x-3)^2/2)\)

    • 初始化 \(x_0 = 0\),计算 \(f(x_0) \approx 1.13\)
    • 采样 \(u \sim U(0, 1.13)\),假设 \(u = 0.8\)
    • 通过步进法找到区间 \([-1.2, 1.5]\) 满足 \(f(x) \geq 0.8\)
    • 从该区间均匀采样得到 \(x_1 = 0.3\)
      重复过程最终得到服从目标分布的样本。
马尔可夫链蒙特卡洛(MCMC)中的切片采样(Slice Sampling)算法原理与采样过程 题目描述 切片采样是一种马尔可夫链蒙特卡洛(MCMC)方法,用于从难以直接采样的复杂概率分布中生成样本。其核心思想是通过引入辅助变量将高维采样问题转化为一维均匀采样,避免直接设计提议分布。该算法特别适用于单变量分布或多变量分布的逐分量更新,能自适应调整步长以匹配目标分布的局部特性。 解题过程 问题建模 设目标分布为 \( p(x) \propto f(x) \),其中 \( f(x) \) 是已知函数但难以直接采样。切片采样的核心是通过构造均匀分布辅助变量 \( u \),将采样问题转化为从联合分布 \( p(x, u) \) 中采样。 联合分布构造 引入辅助变量 \( u \),定义联合分布: \[ p(x, u) = \begin{cases} 1 & \text{若 } 0 \leq u \leq f(x) \\ 0 & \text{否则} \end{cases} \] 边缘分布 \( p(x) = \int_ 0^{f(x)} du = f(x) \) 符合目标分布。采样时通过吉布斯采样交替更新 \( x \) 和 \( u \)。 切片采样步骤 步骤1:初始化 随机选择初始状态 \( x_ 0 \),设定迭代次数 \( T \)。 步骤2:采样辅助变量 \( u \) 给定当前状态 \( x_ t \),从均匀分布 \( U(0, f(x_ t)) \) 采样 \( u \)。 步骤3:确定水平集区间 寻找区间 \( I = \{ x : f(x) \geq u \} \),即满足 \( f(x) \geq u \) 的 \( x \) 集合。 方法1:步进法 以 \( x_ t \) 为中心,设置初始区间长度 \( w \)。 向右扩展:从 \( x_ t + w, x_ t + 2w, \dots \) 依次检查,直到 \( f(x) < u \)。 向左扩展:从 \( x_ t - w, x_ t - 2w, \dots \) 依次检查,直到 \( f(x) < u \)。 得到区间 \( [ L, R ] \)。 方法2:双倍法 随机选择初始区间 \( [ L, R] \) 包含 \( x_ t \),循环扩展区间直至两端点满足 \( f(L) < u \) 和 \( f(R) < u \)。 步骤4:从区间均匀采样 从区间 \( I \) 的均匀分布 \( U(L, R) \) 采样 \( x_ {t+1} \)。若新样本 \( x' \) 满足 \( f(x') \geq u \),接受 \( x_ {t+1} = x' \);否则在 \( x' \) 处收缩区间重新采样。 步骤5:迭代循环 重复步骤2-4直至完成 \( T \) 次迭代,得到样本序列 \( \{x_ 1, x_ 2, \dots, x_ T\} \)。 算法特性 自适应步长 :区间大小随目标分布密度自动调整,避免随机游走行为的低效问题。 保持细节 :在高概率区域采样更密集,低概率区域更稀疏。 收敛性 :生成的马尔可夫链以目标分布为平稳分布。 实例演示 对目标分布 \( p(x) \propto \exp(-x^2/2) + 0.5\exp(-(x-3)^2/2) \): 初始化 \( x_ 0 = 0 \),计算 \( f(x_ 0) \approx 1.13 \)。 采样 \( u \sim U(0, 1.13) \),假设 \( u = 0.8 \)。 通过步进法找到区间 \( [ -1.2, 1.5 ] \) 满足 \( f(x) \geq 0.8 \)。 从该区间均匀采样得到 \( x_ 1 = 0.3 \)。 重复过程最终得到服从目标分布的样本。