直接计算贝叶斯模型中的后验分布p(z∣x)常常因为难以处理的证据项p(x)=∫p(x,z)dz而受阻。虽然MCMC方法提供了一种强大的基于模拟的方法,通过生成样本来近似后验分布,但它们可能需要大量的计算资源和时间,尤其是在处理大数据集或高维参数空间时。
变分推断(VI)提供了一种完全不同的方法。VI不从后验分布中模拟样本,而是将推断问题转换为优化问题。核心思想是针对潜在变量z,选择一个概率分布族Q,其中每个分布q(z)∈Q都设计为易于处理(例如易于计算期望、密度等)。随后,我们在这个分布族中寻找一个特定的分布q∗(z),使其“最接近”真实但难以处理的后验分布p(z∣x)。
度量接近程度:KL散度
我们如何量化近似分布q(z)与真实后验分布p(z∣x)之间的“接近程度”?VI中标准的度量是库尔巴克-莱布勒(KL)散度,记作KL(q∣∣p)。对于我们特定的情况,其定义如下:
KL(q(z)∣∣p(z∣x))=∫q(z)logp(z∣x)q(z)dz
KL散度总是非负的(KL(q∣∣p)≥0),并且当且仅当q(z)和p(z∣x)几乎处处相等时,KL散度为零。最小化此KL散度意味着在选定的分布族Q中找到最能匹配真实后验分布的q(z)。
挑战与方案:引入ELBO
初看起来,最小化KL(q(z)∣∣p(z∣x))似乎并未解决我们最初的问题。直接计算KL散度仍然需要计算真实后验分布p(z∣x),而这又涉及到难以处理的证据项p(x)。
然而,我们可以对KL散度的定义进行代数重排。让我们使用条件概率的定义p(z∣x)=p(x)p(x,z)展开对数内部的项:
KL(q(z)∣∣p(z∣x))=∫q(z)logp(x,z)q(z)p(x)dz
我们可以分离对数中的各项:
KL(q(z)∣∣p(z∣x))=∫q(z)logq(z)dz−∫q(z)logp(x,z)dz+∫q(z)logp(x)dz
识别这些积分是关于q(z)的期望,并注意到logp(x)是相对于z的常数(因此∫q(z)logp(x)dz=logp(x)∫q(z)dz=logp(x)),我们得到:
KL(q(z)∣∣p(z∣x))=Eq(z)[logq(z)]−Eq(z)[logp(x,z)]+logp(x)
重新排列这个方程,我们得到一个重要的关系:
logp(x)=L(q)Eq(z)[logp(x,z)]−Eq(z)[logq(z)]+KL(q(z)∣∣p(z∣x))
标记为L(q)的项被称为证据下界(ELBO)。由于KL散度总是非负的(KL(q∣∣p)≥0),这个方程说明ELBO总是小于或等于模型证据的对数:
logp(x)≥L(q)
这种关系是变分推断的根本。
将ELBO最大化作为推断策略
考虑方程logp(x)=L(q)+KL(q(z)∣∣p(z∣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,L(q)=Eq(z)[logp(x,z)]−Eq(z)[logq(z)],不直接依赖于难以处理的证据p(x)或真实后验分布p(z∣x)。它只依赖于联合分布p(x,z)(通常由我们的模型规范定义)以及我们的近似分布q(z)。
这将推断问题转换为一个优化问题:即在选定的分布族Q中找到使ELBO最大化的分布q∗(z)。所得的q∗(z)即作为真实后验分布p(z∣x)的近似。
变分推断在易于处理的分布族Q中寻找使证据下界(ELBO)最大化的分布q∗(z)。这种最大化等同于最小化q∗(z)与真实后验分布p(z∣x)之间的KL散度。
当前实际的难点在于:
- 选择一个适当的分布族Q,使其兼顾易处理性和灵活性。
- 研发执行所需优化以最大化L(q)的算法。
以下章节将研究Q的常见选择,例如平均场近似,并介绍旨在高效最大化ELBO的算法,如坐标上升变分推断(CAVI)和随机变分推断(SVI)。