变分推断

问题提出:后验推断的困境

在贝叶斯框架中,我们常需进行后验推断(Posterior inference),即计算后验分布 $p(z|x)$。根据贝叶斯公式:

$$ p(z|x) = \frac{p(x,z)}{p(x)}, \quad \text{其中} \ p(x) = \int_z p(x,z) \mathrm{d}z $$

核心难点在于分母的边缘概率 $p(x)$:

  • 当 $z$ 是高维连续变量时,积分 $\int_z p(x,z) \mathrm{d}z$ 难以解析求解
  • 当 $z$ 是离散变量时,计算复杂度随数据量呈指数级增长(如高斯混合模型中 $O(K^n)$)

思路转变:变分推断的提出

既然直接计算行不通,那么转变思路:我们不用非得求出那个完美的 $p(z|x)$,而是引入一个相对简单、可计算的近似分布 $q(z;\theta)$,并让我们这个 $q(z;\theta)$尽可能地去逼近真实的 $p(z|x)$。
这种“优化的对象是函数(分布)而非单个变量”的思想来源于变分法(Calculus of Variations),而优化目标是进行后验推断,因此用变分的思想来计算后验推断的方法就被叫做变分推断(Variational Inference, VI)。其中近似分布$q(z;\theta)$也被称为变分分布。

具体的,我们可以用KL散度((Kullback-Leibler Divergence))来衡量变分分布 $q(z;\theta)$和真实分布的 $p(z|x)$之间的距离,则变分推断的目标函数可以写为:

$$ \theta^* = \arg\min_{\theta} \ KL(q(z;\theta) \| p(z|x)) $$


其中KL散度定义为:

$$ KL(p\|q) = \mathbb{E}_p \left[ \log \frac{p}{q} \right] $$


可以看到,变分推断将一个推断问题转化为了一个优化问题。

优化目标转化:ELBO的提出

我们可以看出直接计算$KL(q(z;\theta) \| p(z|x))$是不可行的,因为包含未知的$p(z|x)$。

通过对KL散度进行分解可得:

$$ \begin{aligned} KL(q(z;\theta)||p(z|x)) &= \int q(z;\theta)\log\frac{q(z;\theta)}{p(z|x)}dz \\ &= \mathbb{E}_{z\sim q(z;\theta)}[\log q(z;\theta) - \log p(z|x)] \\ &= \mathbb{E}_{z\sim q(z;\theta)}[\log q(z;\theta) - \log \frac{p(x,z)}{p(x)}] \\ &= \mathbb{E}_{z\sim q(z;\theta)}[\log q(z;\theta) - \log p(x,z) + \log p(x)] \\ &= \mathbb{E}_{z\sim q(z;\theta)}[\log q(z;\theta)] - \mathbb{E}_{z\sim q(z;\theta)}[\log p(x,z)] + \log p(x) \end{aligned} $$


移项可得:

$$ \log p(x) = KL(q(z;\theta)||p(z|x)) + \left(\mathbb{E}_{z\sim q(z;\theta)}[\log p(x,z)] - \mathbb{E}_{z\sim q(z;\theta)}[\log q(z;\theta)]\right) $$


其中$\log p(x)$是对数证据(evidence),由于KL散度具有恒大于等于0的性质,即
$KL(p\|q) \geq 0$,可得:

$\log p(x) \geq \mathbb{E}_{z\sim q(z;\theta)}[\log p(x,z)] - \mathbb{E}_{z\sim q(z;\theta)}[\log q(z;\theta)]$

因此不等式右侧是对数证据的一个下界,被定义为证据下界(Evidence Lower Bound, ELBO)

$$ \text{ELBO} = \mathbb{E}_{z\sim q(z;\theta)}[\log p(x,z)] - \mathbb{E}_{z\sim q(z;\theta)}[\log q(z;\theta)]$$


注意,$\log p(x)$与$q(z;\theta)$或者说$\theta$是无关,在目标函数中是一个常量。因此当我们希望最小化KL散度$KL(q(z;\theta)||p(z|x))$时,等价于最大化ELBO:

$$ \min_{\theta} KL(q\|p) \Leftrightarrow \max_{\theta} ELBO(q) $$


因此最终优化目标转化为了:

$$ \max_{\theta} \text{ELBO} = \max_{\theta} \left( \mathbb{E}_q \log p(x,z) - \mathbb{E}_q \log q(z;\theta) \right) $$

深入分析:ELBO的物理意义

进一步分析ELBO的物理性质:

  • $\mathbb{E}_q \log p(x,z)$:表示变分分布 $q$ 对联合分布 $p(x,z)$ 的期望,反映 $q$ 对数据生成过程的拟合程度。
  • $\mathbb{E}_q \log q(z;\theta)$:是 $q$ 的熵,衡量变分分布的复杂度。
    因此最大化ELBO本质上是在"拟合数据"与"分布简单性"之间寻求平衡。

我们还可以进一步分解 ELBO,得到一个更具启发性的形式:

$$ \begin{aligned} \mathrm{ELBO}(q) &=\mathbb{E}_{q} \big[\log p({x}, {z}) - \log q({z}) \big] &\quad \ \\ &=\mathbb{E}_{q}[\log p({x}, {z})] -\mathbb{E}_{q}[\log q({z})] &\quad \quad \\\ &=\mathbb{E}_{q}[\log \big( p({x} \vert {z}) p({z}) \big) ] -\mathbb{E}_{q}[\log q({z})] &\quad \\ \quad \\ \ &=\mathbb{E}_{q}[\log p({x} \vert {z})] + \mathbb{E}_{q}[\log p({z})] - \mathbb{E}_{q}[\log q({z})] &\quad \\ \quad \ &=\mathbb{E}_{q}[\log p({x} \vert{z})] + \mathbb{E}_{q}\bigg[\log \frac{p({z})}{q({z})}\bigg] &\quad & \quad \\ &=\mathbb{E}_{q}[\log p({x} \vert {z})]- \text{KL}(q({z}) | p({z})) &\quad \\ \quad \end{aligned} $$


这个形式的 ELBO 包含两项:

  • $\mathbb{E}{q}[\log p({x} \vert {z})]$:期望的对数似然(Expected Log-Likelihood)。
    • 这一项度量了在变分分布 $q({z})$ 下采样的隐变量解释观测数据 ${x}$ 的程度。
    • 最大化这一项鼓励 $q({z})$ 将概率质量分配给那些最有可能生成观测数据 ${x}$ 的隐变量 ${z}$。在 VAE (Variational Autoencoder) 中,这通常被称为重构项(reconstruction term),因为它衡量了从潜在表示 ${z}$ 重构出原始数据 ${x}$ 的效果。
  • $KL(q({z}) | p({z}))$:变分分布与先验的负KL散度。
    • 这一项度量了变分分布 $q({z})$ 与隐变量的先验分布 $p({z})$ 之间的差异。
    • 最大化这一项(等价于最小化 $\text{KL}(q({z}) | p({z}))$,因为有负号)鼓励变分分布 $q({z})$ 保持接近先验分布 $p({z})$。这可以被视为一种正则化。它确保我们学习到的后验近似 $q({z})$ 不会过度偏离我们对隐变量的先验知识。这个形式的 ELBO 有时被称为先验对比式(prior-contrastive)。在 VAE 中,这通常被称为正则化项(regularization term),它约束了潜在空间的结构。

因此,最大化 ELBO可以被理解为平衡了两个目标:

  • 使隐变量能够很好地解释/重构观测数据(最大化 $\mathbb{E}{q}[\log p({x} \vert {z})]$)。
  • 使学习到的变分分布接近我们对隐变量的先验假设(最小化 $\text{KL}(q({z}) | p({z}))$)。
comments powered by Disqus
发表了21篇文章 · 总计4万5千字
使用 Hugo 构建
主题 StackJimmy 设计