VAE 原理

似然生成模型:给定一个数据集 $x_D$,训练使得模型最大化似然 $p_\phi(x_D)$。

1. ELBO 的定义和公式

VAE 的目标是对数据 $x$ 的分布 $p(x)$ 进行建模,但直接优化 $p(x)$ 通常不可行。通过引入潜变量 $z$,对对数边际似然 $\log p(x)$ 进行变分下界(ELBO)的近似:

$$ \log p(x) = \mathbb{E}_ {q_\phi(z|x)} \left[\log \frac{p(x, z)}{q_\phi(z|x)} \right] + \text{KL}\left[q_\phi(z|x) | p(z|x)\right] $$

  • 第一项是 ELBO,即对 $\log p(x)$ 的下界:

$$ \text{ELBO} = \mathbb{E}_ {q_\phi(z|x)}[\log p(x, z) - \log q_\phi(z|x)] $$

  • 第二项是 KL 散度,用于衡量模型 $q_\phi(z|x)$ 和真实后验 $p(z|x)$ 的差异。

2. ELBO 和 $\log p(x)$ 的关系

ELBO 是 $\log p(x)$ 的下界,差值由 KL 散度决定:

$$ \log p(x) - \text{ELBO} = \text{KL} \left[q_\phi(z|x) | p(z|x)\right] $$

如果 KL 散度为 0,意味着 $q_\phi(z|x) = p(z|x)$,此时 ELBO 与 $\log p(x)$ 相等。

3. 为什么优化 VAE 等价于最大化 ELBO?

VAE 的建模框架是通过 encoder(推断网络) $q_\phi(z|x)$ 和 decoder(生成网络) $p_\theta(x|z)$,学习数据 $x$ 与潜变量 $z$ 的关系。

  • $q_\phi(z|x)$:近似 $p(z|x)$
  • $p_\theta(x|z)$:从潜变量生成数据

通过最大化 ELBO:

  • 第一项(重构误差): 提升模型 $p_\theta(x|z)$ 对数据的生成质量。
  • 第二项(KL 散度): 减少 $q_\phi(z|x)$ 与真实分布 $p(z|x)$ 的偏差。

4. KL 散度的意义

  • KL 散度反映了 encoder $q_\phi(z|x)$ 对真实后验 $p(z|x)$ 的拟合程度。
  • 目标:最小化 KL 散度,使得 $q_\phi(z|x)$ 尽可能接近 $p(z|x)$。
  • 限制:直接优化 KL 散度不可行,因为真实分布 $p(z|x)$ 是未知的。

5. VAE 优化的核心

  • ELBO 最大化既可以:
    1. 提高生成器 $p_\theta(x|z)$ 的重构能力。
    2. 让推断器 $q_\phi(z|x)$ 更接近真实后验 $p(z|x)$。

这使得 VAE 能够有效学习数据的隐变量结构,完成生成与重构任务。

结论

VAE 的核心思想是通过最大化 ELBO,在生成数据 $x$ 和隐变量 $z$ 的关系中找到一个平衡:

  • KL 散度最小化 → encoder 近似真实后验
  • 重构误差最小化 → decoder 生成的样本逼近真实数据分布

ELBO(Evidence Lower Bound)

1. ELBO 的分解公式

通过链式法则和 KL 散度的定义,ELBO 被分解为两部分:

$$ \text{ELBO} = \mathbb{E}_ {q_\phi(z|x)}[\log p_\theta(x|z)] - D_\text{KL}[q_\phi(z|x) | p(z)] $$

  • 第一项(Reconstruction Term):

    $$ \mathbb{E}_ {q_\phi(z|x)}[\log p_\theta(x|z)] $$

    • 表示从潜变量 $z$ 生成原始数据 $x$ 的能力。
    • 目标是最大化重构概率,即让生成的 $x$ 尽可能接近原始数据。
  • 第二项(Prior Matching Term):

    $$ D_\text{KL}[q_\phi(z|x) | p(z)] $$

    • 表示 encoder 生成的潜变量 $z$ 的分布 $q_\phi(z|x)$ 和先验分布 $p(z)$ 之间的差异。
    • 目标是最小化 KL 散度,使得潜变量分布接近先验分布(通常是标准正态分布 $N(0, I)$)。

2. 两个部分的作用和优化目标

重构项(Reconstruction Term)

  • 作用
    • 优化 decoder 的重构能力,确保从潜变量 $z$ 恢复出输入数据 $x$。
  • 优化目标
    • 最大化 $\mathbb{E}_ {q_\phi(z|x)}[\log p_\theta(x|z)]$,提高生成质量。

先验匹配项(Prior Matching Term)

  • 作用
    • 通过最小化 KL 散度,让 encoder 生成的潜变量分布 $q_\phi(z|x)$ 接近先验 $p(z)$。
  • 优化目标
    • 最小化 $D_\text{KL}[q_\phi(z|x) | p(z)]$,确保隐变量空间的规范性。

3. 两部分如何协作?

  • 重构项:优化生成能力(decoder)
  • 先验匹配项:优化潜变量分布(encoder)

这两个部分是一个平衡过程

  • 重构能力越强,样本越真实。
  • 潜变量越符合先验分布,生成过程越稳定且泛化能力更好。

4. 为什么需要先验匹配项?

如果去掉先验匹配项(KL 散度部分),VAE 会退化为普通自编码器(AE)

  • AE 没有对潜变量空间进行规范化,生成器难以生成新样本。
  • 只能进行重构,而无法作为生成模型使用。

5. 总结

VAE 的 ELBO 分解为:

  • 重构项:提升生成器的质量。
  • 先验匹配项:保证潜变量分布的规范性。

通过最大化 ELBO,VAE 在生成质量与潜变量空间规范性之间取得平衡。


重参数化技巧(Reparameterization Trick)

1. 定义

重参数化技巧是 VAE 中用于解决随机采样导致参数不可导的问题的方法。通过引入一个可分解的噪声变量,使采样过程对模型参数可导,从而支持梯度反传。

2. 为什么需要重参数化?

在 VAE 中,潜变量 $z$ 从正态分布中采样:

$$ z \sim \mathcal{N}(\mu_\phi(x), \sigma_\phi^2(x)) $$

直接采样会导致采样过程(包含参数 $\phi$)不可导,无法优化模型参数。

3. 实现方法

通过重参数化,将采样写成确定性变换:

$$ z = \mu_\phi(x) + \sigma_\phi(x) \cdot \epsilon $$

其中:

  • $\mu_\phi(x)$:encoder 输出的均值
  • $\sigma_\phi(x)$:encoder 输出的标准差
  • $\epsilon \sim \mathcal{N}(0, I)$:从标准正态分布采样的独立噪声

关键点

  • 分离随机性与参数:随机性来自 $\epsilon$,与网络参数 $\phi$ 无关。
  • 保持采样分布不变:经过变换后,$z$ 仍然符合原分布。

4. 好处

  • 可导性:采样过程对参数可导。
  • 优化效率:梯度计算高效。
  • 灵活性:适用于任意可微分采样分布。

5. 过程总结

  1. Encoder
    • 输入 $x$,输出 $\mu_\phi(x)$ 和 $\sigma_\phi(x)$。
  2. 随机性分离
    • 采样 $\epsilon \sim \mathcal{N}(0, I)$。
    • 计算 $z = \mu_\phi(x) + \sigma_\phi(x) \cdot \epsilon$。
  3. Decoder
    • 使用 $z$ 生成数据 $x$ 的重构结果。

6. 总结

重参数化技巧是 VAE 的核心步骤,通过可导变换解决采样带来的优化问题,使 VAE 既保留随机性又能高效训练。