马尔可夫链蒙特卡洛(MCMC)采样算法的原理与实现步骤
字数 1704 2025-11-01 09:19:03
马尔可夫链蒙特卡洛(MCMC)采样算法的原理与实现步骤
题目描述
马尔可夫链蒙特卡洛(MCMC)是一种基于马尔可夫链的随机采样方法,用于从复杂概率分布(如高维、非标准形式分布)中生成样本。其核心思想是构建一个马尔可夫链,使得该链的平稳分布等于目标分布。通过迭代运行链,最终获得服从目标分布的样本。MCMC广泛应用于贝叶斯推断、统计物理和机器学习等领域。
解题过程
- 问题背景
- 目标:从目标分布 \(P(x)\) 中采样,但 \(P(x)\) 可能难以直接采样(如未归一化或形式复杂)。
- 解决方法:设计一个马尔可夫链,使其转移概率满足细致平衡条件(Detailed Balance):
\[ P(x)T(x \to x') = P(x')T(x' \to x) \]
其中 $ T(x \to x') $ 是从状态 $ x $ 转移到 $ x' $ 的概率。
- MCMC核心算法:Metropolis-Hastings(M-H)
- 步骤1:初始化
选择初始状态 \(x_0\),设定采样次数 \(N\)。 - 步骤2:生成候选样本
从提议分布(Proposal Distribution) \(Q(x' \mid x_t)\) 中采样候选状态 \(x'\)。常用提议分布为高斯分布(随机游走):
- 步骤1:初始化
\[ x' = x_t + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2) \]
- 步骤3:计算接受概率(Acceptance Probability)
根据目标分布 \(P(x)\)(可未归一化)和提议分布 \(Q\),计算接受概率 \(A\):
\[ A = \min\left(1, \frac{P(x')Q(x_t \mid x')}{P(x_t)Q(x' \mid x_t)}\right) \]
若 $ Q $ 对称(如高斯分布),则 $ Q(x' \mid x_t) = Q(x_t \mid x') $,公式简化为:
\[ A = \min\left(1, \frac{P(x')}{P(x_t)}\right) \]
- 步骤4:接受或拒绝候选样本
从均匀分布 \(U \sim [0,1]\) 中采样 \(u\),若 \(u \leq A\),则接受 \(x'\)(即 \(x_{t+1} = x'\)),否则保留当前状态( \(x_{t+1} = x_t\))。 - 步骤5:迭代与收敛
重复步骤2-4,直到完成 \(N\) 次采样。丢弃前 \(M\) 个样本(预烧期,Burn-in Period)以消除初始值影响。
-
关键细节
- 收敛性:链需满足不可约性、非周期性和正常返性,才能收敛到平稳分布。
- 效率优化:提议分布的方差需权衡——方差过小导致接受率高但探索能力差;方差过大会导致拒绝率高。
- 诊断工具:使用自相关函数(Autocorrelation)或Gelman-Rubin统计量评估收敛。
-
示例
假设目标分布为 \(P(x) \propto e^{-x^2/2}\)(标准正态分布),使用对称提议分布 \(Q(x' \mid x_t) = \mathcal{N}(x_t, 1)\)。- 初始值 \(x_0 = 0\)。
- 第 \(t\) 步:当前状态 \(x_t = 0.5\),采样 \(x' = 0.8\)。
- 计算 \(A = \min(1, \frac{e^{-0.8^2/2}}{e^{-0.5^2/2}}) = \min(1, 0.726)\)。
- 若 \(u = 0.6 < 0.726\),则接受 \(x'\),否则保留 \(x_t\)。
总结
MCMC通过构建马尔可夫链逼近目标分布,其实现依赖提议分布与接受概率的设计。M-H算法是基础框架,后续算法(如Gibbs采样、Hamiltonian Monte Carlo)在此基础上针对特定问题优化。