减性混合模型(SMM)的近似推断:采样法与变分推断实践指南

发布时间:2026/6/23 2:36:22
减性混合模型(SMM)的近似推断:采样法与变分推断实践指南 1. 项目概述从“精确”到“近似”的必然之路在机器学习和统计建模的实践中我们常常会构建复杂的概率模型来描述数据。一个理想的模型比如一个包含隐变量的生成模型其核心魅力在于能够通过贝叶斯定理在观测到数据后更新我们对隐变量状态的认识即计算后验概率分布。然而现实往往是骨感的。对于绝大多数有趣的模型这个后验分布要么没有解析解要么计算其归一化常数也就是证据的积分是难以处理的。这就好比你知道一个宝藏后验分布藏在一座结构极其复杂的迷宫里理论上存在但想精确地画出它的藏宝图几乎不可能。这就是“近似推断”登场的背景。它的目标不是求得那个精确的、遥不可及的后验而是寻找一个“足够好”的替代品——一个我们可以高效计算和处理的分布来近似真实的后验。今天我们要深入探讨的便是在这个领域中一个强大而灵活的框架减性混合模型。SMM 本身并不是一个单一的模型而是一类模型的统称其核心思想是用一个更简单的“基”分布通过一系列可逆的减法变换来构造出复杂的、多模态的分布。想象一下你不是直接雕刻一个复杂的雕像而是先准备一块形状规则的原料基分布然后通过一系列精准的“削减”操作最终得到你想要的形态。这种方法为近似推断提供了新的武器尤其是在面对后验分布形状怪异、存在多个峰值时传统的单一高斯分布近似往往力不从心而 SMM 则能更好地捕捉这种复杂性。本文将围绕 SMM 展开不仅拆解其数学原理更聚焦于两大主流的近似推断方法在其上的实践采样法与变分推断。采样法如马尔可夫链蒙特卡洛试图通过生成服从后验分布的样本来“感受”其形态而变分推断则转换思路将推断问题转化为一个优化问题寻找一个参数化分布族中与真实后验最接近的那个成员。我们将看到SMM 的结构如何与这两种方法巧妙结合以及在实际操作中你会遇到哪些坑又该如何避开。2. 减性混合模型的核心原理与构造要理解基于 SMM 的近似推断首先必须吃透 SMM 本身是如何工作的。这不仅仅是记住公式更要理解其设计动机和所能带来的表达能力提升。2.1 为什么是“减性”混合传统的混合模型比如高斯混合模型是“加性”的。它通过将多个简单的分布组件按权重相加来构造复杂分布p(x) Σ π_k * p_k(x)。这种方法直观但在推断时尤其是计算后验时可能会遇到组件数量选择、权重学习等问题并且其概率密度函数的计算涉及到所有组件的求和。减性混合模型采取了一条不同的路径。它从一个简单的、易于处理的“基”分布p_0(x)出发。然后引入一系列“减项”r_m(x)。最终模型的形式通常可以表述为p(x) (1/Z) * [p_0(x) - Σ_{m1}^{M} α_m * r_m(x)]_其中[·]_表示取正部即小于0时置为0Z是归一化常数α_m是正的混合系数。r_m(x)本身通常也是定义良好的概率密度函数或正函数。核心直觉基分布p_0提供了一个全局的、基础的概率轮廓。而每一个减项r_m的作用就像雕塑家手中的凿子在p_0的某些特定区域“削减”掉一部分概率质量。通过精心设计和放置这些“凿子”减项我们可以在基分布上“雕刻”出凹陷、多模态等复杂结构。例如如果p_0是一个宽峰的高斯分布我们可以在其两侧放置两个减项从而将单峰“雕刻”成双峰。这种构造方式的优势在于灵活性通过调整减项的数量、位置和形状理论上可以近似任意复杂的分布。可处理性尽管最终分布p(x)可能很复杂但其组成部分p_0和r_m通常是我们熟悉的分布如高斯分布它们的性质如采样、计算密度我们是知道的。归一化的挑战这也是最大的难点。由于减法的存在为了保证p(x)处处非负我们需要取正部并且计算归一化常数Z通常没有闭式解。这正是我们需要近似推断的原因——我们无法直接精确地处理这个p(x)但我们可以利用其结构来近似地采样或优化。2.2 模型的具体参数化与一个实例为了使讨论更具体我们考虑一个常用的参数化方式。设基分布p_0(x)为标准正态分布N(x | 0, 1)。我们选择减项r_m(x)也为高斯分布但具有不同的均值和方差例如r_m(x) N(x | μ_m, σ_m^2)。那么我们的 SMM 定义为p(x) ∝ [N(x | 0, 1) - Σ_{m1}^{M} α_m * N(x | μ_m, σ_m^2)]_这里的参数包括所有减项的混合系数α_m、均值μ_m和方差σ_m^2。α_m控制了“削减”的深度μ_m和σ_m控制了“削减”发生的位置和范围。注意α_m必须被小心选择以确保括号内的表达式在大部分区域为正否则经过取正操作后大量区域概率为零模型会变得非常稀疏且难以处理。在实践中通常会对α_m施加约束或使用正则化。一个可视化例子假设M2p_0是N(0, 1)。我们设置减项1:α_10.3,μ_1-1.5,σ_10.4减项2:α_20.25,μ_21.5,σ_20.5那么p_0(x)是一个中心在0的单峰。减项1在x≈-1.5处削减了一部分概率质量减项2在x≈1.5处也削减了一部分。最终p(x)可能会呈现出一个三峰的结构中心主峰被削弱两侧因削减而相对凸显形成两个次峰。这就展示了 SMM 如何从单峰基分布创造出多模态分布。3. 为近似推断准备SMM的挑战与目标设定在将 SMM 应用于实际推断问题如贝叶斯后验近似之前我们必须明确我们面临的核心挑战这决定了后续方法的选择。3.1 核心挑战难以处理的积分对于 SMM 定义的概率密度p(x) ∝ [p_0(x) - Σ α_m r_m(x)]_几乎所有我们关心的操作都涉及对其归一化常数Z的计算Z ∫ [p_0(x) - Σ α_m r_m(x)]_ dx这个积分在高维空间x上通常没有解析解。这直接导致了以下困难无法精确计算概率密度我们只能计算未归一化的密度p̃(x) [p_0(x) - Σ α_m r_m(x)]_但不知道Z。无法直接采样标准的采样方法如逆变换采样、拒绝采样需要知道归一化的密度或累积分布函数。难以进行最大似然估计学习模型参数α_m, μ_m, σ_m需要计算涉及Z的对数似然梯度。因此近似推断不是可选项而是必选项。我们的目标转化为在无法精确计算Z的情况下如何对p(x)进行近似采样或者如何找到一个参数化分布q_φ(x)来近似p(x)。3.2 两种主流的近似推断范式针对上述挑战衍生出两条主要的技术路线采样方法其哲学是“虽然我不知道整个分布的确切形状但我可以派出一堆‘侦察兵’样本去探索它通过侦察兵的报告来了解地形”。我们不需要知道Z只需要能够评估未归一化的密度p̃(x)。马尔可夫链蒙特卡洛方法就是基于这一思想它构造一个马尔可夫链使其平稳分布恰好是我们的目标分布p(x)。M-H 采样和哈密顿蒙特卡洛是其中的代表。变分推断其哲学是“我承认无法找到精确解但我可以在一个我熟悉的、易于处理的分布族Q中找一个与目标分布p(x)最像的q_φ(x)”。这里的“像”用 KL 散度来衡量。VI 将推断问题转化为优化问题最小化KL(q_φ(x) || p(x))。由于p(x)包含Z直接优化不可行VI 巧妙地优化其等价形式——证据下界。在接下来的部分我们将深入这两种方法在 SMM 上的具体实践你会看到 SMM 的结构如何被利用又会引入哪些新的考量。4. 基于采样的近似推断实践采样方法为我们提供了一种绕过归一化常数Z的途径。对于 SMM我们核心需要的是能够计算未归一化密度p̃(x)。基于此我们可以应用多种 MCMC 算法。4.1 梅特罗波利斯-黑斯廷斯采样在 SMM 上的应用M-H 采样是最通用、最容易实现的 MCMC 方法之一。其核心步骤对于 SMM 来说非常直接。算法步骤初始化选择一个初始状态x^(0)。对于迭代 t0, 1, 2, ... a.提议从提议分布q(x* | x^(t))中抽取一个候选样本x*。常用的是以当前点为中心的高斯分布随机游走提议x* ~ N(x^(t), σ_prop^2 I)。 b.计算接受率A min(1, (p̃(x*) * q(x^(t) | x*)) / (p̃(x^(t)) * q(x* | x^(t))))由于我们使用对称的提议分布如高斯q(x* | x^(t)) q(x^(t) | x*)因此接受率简化为A min(1, p̃(x*) / p̃(x^(t)))c.接受/拒绝以概率A接受候选点令x^(t1) x*否则拒绝令x^(t1) x^(t)。在 SMM 上的实操要点计算p̃(x)这是你唯一需要为 SMM 实现的函数。输入一个点x计算p_0(x)和所有r_m(x)然后执行max(0, p_0(x) - Σ α_m r_m(x))。注意数值稳定性当结果为负时直接返回0。提议分布方差σ_prop的选择这是 M-H 采样的关键超参数。σ_prop太小接受率高但链移动缓慢探索效率低样本自相关性高。σ_prop太大提议经常跳到低概率区域导致拒绝率极高链停滞不前。经验法则目标是让平均接受率在 20% 到 40% 之间对于中等以上维度问题。你需要进行试运行来调整σ_prop。处理“取正部”操作p̃(x)在减项过强的区域可能为零。如果当前点x^(t)恰好位于p̃(x)0的区域理论上不应发生因为链一旦进入零概率区域就很难跳出计算接受率时会除以零。因此在实现时如果p̃(x^(t))为零或低于一个极小阈值应强制拒绝候选点并保持原地。更好的做法是确保初始化点在p̃(x) 0的区域。实操心得对于形状复杂、多模态的 SMM随机游走 M-H 采样可能会陷入某个局部模态难以在模态间跳转。这是因为从一个模态的“山峰”提议到另一个模态的“山峰”需要穿越概率极低的“山谷”接受率几乎为零。这是 M-H 采样在处理多模态分布时的固有局限。4.2 哈密顿蒙特卡洛应对高维与复杂几何当 SMM 的参数x维度较高或者分布几何结构复杂强相关性、窄峡谷等时随机游走 M-H 效率极低。HMC 利用目标分布的梯度信息来引导采样能产生远距离、低自相关的提议从而大幅提升效率。HMC 核心思想将采样过程类比为在物理系统中模拟一个“粒子”的运动。将负对数概率-log p̃(x)视为势能场U(x)。引入辅助的动量变量r其动能K(r) r^T r / 2。系统的总能量哈密顿量H(x, r) U(x) K(r)是守恒的。通过模拟该物理系统在相空间(x, r)中的轨迹使用蛙跳积分器我们可以得到新的(x*, r*)然后以类似于 M-H 的方式决定是否接受。在 SMM 上的实现步骤定义势能U(x) -log p̃(x)。注意由于p̃(x)包含取正部操作U(x)在p̃(x)0的区域是无穷大。在实际计算中我们需要确保模拟的轨迹不会进入这些区域或者对log函数进行保护例如log(max(p̃(x), ε))其中ε是一个极小的正数。计算梯度∇U(x) -∇log p̃(x) - (∇p̃(x)) / p̃(x)。由于p̃(x) [p_0(x) - Σ α_m r_m(x)]_其梯度在p̃(x)0的区域是∇p_0(x) - Σ α_m ∇r_m(x)在p̃(x)0的区域未定义或为零。这是实现 HMC for SMM 最需要小心的地方。必须确保在模拟轨迹时x始终位于p̃(x)0的区域。蛙跳积分 a. 采样初始动量r ~ N(0, I)。 b. 半步更新动量r ← r - (ε/2) * ∇U(x)。 c. 交替全步更新位置和动量重复 L 次x ← x ε * rr ← r - ε * ∇U(x)最后一次迭代只更新 L-1 次动量 d. 最后半步更新动量r ← r - (ε/2) * ∇U(x)。接受决策以概率min(1, exp(H(x, r) - H(x*, r*)))接受新的(x*, r*)。关键超参数与调优步长 ε控制积分精度。太大导致能量误差大接受率低太小则计算浪费。通常通过自适应调整使平均接受率在 65% 左右HMC 的理想目标。轨迹长度 L控制每次提议的移动距离。L太小探索不足L太大计算成本高且可能绕回原点。一个流行的方法是使用“No-U-Turn Sampler” 的思想来自适应决定L。质量矩阵动量协方差通常设为单位阵I。如果x的各维度尺度差异巨大可以对x进行预处理白化或使用对角甚至全协方差矩阵作为质量矩阵这对应于对动量变量进行缩放。注意事项对于具有尖锐边界由取正部引起的 SMMHMC 的模拟轨迹可能会“撞墙”。如果ε设置过大一步更新可能将x从正概率区域推到零概率区域导致U(x)变成无穷大数值计算崩溃。一个保护措施是使用更小的ε或者在梯度计算中加入软边界但这会引入偏差。另一种策略是使用约束型的 HMC但实现更复杂。4.3 采样实践中的诊断与陷阱生成样本后如何判断采样是否成功以下是一些关键的诊断手段和常见陷阱收敛诊断目视检查绘制每个维度的采样轨迹图。理想情况下链应该像“毛虫”一样平稳移动没有明显的趋势或长期停留在某个区域。多运行几条从不同起点开始的链观察它们是否混合覆盖相同的区域。自相关函数计算样本在不同滞后步数下的自相关性。ACF 应迅速衰减至零。高自相关意味着样本携带的信息量低有效样本量小。Gelman-Rubin R-hat 统计量运行多条独立链比较链间方差和链内方差。R-hat接近1通常 1.1表示收敛良好。针对 SMM 的特殊陷阱模态滞留对于多模态 SMMM-H 或 HMC 可能无法在模态间跳转。解决方案使用能促进模态跳跃的算法变种如回火采样模拟一个高温下的平滑版本分布辅助跨越能垒或并行回火同时运行多个不同温度的链并允许交换状态。零概率区域初始化如果初始点落在p̃(x)0的区域链可能无法启动。解决方案从基分布p_0中采样多个点作为候选选择p̃(x)最大的点作为初始点。梯度在边界处的不连续p̃(x)的梯度在p̃(x)0的边界处不连续可能影响 HMC 的稳定性。解决方案使用软化的取正部操作例如log(exp(p_0 - Σ α_m r_m) 1)的某种近似但这会改变模型定义。5. 基于变分推断的近似推断实践变分推断提供了另一种思路与其费力地从p(x)中采样不如主动寻找一个易于处理的分布q_φ(x)来近似它。对于 SMM我们通常选择q_φ(x)来自一个简单的分布族如高斯分布或高斯混合模型。5.1 变分下界与优化目标我们的目标是最小化q_φ(x)与真实后验p(x)的 KL 散度KL(q_φ(x) || p(x))。展开后KL(q_φ || p) E_{x~q}[log q_φ(x)] - E_{x~q}[log p(x)]由于p(x) p̃(x)/Z代入得KL(q_φ || p) E_{x~q}[log q_φ(x)] - E_{x~q}[log p̃(x)] log Z其中log Z与φ无关。因此最小化KL等价于最大化ELBO(φ) E_{x~q}[log p̃(x)] - E_{x~q}[log q_φ(x)]这个ELBO被称为证据下界。我们的变分推断问题转化为φ* argmax_φ ELBO(φ)。对于 SMMlog p̃(x) log [p_0(x) - Σ α_m r_m(x)]_。注意log和取正部的顺序很重要。在实现时我们计算p̃(x)的值然后取log并需要处理p̃(x)0的情况通常返回一个极大的负值。5.2 变分分布族的选择与参数化选择q_φ(x)是一门艺术需要在表达能力和计算复杂度之间权衡。平均场变分族假设各维度独立q_φ(x) Π_i q_i(x_i)。每个q_i可以是高斯分布参数为均值和方差。这是最简单的选择计算方便但无法捕捉变量间的相关性。全协方差高斯族q_φ(x) N(x | μ, Σ)其中Σ是一个完整的协方差矩阵。这能捕捉相关性但参数数量是O(d^2)对于高维x计算和存储成本高且需要保证Σ正定。低秩加对角协方差折中方案Σ D VV^T其中D是对角阵V是低秩矩阵。参数数量为O(d*k)k为秩。归一化流通过一系列可逆变换将一个简单分布如标准高斯映射到复杂分布。表达能力极强可以近似任意分布但计算成本和实现复杂度也更高。对于 SMM 的考量如果真实的 SMM 后验是多模态的那么使用单峰的高斯变分族无论是平均场还是全协方差效果会很差因为 KL 散度会迫使q找到一个覆盖所有模态的“平均”位置导致近似过于分散。此时考虑使用混合变分分布例如高斯混合模型作为q_φ是更合适的选择。5.3 随机梯度上升与重参数化技巧ELBO的优化通常使用随机梯度上升。难点在于ELBO的梯度包含对q_φ的期望∇_φ ELBO ∇_φ E_{x~q_φ}[log p̃(x) - log q_φ(x)]。期望依赖于参数φ不能简单地将梯度符号移入。重参数化技巧是解决此问题的关键。其核心思想是将从q_φ(x)中采样的过程重写为一个确定性变换x g_φ(ε)其中ε来自一个与φ无关的基础分布如标准正态N(0, I)。这样期望的梯度就可以计算了。以对角高斯变分族为例设q_φ(x) N(x | μ, diag(σ^2))φ (μ, log σ)。重参数化x μ σ ⊙ ε其中ε ~ N(0, I)⊙表示逐元素相乘。ELBO可重写为ELBO E_{ε~N(0,I)}[log p̃(μ σ ⊙ ε) - log N(μ σ ⊙ ε | μ, diag(σ^2))]。现在期望与φ无关梯度可以移入∇_φ ELBO E_{ε~N(0,I)}[∇_φ (log p̃(μ σ ⊙ ε) - log N(...))]。我们可以从N(0,I)中抽取少量样本ε计算括号内表达式的梯度通过自动微分然后取平均作为梯度的蒙特卡洛估计。优化流程初始化变分参数φ。对于每次迭代 a. 从基础分布如N(0,I)采样一批噪声向量ε。 b. 通过重参数化计算样本x g_φ(ε)。 c. 计算这批样本的ELBO估计值及其关于φ的梯度使用自动微分框架如 PyTorch/TensorFlow/JAX。 d. 使用梯度上升更新φ如 Adam 优化器。直到ELBO收敛。实操心得对于包含log p̃(x)项的计算数值稳定性至关重要。当p̃(x)非常接近零时直接取log会导致-inf。一个稳健的实现是log_p_tilde np.log(np.maximum(p_tilde, 1e-300))。同时log q_φ(x)的计算也应使用稳定的高斯对数密度函数实现。5.4 处理 SMM 中的多模态混合变分分布当目标 SMM 后验明显是多模态时使用单峰变分分布会失败。此时我们可以让q_φ(x)本身也是一个混合分布例如高斯混合模型q_φ(x) Σ_{k1}^{K} π_k * N(x | μ_k, Σ_k)其中变分参数φ包含所有权重π_k、均值μ_k和协方差Σ_k的参数。优化挑战直接对混合权重π_k使用梯度下降是困难的因为需要满足π_k 0且Σ π_k 1。通常使用 softmax 参数化π_k exp(η_k) / Σ_j exp(η_j)然后对未归一化的η_k进行优化。ELBO 计算此时的ELBO包含一个对数求和项计算更复杂ELBO E_{x~q_φ}[log p̃(x)] - E_{x~q_φ}[log q_φ(x)]第二项E[log q_φ(x)]没有闭式解也需要通过采样来估计。我们可以从混合分布q_φ中采样但这需要知道应从哪个组件k采样。一个标准的方法是使用“Gumbel-Softmax”重参数化技巧来处理离散的组件选择或者使用“连续松弛”技术。另一种思路——半隐式变分推断SIVI 允许变分分布q_φ(x)具有更复杂的形式例如q_φ(x) ∫ q_φ(x|z) p(z) dz其中z是隐变量。这可以产生多模态甚至更复杂的分布。优化时ELBO会包含一个难处理的熵项但可以通过额外的技巧如使用对抗训练或使用辅助推断网络来估计。选择建议对于初学者如果怀疑后验是多模态的可以首先尝试增加单峰变分分布的协方差全协方差看ELBO是否能有显著提升。如果不行再考虑引入混合变分分布但这会大大增加优化复杂度和计算成本。通常K组件数不需要设置得很大2或3个组件往往就能捕捉到主要的模态。6. 采样法与变分推断的对比与选型指南实践当中面对一个具体的 SMM 近似推断问题我们该如何在采样和变分推断之间做选择下表从多个维度进行了对比特性维度采样方法 (如 HMC)变分推断 (如重参数化梯度)理论保证渐进精确。在采样次数趋于无穷时样本精确服从目标分布。有偏近似。最优的q_φ*与真实分布p之间仍有 KL 散度。计算成本每次迭代成本高。需要模拟动力学轨迹HMC或计算接受率M-H且需要大量样本以保证收敛。每次迭代成本低。一次梯度更新只需要少量样本如几十个。优化过程通常更快达到稳定。收敛诊断复杂且必要。需要检查自相关、R-hat 等确保链已混合。相对简单。主要监控ELBO随迭代的变化看其是否收敛。处理多模态可能陷入局部模态。标准 MCMC 难以在相距较远的模态间跳转需借助回火等高级技术。依赖变分族表达能力。若使用单峰q会得到覆盖所有模态的“平均”解。需使用混合q来捕捉多模态。提供的不确定性完整。样本集合直接反映了目标分布的整体形态包括方差、协方差、尾部等信息。受限于变分族。若q是高斯族则只能提供高斯形态的不确定性可能低估真实后验的方差或误判其形状。获得归一化常数困难。MCMC 本身不直接提供Z需要额外估计如热力学积分。间接获得。ELBO是log Z的下界。优化结束后ELBO的值可以作为一个对log Z的估计通常是低估。可扩展性对高维问题挑战大。HMC 需要计算梯度且步长、轨迹长度等调参在高维更棘手。易于扩展到大数据。结合随机优化可以处理大规模数据集随机变分推断。实现复杂度中到高。HMC 需要手动实现或使用库如 Stan, PyMC调参需要经验。中。在自动微分框架下实现重参数化梯度相对直接。但设计复杂的变分族如流难度高。选型建议追求精确后验用于最终报告或关键决策如果计算资源充足且你需要对后验分布进行最准确的描述例如在科学报告中那么HMC 等精确采样方法是金标准。尽管慢但其渐进无偏的性质是 VI 无法比拟的。快速原型探索或大规模问题当你需要快速迭代模型或者数据量、参数量非常大时变分推断是更实用的选择。它能在短时间内提供一个合理的近似分布用于预测或后续分析。后验形态未知时可以先运行一个快速的变分推断即使使用简单的变分族其结果可以作为 MCMC 采样的初始化点并能帮助你了解后验的大致位置和尺度为 HMC 的步长等超参数设置提供参考。面对复杂多模态 SMM如果确信后验是多模态的且需要完整刻画考虑使用并行回火 MCMC。如果对速度要求高可以尝试混合变分分布但要做好优化更困难的准备。7. 一个完整的数值实验双峰 SMM 的推断对比让我们通过一个具体的例子将上述理论付诸实践。假设我们有一个一维的 SMM其真实分布p(x)是我们想要推断的目标在实际情况中p(x)可能代表一个贝叶斯模型的后验。我们设定基分布p_0(x) N(x | 0, 2^2)方差较大较平缓两个减项r_1(x) N(x | -2, 0.8^2),α_1 0.4r_2(x) N(x | 3, 1^2),α_2 0.3真实分布p(x) ∝ [p_0(x) - 0.4*r_1(x) - 0.3*r_2(x)]_这个分布会在x ≈ -2和x ≈ 3附近形成两个主要的峰而在x ≈ 0附近由于基分布被削减而形成一个低谷。任务我们不知道 SMM 的参数α, μ, σ但我们假设我们可以计算任何x处的未归一化密度p̃(x)。我们的目标是从p(x)中近似采样或找到一个近似分布q(x)。7.1 实施 M-H 采样我们使用随机游走 M-H 采样提议分布为q(x*|x) N(x* | x, σ_prop^2)。初始化x0。调参经过试验选择σ_prop 1.5使得接受率大约在 30%。采样运行链 20000 次迭代丢弃前 5000 次作为预热期。结果绘制采样轨迹和样本直方图。你会发现链大部分时间在两个峰值附近来回跳跃但偶尔会卡在其中一个模态一段时间。直方图能较好地还原双峰结构。踩坑记录初始尝试使用σ_prop 0.5接受率很高~70%但链的移动非常缓慢自相关性极高有效样本量很低。增大σ_prop后虽然接受率下降但探索效率显著提升。关键点不要盲目追求高接受率在 M-H 中中等接受率往往意味着更好的混合。7.2 实施变分推断高斯变分族我们假设变分分布为单峰高斯q_φ(x) N(x | μ, σ^2)参数φ (μ, log σ)。初始化μ0, log σ0。优化使用重参数化技巧和 Adam 优化器学习率lr0.05。每次迭代从q_φ中采样 100 个点来估计ELBO的梯度。结果优化后μ会收敛到两个峰值之间的某个点大约 0.5σ会变得较大以试图同时覆盖两个峰。绘制q(x)与真实p(x)通过归一化后的核密度估计近似的对比图你会发现单峰高斯只能提供一个粗糙的、覆盖全局的近似完全丢失了双峰特性。其ELBO值也远低于通过 MCMC 样本估计的log Z下界。7.3 实施变分推断两组件高斯混合变分族我们升级变分分布q_φ(x) π * N(x | μ1, σ1^2) (1-π) * N(x | μ2, σ2^2)参数φ包含logit(π), μ1, log σ1, μ2, log σ2。初始化让两个组件的均值初始化为不同的值如 -1 和 2以避免模式坍塌两个组件收敛到同一个点。优化使用 Gumbel-Softmax 重参数化来处理离散的组件选择。优化过程比单峰高斯更不稳定需要更小的学习率如lr0.01和更多的采样。结果优化成功后两个组件会分别捕捉到两个峰值的位置和宽度。π反映了两个峰的相对质量。此时的q(x)能很好地近似真实的双峰分布ELBO值也显著高于单峰高斯的情况。实验结论这个简单的实验清晰地展示了MCMC能够恢复复杂的分布形态但需要仔细调参和诊断。简单变分族的计算效率高但表达能力有限可能给出有误导性的近似如用单峰高斯近似双峰分布。表达力强的变分族如混合模型可以匹配复杂形态但优化难度和计算成本增加。在实际项目中你需要根据问题的具体需求精度 vs. 速度、后验的预期复杂度以及可用的计算资源在这三者之间做出权衡。通常从一个简单的 VI 开始进行快速探索再用 MCMC 进行精确验证是一个稳健的工作流程。