贝叶斯推断依赖于理解后验分布 p ( h e t a ∣ D ) p( heta | D) p ( h e t a ∣ D ) 。通常,整个分布本身并非主要关注点;相反,从中得到的概括信息更受关注。这些概括信息通常以期望的形式出现。例如,后验均值(参数 (parameter) h e t a heta h e t a 的常见点估计)的计算方式如下:
E [ θ ∣ D ] = ∫ θ p ( θ ∣ D ) d θ E[\theta | D] = \int \theta p(\theta | D) d\theta E [ θ ∣ D ] = ∫ θp ( θ ∣ D ) d θ
类似地,我们可能需要计算后验方差、置信区间或特定假设的概率,所有这些都涉及对某个函数 f ( θ ) f(\theta) f ( θ ) 关于后验分布进行积分:
E [ f ( θ ) ∣ D ] = ∫ f ( θ ) p ( θ ∣ D ) d θ E[f(\theta) | D] = \int f(\theta) p(\theta | D) d\theta E [ f ( θ ) ∣ D ] = ∫ f ( θ ) p ( θ ∣ D ) d θ
主要困难出现的原因是,后验 p ( θ ∣ D ) p(\theta | D) p ( θ ∣ D ) 常常是高维的,并且没有标准的解析形式。直接计算这些积分通常是不可能的。
这就是蒙特卡罗积分思想发挥作用的地方。它是一种使用随机抽样近似计算定积分数值的数值方法。其基本思路基于大数定律 (LLN)。
蒙特卡罗估计量
假设我们要估计期望 E [ f ( θ ) ] = ∫ f ( θ ) p ( θ ) d θ E[f(\theta)] = \int f(\theta) p(\theta) d\theta E [ f ( θ )] = ∫ f ( θ ) p ( θ ) d θ ,其中 θ \theta θ 是从分布 p ( θ ) p(\theta) p ( θ ) 中抽取的。如果我们能以某种方式直接从分布 p ( θ ) p(\theta) p ( θ ) 中生成 S S S 个独立样本 θ ( 1 ) , θ ( 2 ) , . . . , θ ( S ) \theta^{(1)}, \theta^{(2)}, ..., \theta^{(S)} θ ( 1 ) , θ ( 2 ) , ... , θ ( S ) ,大数定律告诉我们,随着样本数量的增加,f ( θ ) f(\theta) f ( θ ) 的样本均值将收敛到真实期望。
我们将 E [ f ( θ ) ] E[f(\theta)] E [ f ( θ )] 的蒙特卡罗估计量 定义为:
E ^ S [ f ( θ ) ] = 1 S ∑ s = 1 S f ( θ ( s ) ) \hat{E}_S[f(\theta)] = \frac{1}{S} \sum_{s=1}^{S} f(\theta^{(s)}) E ^ S [ f ( θ )] = S 1 s = 1 ∑ S f ( θ ( s ) )
其中 θ ( s ) ∼ p ( θ ) \theta^{(s)} \sim p(\theta) θ ( s ) ∼ p ( θ ) 对于 s = 1 , . . . , S s=1, ..., S s = 1 , ... , S 。
当 S → ∞ S \to \infty S → ∞ 时,该估计量收敛到真实期望:
lim S → ∞ 1 S ∑ s = 1 S f ( θ ( s ) ) = E [ f ( θ ) ] \lim_{S \to \infty} \frac{1}{S} \sum_{s=1}^{S} f(\theta^{(s)}) = E[f(\theta)] S → ∞ lim S 1 s = 1 ∑ S f ( θ ( s ) ) = E [ f ( θ )]
此外,中心极限定理 (CLT) 通常适用。如果 f ( θ ) f(\theta) f ( θ ) 的方差(记作 Var [ f ( θ ) ] \text{Var}[f(\theta)] Var [ f ( θ )] )是有限的,那么对于很大的 S S S ,估计量 E ^ S [ f ( θ ) ] \hat{E}_S[f(\theta)] E ^ S [ f ( θ )] 的分布近似服从正态分布:
E ^ S [ f ( θ ) ] ≈ N ( E [ f ( θ ) ] , Var [ f ( θ ) ] S ) \hat{E}_S[f(\theta)] \approx N\left(E[f(\theta)], \frac{\text{Var}[f(\theta)]}{S}\right) E ^ S [ f ( θ )] ≈ N ( E [ f ( θ )] , S Var [ f ( θ )] )
这非常有用,因为它告诉我们估计的准确性如何随着样本增多而提升。估计的标准误差与 1 / S 1/\sqrt{S} 1/ S 成比例地减小。我们可以使用计算出的 f ( θ ( s ) ) f(\theta^{(s)}) f ( θ ( s ) ) 值的样本方差来估计 Var [ f ( θ ) ] \text{Var}[f(\theta)] Var [ f ( θ )] ,这为我们量化 (quantization)蒙特卡罗估计的不确定性提供了一种方法。
一个说明性例子:估计 Beta 分布的均值
我们来看一个简单的例子。假设我们的参数 (parameter) θ \theta θ 服从 Beta 分布,θ ∼ Beta ( α , β ) \theta \sim \text{Beta}(\alpha, \beta) θ ∼ Beta ( α , β ) ,它可能表示一系列伯努利试验中未知的成功概率。其概率密度函数为 p ( θ ∣ α , β ) = Γ ( α + β ) Γ ( α ) Γ ( β ) θ α − 1 ( 1 − θ ) β − 1 p(\theta | \alpha, \beta) = \frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)} \theta^{\alpha-1} (1-\theta)^{\beta-1} p ( θ ∣ α , β ) = Γ ( α ) Γ ( β ) Γ ( α + β ) θ α − 1 ( 1 − θ ) β − 1 ,其中 θ ∈ [ 0 , 1 ] \theta \in [0, 1] θ ∈ [ 0 , 1 ] 。
我们想估计均值 E [ θ ] E[\theta] E [ θ ] 。解析地,我们知道 E [ θ ] = α α + β E[\theta] = \frac{\alpha}{\alpha+\beta} E [ θ ] = α + β α 。我们选择 α = 3 \alpha=3 α = 3 和 β = 7 \beta=7 β = 7 。真实均值为 E [ θ ] = 3 / ( 3 + 7 ) = 0.3 E[\theta] = 3 / (3+7) = 0.3 E [ θ ] = 3/ ( 3 + 7 ) = 0.3 。
现在,我们假装不知道解析公式,并使用蒙特卡罗积分。这里,f ( θ ) = θ f(\theta) = \theta f ( θ ) = θ 。我们可以使用标准统计软件包库,很容易地直接从 Beta ( 3 , 7 ) \text{Beta}(3, 7) Beta ( 3 , 7 ) 分布中抽取样本 θ ( s ) \theta^{(s)} θ ( s ) 。
我们抽取 S S S 个样本并计算蒙特卡罗估计量:
E ^ S [ θ ] = 1 S ∑ s = 1 S θ ( s ) \hat{E}_S[\theta] = \frac{1}{S} \sum_{s=1}^{S} \theta^{(s)} E ^ S [ θ ] = S 1 s = 1 ∑ S θ ( s )
下图显示了估计值 E ^ S [ θ ] \hat{E}_S[\theta] E ^ S [ θ ] 如何随着样本数量 S S S 的增加而收敛到真实均值 (0.3)。
Beta(3, 7) 分布均值的蒙特卡罗估计的收敛性。蓝线显示了基于 S S S 个样本的估计值(对数标尺),随着 S S S 的增加,其值接近真实均值(红色虚线)。
这个简单的例子说明了核心原理:如果你能直接从目标分布 p ( θ ) p(\theta) p ( θ ) 中抽样,你就可以使用样本均值来近似期望。
难点:从后验分布中抽样
蒙特卡罗积分的效力完全依赖于我们从目标分布 p ( θ ) p(\theta) p ( θ ) 中抽取独立样本 θ ( s ) \theta^{(s)} θ ( s ) 的能力。在贝叶斯推断中,我们的目标分布是后验 p ( θ ∣ D ) p(\theta | D) p ( θ ∣ D ) 。
不幸的是,对于大多数值得关注的模型,后验分布 p ( θ ∣ D ) ∝ p ( D ∣ θ ) p ( θ ) p(\theta | D) \propto p(D | \theta) p(\theta) p ( θ ∣ D ) ∝ p ( D ∣ θ ) p ( θ ) 是一个复杂的高维函数,我们只知道其比例常数(证据 p ( D ) p(D) p ( D ) )。直接从这些分布中生成独立样本通常不可行。我们不能简单地调用像 numpy.random.beta 这样的函数来从任意的后验分布中获取样本。
与马尔可夫链蒙特卡罗的联系
这个重大限制正是我们需要马尔可夫链蒙特卡罗 (MCMC) 方法的原因。MCMC 技术提供了一个巧妙的解决办法。它们不是直接 从 p ( θ ∣ D ) p(\theta | D) p ( θ ∣ D ) 生成独立样本,而是构建一个马尔可夫链,其状态是 θ \theta θ 的可能值,并且其平衡(或平稳)分布正是目标后验 p ( θ ∣ D ) p(\theta | D) p ( θ ∣ D ) 。
通过运行这个马尔可夫链足够长的时间,链访问的状态可以被视为来自后验分布的样本。尽管这些样本通常是相关的 (不同于基本蒙特卡罗中假设的独立样本),但它们仍可在蒙特卡罗积分框架内使用。大数定律在马尔可夫链的特定条件(遍历性)下仍然成立。
因此,MCMC 方法使得我们能够从我们无法直接抽样的分布中生成所需的(尽管相关的)样本 θ ( 1 ) , θ ( 2 ) , . . . , θ ( S ) \theta^{(1)}, \theta^{(2)}, ..., \theta^{(S)} θ ( 1 ) , θ ( 2 ) , ... , θ ( S ) 。一旦有了这些样本,我们就使用标准蒙特卡罗估计量 1 S ∑ s = 1 S f ( θ ( s ) ) \frac{1}{S} \sum_{s=1}^{S} f(\theta^{(s)}) S 1 ∑ s = 1 S f ( θ ( s ) ) 来近似后验期望 E [ f ( θ ) ∣ D ] E[f(\theta) | D] E [ f ( θ ) ∣ D ] 。
本章接下来的部分将详细说明如何有效构建和使用这些马尔可夫链,从基本的 Metropolis-Hastings 算法开始。