马尔可夫链蒙特卡洛(MCMC)中的可逆跳跃马尔可夫链蒙特卡洛(Reversible Jump Markov Chain Monte Carlo, RJMCMC)算法原理与跨维度采样过程
题目描述
在贝叶斯模型选择和参数推断中,常常需要比较具有不同参数维度(例如,不同数量混合成分的高斯混合模型、不同数量基函数的回归模型)的模型。传统MCMC方法(如Metropolis-Hastings)要求马尔可夫链在固定维度的参数空间上采样,无法处理不同维度模型之间的跳跃采样。可逆跳跃马尔可夫链蒙特卡洛(RJMCMC)算法扩展了Metropolis-Hastings算法,使其能够在一个可数(或有限)的模型空间上采样,允许链在不同维度(模型)之间“跳跃”,从而实现跨模型的贝叶斯推断。本题将详细讲解RJMCMC算法的原理、核心步骤及其在处理变维度采样问题时的具体计算过程。
解题过程循序渐进讲解
第一步:理解问题背景与动机
假设我们有一个模型集合 \(\{M_k, k \in \mathcal{K}\}\),其中每个模型 \(M_k\) 对应的参数向量 \(\theta_k\) 维度为 \(d_k\)(例如,\(d_k\) 可能表示模型中参数的个数)。目标是基于观测数据 \(y\) 在联合空间(模型索引 \(k\) 和参数 \(\theta_k\))上采样,以获得模型的后验分布 \(p(k, \theta_k | y)\)。由于不同模型的参数维度不同,直接在联合空间上定义转移核很困难。RJMCMC 通过引入辅助变量来匹配不同维度空间之间的“维度差距”,使得跨维度转移满足细致平衡条件。
第二步:RJMCMC的核心思想
RJMCMC 是 Metropolis-Hastings 算法在变维度空间上的推广。其核心思想是:当提议从当前状态(模型 \(k\),参数 \(\theta_k\))跳转到新状态(模型 \(k'\),参数 \(\theta_{k'}\))时,如果 \(d_k \ne d_{k'}\),则通过引入辅助随机变量 \(u\) 和 \(u'\),使得联合向量 \((\theta_k, u)\) 和 \((\theta_{k'}, u')\) 维度相同,从而可以在扩展空间上定义可逆的转移。
具体来说,假设从模型 \(k\) 跳到模型 \(k'\) 时,\(d_{k'} > d_k\),则需要生成一个辅助变量 \(u \sim g(u)\)(维度为 \(d_{k'} - d_k\)),并通过一个一一可微的双射函数 \(T\) 映射到新参数:
\[(\theta_{k'}, u') = T(\theta_k, u) \]
其中 \(u'\) 的维度使得总维度匹配。反向跳跃时,通过逆映射 \(T^{-1}\) 恢复。
第三步:RJMCMC转移的接受概率推导
设当前状态为 \(x = (k, \theta_k)\),提议跳跃到模型 \(k'\) 并生成新参数 \(\theta_{k'}\) 的步骤如下:
- 根据提议分布 \(j(k' | k)\) 选择新模型 \(k'\)。
- 如果 \(d_{k'} \ge d_k\),生成辅助变量 \(u \sim g_{k\to k'}(u)\)(维度 \(d_{k'} - d_k\)),通过双射 \(T\) 计算:
\[(\theta_{k'}, u') = T(\theta_k, u) \]
其中 \(u'\) 维度为 \(d_{k} - d_{k'}\)(可能为零)。
3. 如果 \(d_{k'} < d_k\),则生成辅助变量 \(u' \sim g_{k'\to k}(u')\),并通过逆映射得到:
\[(\theta_k, u) = T^{-1}(\theta_{k'}, u') \]
实际上,两种情形统一用双射 \(T\) 处理,确保维度匹配。
接受概率 \(\alpha\) 确保满足细致平衡条件。推导可得:
\[\alpha = \min\left\{1, \frac{p(k', \theta_{k'} | y) \, j(k | k') \, g_{k'\to k}(u')}{p(k, \theta_k | y) \, j(k' | k) \, g_{k\to k'}(u)} \left| J \right| \right\} \]
其中 \(J\) 是变换 \(T\) 的雅可比行列式:
\[J = \frac{\partial T(\theta_k, u)}{\partial (\theta_k, u)} \]
雅可比项解释了从 \((\theta_k, u)\) 到 \((\theta_{k'}, u')\) 的体积变化,是维数变化时必须的修正。
第四步:算法步骤详解
- 初始化:选择初始模型 \(k^{(0)}\) 和参数 \(\theta_{k^{(0)}}^{(0)}\),设 \(t=0\)。
- 迭代采样(对于第 \(t\) 次迭代):
a. 以一定概率执行“跨模型跳跃”或“模型内更新”。这里重点讲解跨模型跳跃。
b. 跨模型跳跃:- 根据提议分布 \(j(k' | k^{(t)})\) 采样候选模型 \(k'\)。
- 如果 \(d_{k'} \ge d_{k^{(t)}}\):
生成辅助变量 \(u \sim g_{k^{(t)}\to k'}(u)\)。
通过双射 \(T\) 计算 \((\theta_{k'}, u') = T(\theta_{k^{(t)}}^{(t)}, u)\)。 - 否则(\(d_{k'} < d_{k^{(t)}}\)):
生成辅助变量 \(u' \sim g_{k'\to k^{(t)}}(u')\)。
通过逆映射计算 \((\theta_{k^{(t)}}^{(t)}, u) = T^{-1}(\theta_{k'}, u')\),从而得到 \(\theta_{k'}\)。 - 计算接受概率 \(\alpha\) 如上式。
- 以概率 \(\alpha\) 接受新状态:\((k^{(t+1)}, \theta_{k^{(t+1)}}^{(t+1)}) = (k', \theta_{k'})\),否则保持原状态。
c. 模型内更新:在模型 \(k^{(t)}\) 内,用标准MCMC(如MH)更新参数 \(\theta_{k^{(t)}}\)。
- 重复步骤2直至收敛。
第五步:关键设计与示例
- 双射 \(T\) 的设计:通常选取简单的线性变换,例如对于从模型1(一维参数 \(\theta_1\))跳至模型2(二维参数 \((\theta_{21}, \theta_{22})\)),可定义:
\[\theta_{21} = \theta_1 + u_1, \quad \theta_{22} = u_2 \]
其中 \(u=(u_1, u_2) \sim \mathcal{N}(0, \sigma^2 I)\)。雅可比行列式 \(|J|=1\)。
- 辅助变量分布 \(g\):常取正态分布或均匀分布,需便于采样和计算概率密度。
- 提议分布 \(j(k'|k)\):可设计为均匀分布于邻居模型(如维度相差1的模型)。
第六步:应用与注意事项
- 应用场景:贝叶斯模型选择(如回归中变量选择、混合模型中成分数选择)、信号处理中结构识别等。
- 挑战:
- 需要为每对模型设计合适的双射和辅助变量分布,设计不当会导致接受率低。
- 高维模型间跳跃时雅可比计算复杂。
- 链可能在某些模型上停留时间过长,需仔细调整提议分布。
- 收敛诊断:可通过检查模型索引 \(k\) 的遍历性、跨模型接受率等评估。
总结
RJMCMC 通过引入辅助变量和可逆双射,巧妙解决了不同维度空间之间的转移问题,使得MCMC能够对模型和参数进行联合采样。其核心是扩展状态空间以确保细致平衡,其中雅可比行列式修正了维度变化带来的测度差异。虽然实现复杂,但它是贝叶斯模型选择中一个强有力的工具。