直接计算贝叶斯模型中的后验分布$p(\mathbf{z}|\mathbf{x})$常常因为难以处理的证据项$p(\mathbf{x}) = \int p(\mathbf{x}, \mathbf{z}) d\mathbf{z}$而受阻。虽然MCMC方法提供了一种强大的基于模拟的方法,通过生成样本来近似后验分布,但它们可能需要大量的计算资源和时间,尤其是在处理大数据集或高维参数空间时。变分推断(VI)提供了一种完全不同的方法。VI不从后验分布中模拟样本,而是将推断问题转换为优化问题。核心思想是针对潜在变量$\mathbf{z}$,选择一个概率分布族$\mathcal{Q}$,其中每个分布$q(\mathbf{z}) \in \mathcal{Q}$都设计为易于处理(例如易于计算期望、密度等)。随后,我们在这个分布族中寻找一个特定的分布$q^*(\mathbf{z})$,使其“最接近”真实但难以处理的后验分布$p(\mathbf{z}|\mathbf{x})$。度量接近程度:KL散度我们如何量化近似分布$q(\mathbf{z})$与真实后验分布$p(\mathbf{z}|\mathbf{x})$之间的“接近程度”?VI中标准的度量是库尔巴克-莱布勒(KL)散度,记作$KL(q || p)$。对于我们特定的情况,其定义如下:$$ KL(q(\mathbf{z}) || p(\mathbf{z}|\mathbf{x})) = \int q(\mathbf{z}) \log \frac{q(\mathbf{z})}{p(\mathbf{z}|\mathbf{x})} d\mathbf{z} $$KL散度总是非负的($KL(q || p) \ge 0$),并且当且仅当$q(\mathbf{z})$和$p(\mathbf{z}|\mathbf{x})$几乎处处相等时,KL散度为零。最小化此KL散度意味着在选定的分布族$\mathcal{Q}$中找到最能匹配真实后验分布的$q(\mathbf{z})$。挑战与方案:引入ELBO初看起来,最小化$KL(q(\mathbf{z}) || p(\mathbf{z}|\mathbf{x}))$似乎并未解决我们最初的问题。直接计算KL散度仍然需要计算真实后验分布$p(\mathbf{z}|\mathbf{x})$,而这又涉及到难以处理的证据项$p(\mathbf{x})$。然而,我们可以对KL散度的定义进行代数重排。让我们使用条件概率的定义$p(\mathbf{z}|\mathbf{x}) = \frac{p(\mathbf{x}, \mathbf{z})}{p(\mathbf{x})}$展开对数内部的项:$$ KL(q(\mathbf{z}) || p(\mathbf{z}|\mathbf{x})) = \int q(\mathbf{z}) \log \frac{q(\mathbf{z}) p(\mathbf{x})}{p(\mathbf{x}, \mathbf{z})} d\mathbf{z} $$我们可以分离对数中的各项:$$ KL(q(\mathbf{z}) || p(\mathbf{z}|\mathbf{x})) = \int q(\mathbf{z}) \log q(\mathbf{z}) d\mathbf{z} - \int q(\mathbf{z}) \log p(\mathbf{x}, \mathbf{z}) d\mathbf{z} + \int q(\mathbf{z}) \log p(\mathbf{x}) d\mathbf{z} $$识别这些积分是关于$q(\mathbf{z})$的期望,并注意到$\log p(\mathbf{x})$是相对于$\mathbf{z}$的常数(因此$\int q(\mathbf{z}) \log p(\mathbf{x}) d\mathbf{z} = \log p(\mathbf{x}) \int q(\mathbf{z}) d\mathbf{z} = \log p(\mathbf{x})$),我们得到:$$ KL(q(\mathbf{z}) || p(\mathbf{z}|\mathbf{x})) = \mathbb{E}{q(\mathbf{z})} [\log q(\mathbf{z})] - \mathbb{E}{q(\mathbf{z})} [\log p(\mathbf{x}, \mathbf{z})] + \log p(\mathbf{x}) $$重新排列这个方程,我们得到一个重要的关系:$$ \log p(\mathbf{x}) = \underbrace{\mathbb{E}{q(\mathbf{z})} [\log p(\mathbf{x}, \mathbf{z})] - \mathbb{E}{q(\mathbf{z})} [\log q(\mathbf{z})]}_{\mathcal{L}(q)} + KL(q(\mathbf{z}) || p(\mathbf{z}|\mathbf{x})) $$标记为$\mathcal{L}(q)$的项被称为证据下界(ELBO)。由于KL散度总是非负的($KL(q || p) \ge 0$),这个方程说明ELBO总是小于或等于模型证据的对数:$$ \log p(\mathbf{x}) \ge \mathcal{L}(q) $$这种关系是变分推断的根本。将ELBO最大化作为推断策略考虑方程$\log p(\mathbf{x}) = \mathcal{L}(q) + KL(q(\mathbf{z}) || p(\mathbf{z}|\mathbf{x}))。左侧的$\log p(\mathbf{x})$是我们模型在给定数据下的对数证据。对于一个固定的模型和数据集,这个值是常数,与我们选择的$q(\mathbf{z})$无关。因此,关于$q(\mathbf{z})$最大化ELBO $\mathcal{L}(q)$,必然等同于最小化KL散度$KL(q(\mathbf{z}) || p(\mathbf{z}|\mathbf{x}))$。重要的一点是,ELBO,$\mathcal{L}(q) = \mathbb{E}{q(\mathbf{z})} [\log p(\mathbf{x}, \mathbf{z})] - \mathbb{E}{q(\mathbf{z})} [\log q(\mathbf{z})]$,不直接依赖于难以处理的证据$p(\mathbf{x})$或真实后验分布$p(\mathbf{z}|\mathbf{x})$。它只依赖于联合分布$p(\mathbf{x}, \mathbf{z})$(通常由我们的模型规范定义)以及我们的近似分布$q(\mathbf{z})$。这将推断问题转换为一个优化问题:即在选定的分布族$\mathcal{Q}$中找到使ELBO最大化的分布$q^(\mathbf{z})$。所得的$q^(\mathbf{z})$即作为真实后验分布$p(\mathbf{z}|\mathbf{x})$的近似。digraph G { rankdir=LR; node [shape=ellipse, style=filled, fillcolor="#e9ecef", fontname="helvetica"]; edge [fontname="helvetica"]; subgraph cluster_0 { label = "变分分布族 Q"; bgcolor="#f8f9fa"; style=dashed; Q_space [label="易于处理的分布 q(z) 集合", shape=box, style=dotted]; q_star [label="q*(z)\n(最优近似)", fillcolor="#74c0fc"]; } P_posterior [label="p(z|x)\n(真实后验)\n难以处理", fillcolor="#ffc9c9"]; ELBO_Opt [label="最大化ELBO L(q)", shape=box, style=rounded, fillcolor="#96f2d7"]; Q_space -> q_star [label=" 优化 ", style=invis]; ELBO_Opt -> q_star [label=" 产生 "]; q_star -> P_posterior [label=" 最小化 KL(q||p) ", dir=back]; {rank=same; ELBO_Opt; P_posterior} }变分推断在易于处理的分布族$\mathcal{Q}$中寻找使证据下界(ELBO)最大化的分布$q^(\mathbf{z})$。这种最大化等同于最小化$q^(\mathbf{z})$与真实后验分布$p(\mathbf{z}|\mathbf{x})$之间的KL散度。当前实际的难点在于:选择一个适当的分布族$\mathcal{Q}$,使其兼顾易处理性和灵活性。研发执行所需优化以最大化$\mathcal{L}(q)$的算法。以下章节将研究$\mathcal{Q}$的常见选择,例如平均场近似,并介绍旨在高效最大化ELBO的算法,如坐标上升变分推断(CAVI)和随机变分推断(SVI)。