变分推断(VI)通过将推断问题转化为优化问题,寻求对真实后验 p(z∣x) 的近似 q(z)。我们优化的核心量是证据下界(ELBO)。下面我们来推导这个主要的目标函数。
我们的目标是使 q(z) 尽可能接近真实后验 p(z∣x)。衡量两种概率分布之间差异的标准方式是 Kullback-Leibler (KL) 散度。我们希望使近似 q(z) 到真实后验 p(z∣x) 的 KL 散度最小化:
KL(q(z)∣∣p(z∣x))=∫q(z)logp(z∣x)q(z)dz
直接最小化这个 KL 散度很困难,因为它涉及真实后验 p(z∣x),而真实后验本身包含难以处理的证据项 p(x),因为 p(z∣x)=p(x,z)/p(x)。
让我们展开 KL 散度公式中后验的定义:
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)logq(z)dz: 这是分布 q(z) 的负熵的定义,通常写作 −H(q)。用期望符号表示,它是 Eq(z)[logq(z)]。
- ∫q(z)logp(x,z)dz: 这是在分布 q(z) 下对数联合概率 p(x,z) 的期望,写作 Eq(z)[logp(x,z)]。
- ∫q(z)logp(x)dz: 由于 logp(x) 对于积分变量 z 是常数,我们可以将其提出积分号外。剩余的积分 ∫q(z)dz 简单地等于 1,因为 q(z) 是一个概率分布。因此,这一项简化为 logp(x)。
将这些代回 KL 散度公式:
KL(q(z)∣∣p(z∣x))=Eq(z)[logq(z)]−Eq(z)[logp(x,z)]+logp(x)
将此方程重新排列以分离对数证据 logp(x),得到变分推断中的一个基本恒等式:
logp(x)=L(q)Eq(z)[logp(x,z)]−Eq(z)[logq(z)]+KL(q(z)∣∣p(z∣x))
标记 (token)为 L(q) 的项是证据下界(ELBO):
L(q)=Eq(z)[logp(x,z)]−Eq(z)[logq(z)]
这也可以使用熵 H(q)=−Eq(z)[logq(z)] 表示为:
L(q)=Eq(z)[logp(x,z)]+H(q)
为什么它是下界?
KL 散度具有以下性质:对于任何分布 A 和 B,KL(A∣∣B)≥0,当且仅当 A=B 时等号成立。因此,KL(q(z)∣∣p(z∣x))≥0。
回顾重新排列后的方程:
logp(x)=L(q)+KL(q(z)∣∣p(z∣x))
由于 KL 项是非负的,立刻得到:
logp(x)≥L(q)
这证实了 L(q) 确实是模型证据对数的下界。
优化目标
恒等式 logp(x)=L(q)+KL(q(z)∣∣p(z∣x)) 为变分推断提供了主要思路。我们希望在我们选择的分布族中找到使 KL 散度 KL(q(z)∣∣p(z∣x)) 最小化的 q(z)。
请注意,对数证据 logp(x) 对于定义 q(z) 的参数 (parameter)而言是常数。因此,最大化 ELBO L(q) 等价于 最小化 KL 散度 KL(q(z)∣∣p(z∣x))。
可以这样理解:总对数证据是固定的。它由 ELBO 和 KL 散度组成。如果我们增加 ELBO,KL 散度必须减少相同的量以保持总和不变。
这非常有用,因为 ELBO,即 L(q)=Eq(z)[logp(x,z)]−Eq(z)[logq(z)],仅取决于联合分布 p(x,z)(这通常是可计算的)和我们选择的变分分布 q(z)。它巧妙地避免了难以处理的证据 p(x)。
因此,变分推断按以下步骤进行:
- 为 q(z) 选择一个分布族,通常由一些变分参数 ϕ 参数化。我们将其表示为 qϕ(z)。
- 寻找使 ELBO 最大的参数 ϕ:
ϕ∗=argϕmaxL(qϕ)
所得分布 qϕ∗(z) 作为对真实后验 p(z∣x) 的近似。ELBO 在最优值处的取值,即 L(qϕ∗),也提供了对数边际似然的下界,这对于模型比较很有用。
理解 ELBO 及其与 KL 散度和模型证据的关系,是把握变分推断方法运作方式的基本。后续章节将讨论 q(z) 的具体分布族以及优化 ELBO 的算法。