好的,我们开始学习一个新的词条。
随机变量的变换的Metropolis-Hastings算法
我们来循序渐进地学习这个概率论与统计学中非常重要的概念。
步骤 1:理解核心问题——我们为什么需要它?
想象一下,你有一个非常复杂的随机变量,它的概率分布函数(比如概率密度函数 \(p(x)\))非常难以直接采样。也就是说,你无法像抛硬币或掷骰子那样简单地生成符合这个分布的样本。
但是,在很多科学计算、贝叶斯统计和机器学习问题中,我们恰恰需要从这种复杂的分布中获取大量样本,以便进行估计、预测或求积分。例如,在贝叶斯分析中,后验分布 \(p(\theta | \text{数据})\) 往往没有一个标准的形式,难以直接采样。
Metropolis-Hastings算法 就是为了解决这个“难以直接采样”的问题而诞生的。它是一种马尔可夫链蒙特卡洛方法,核心思想是:构造一个马尔可夫链,使得这个链的平稳分布恰好就是我们想要采样的目标分布 \(p(x)\)。 这样,当马尔可夫链运行足够长的时间后,它产生的状态序列就可以被看作是来自目标分布 \(p(x)\) 的样本。
步骤 2:算法的基本直觉——一个“有偏的随机游走”
我们可以把 Metropolis-Hastings 算法想象成一个在参数空间里进行“有偏的随机游走”的探索者。
- 当前位置:探索者一开始位于某个随机点 \(x_t\)。
- 提议新位置:探索者并不确定下一步该去哪。他会根据一个简单的、易于采样的分布(称为提议分布,Proposal Distribution)\(q(x^* | x_t)\),来“提议”一个下一步可能去的新位置 \(x^*\)。这个提议分布通常很简单,比如以当前位置 \(x_t\) 为中心的正态分布。这相当于他蒙着眼睛朝某个方向随机迈出一步。
- 决定是否接受:关键的一步来了。探索者需要决定是“接受”这个提议,真正移动到新位置 \(x^*\),还是“拒绝”这个提议,停留在原地 \(x_t\)。
- 他的决策不是完全随机的,而是有偏向的:如果新位置 \(x^*\) 的概率 \(p(x^*)\) 比当前位置的概率 \(p(x_t)\) 高,那么他非常乐意接受这个移动。
- 但是,为了能够探索整个空间(而不仅仅是概率高的区域),他即使提议了一个概率更低的位置,也有一定的概率会接受它。这个概率与新旧位置的概率比值有关。
这个“有偏的接受”机制,确保了探索者大部分时间会在高概率区域逗留,但偶尔也会冒险进入低概率区域,从而能够完整地探索整个目标分布。
步骤 3:精确的数学描述——接受概率
现在,我们来精确地定义“决定是否接受”这一步。
设我们的目标分布是 \(p(x)\)(我们可能只知道它的核,即正比于它的部分,而不需要知道标准化常数,这是MCMC的一大优势)。我们选择一个提议分布 \(q(x^* | x_t)\),它给出了在当前位置 \(x_t\) 下,提议新位置 \(x^*\) 的条件概率。
接受概率 \(\alpha(x_t, x^*)\) 的计算公式是 Metropolis-Hastings 算法的核心:
\[\alpha(x_t, x^*) = \min \left( 1, \ \frac{p(x^*)}{p(x_t)} \times \frac{q(x_t | x^*)}{q(x^* | x_t)} \right) \]
这个公式可以分解为两部分来理解:
- 目标分布比值 \(\frac{p(x^*)}{p(x_t)}\):这反映了新位置相对于当前位置的“吸引力”。如果 \(p(x^*) > p(x_t)\),这个比值大于1,我们倾向于接受。
- 提议分布不对称性的修正项 \(\frac{q(x_t | x^*)}{q(x^* | x_t)}\):如果提议分布不是对称的(即 \(q(x^* | x_t) \neq q(x_t | x^*)\)),我们需要进行修正。例如,如果从 \(x_t\) 提议到 \(x^*\) 很容易,但从 \(x^*\) 回到 \(x_t\) 很难,那么我们就应该更谨慎地接受这个从 \(x_t\) 到 \(x^*\) 的移动。这个修正项正好平衡了这种不对称性。
算法流程:
- 初始化起点 \(x_0\)。
- 对于 \(t = 0, 1, 2, \dots, N-1\):
a. 从提议分布 \(q(x^* | x_t)\) 中生成一个候选样本 \(x^*\)。
b. 计算接受概率 \(\alpha(x_t, x^*)\)。
c. 从均匀分布 \(U(0, 1)\) 中生成一个随机数 \(u\)。
d. 如果 \(u \le \alpha\),则接受提议,令 \(x_{t+1} = x^*\)。
e. 否则,拒绝提议,令 \(x_{t+1} = x_t\)。
最终,我们得到的序列 \(\{x_0, x_1, \dots, x_N\}\) 在经过一段初始的“预热期”(称为 burn-in)后,其分布会收敛到目标分布 \(p(x)\)。
步骤 4:一个特例——Metropolis 算法
当提议分布 \(q(x^* | x_t)\) 是对称的时候,即 \(q(x^* | x_t) = q(x_t | x^*)\),接受概率公式中的修正项就等于 1。此时,算法简化为最早的 Metropolis 算法:
\[\alpha(x_t, x^*) = \min \left( 1, \ \frac{p(x^*)}{p(x_t)} \right) \]
一个常见的对称提议分布是正态分布 \(N(x_t, \sigma^2)\),因为 \(q(x^* | x_t)\) 的值只依赖于 \(x^*\) 和 \(x_t\) 之间的距离,所以是对称的。
步骤 5:实际应用中的关键考量
-
收敛诊断:我们怎么知道马尔可夫链已经收敛到平稳分布了?这是一个实践中的关键问题。常见的方法包括:
- 运行多条链:从不同的、分散的初始点开始运行多个独立的MCMC链,观察它们是否收敛到同一个分布。
- 可视化:绘制样本值的轨迹图(trace plot),看它是否像一条围绕某个值平稳变化的“毛毛虫”,而不是有明显的趋势或滞留。
- 计算统计量:如Gelman-Rubin统计量,比较链内和链间的方差。
-
自相关性:MCMC生成的样本是顺序相关的,而不是独立的。这意味着你需要生成比理论要求更多的样本才能达到相同的估计精度。可以通过计算有效样本量 来评估。
-
提议分布的选择:提议分布的方差(如正态分布的 \(\sigma^2\))需要仔细选择。方差太大会导致接受率很低(很多提议被拒绝,链停滞不前);方差太小会导致接受率很高,但探索速度很慢(链像蜗牛一样移动)。通常建议将接受率调整在20%到50%之间。
总结
随机变量的变换的Metropolis-Hastings算法 是一种强大的计算工具,它通过构造一个精心设计的马尔可夫链,间接地实现了从任意复杂目标分布中采样的目的。其核心在于利用一个易于采样的提议分布和一個基于概率比值的接受概率准则,引导随机游走过程最终稳定在目标分布上。它是连接理论概率模型和实际计算应用的桥梁,是现代贝叶斯统计和复杂随机模拟的基石之一。