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 既保留随机性又能高效训练。