变分自编码器(VAE)的原理与推断生成过程
字数 2667 2025-11-04 20:47:20

变分自编码器(VAE)的原理与推断生成过程

题目描述
变分自编码器(Variational Autoencoder, VAE)是一种结合了深度学习和变分推断的生成模型。它的目标是从观测数据(如图像)中学习数据的潜在结构,并能够生成新的、与原始数据相似的数据样本。与传统的自编码器不同,VAE不仅学习数据的压缩表示(编码),还学习潜在空间的概率分布,从而支持有意义的采样和生成。

解题过程

  1. 问题建模

    • 假设我们有一个数据集 \(\mathbf{X} = \{ \mathbf{x}^{(1)}, \mathbf{x}^{(2)}, \dots, \mathbf{x}^{(N)} \}\),其中每个 \(\mathbf{x}\) 是一个数据点(如一张图片的像素向量)。
    • VAE假设每个数据点 \(\mathbf{x}\) 是由某个未观察到的潜在变量 \(\mathbf{z}\) 生成的。生成过程是:先从先验分布 \(p(\mathbf{z})\)(通常为标准正态分布 \(\mathcal{N}(0, I)\))中采样一个潜在变量 \(\mathbf{z}\),然后通过条件分布 \(p_{\theta}(\mathbf{x} | \mathbf{z})\)(由解码器网络参数化)生成 \(\mathbf{x}\)
    • 我们的目标是学习生成模型的参数 \(\theta\),使得似然 \(p_{\theta}(\mathbf{x}) = \int p_{\theta}(\mathbf{x} | \mathbf{z}) p(\mathbf{z}) d\mathbf{z}\) 尽可能大。但由于积分难处理,直接优化似然困难。
  2. 变分下界(ELBO)的推导

    • 引入一个近似后验分布 \(q_{\phi}(\mathbf{z} | \mathbf{x})\)(由编码器网络参数化),来逼近真实后验 \(p_{\theta}(\mathbf{z} | \mathbf{x})\)
    • 通过变分推断,我们可以推导出对数似然的证据下界(ELBO):

\[ \log p_{\theta}(\mathbf{x}) \geq \mathbb{E}_{q_{\phi}(\mathbf{z} | \mathbf{x})} \left[ \log p_{\theta}(\mathbf{x} | \mathbf{z}) \right] - D_{\text{KL}} \left( q_{\phi}(\mathbf{z} | \mathbf{x}) \| p(\mathbf{z}) \right) = \text{ELBO}(\theta, \phi; \mathbf{x}) \]

  • 其中:
    • 第一项是重构损失,衡量解码器从潜在变量 \(\mathbf{z}\) 重构数据 \(\mathbf{x}\) 的能力。
    • 第二项是KL散度,约束近似后验 \(q_{\phi}(\mathbf{z} | \mathbf{x})\) 接近先验 \(p(\mathbf{z})\),起到正则化作用。
  1. 网络结构设计

    • 编码器(推断网络):输入数据 \(\mathbf{x}\),输出近似后验 \(q_{\phi}(\mathbf{z} | \mathbf{x})\) 的参数。通常假设 \(q_{\phi}(\mathbf{z} | \mathbf{x}) = \mathcal{N}(\mathbf{z}; \mu_{\phi}(\mathbf{x}), \sigma_{\phi}^2(\mathbf{x}) I)\),因此编码器输出均值 \(\mu_{\phi}\) 和方差 \(\sigma_{\phi}^2\)
    • 解码器(生成网络):输入潜在变量 \(\mathbf{z}\),输出生成分布 \(p_{\theta}(\mathbf{x} | \mathbf{z})\) 的参数。对于二值数据(如MNIST),常用伯努利分布,解码器输出每个像素的激活概率;对于连续数据,可用高斯分布。
  2. 重参数化技巧

    • 为了通过随机梯度下降优化ELBO,需要处理采样操作 \(\mathbf{z} \sim q_{\phi}(\mathbf{z} | \mathbf{x})\) 的梯度问题。
    • 重参数化将采样过程分解为确定性部分和随机部分:令 \(\mathbf{z} = \mu_{\phi}(\mathbf{x}) + \sigma_{\phi}(\mathbf{x}) \odot \epsilon\),其中 \(\epsilon \sim \mathcal{N}(0, I)\)。这样梯度可以回传到编码器的参数 \(\phi\)
  3. 训练过程

    • 对每个数据点 \(\mathbf{x}\)
      • 编码器计算 \(\mu_{\phi}(\mathbf{x})\)\(\sigma_{\phi}(\mathbf{x})\)
      • 通过重参数化采样 \(\mathbf{z} = \mu_{\phi}(\mathbf{x}) + \sigma_{\phi}(\mathbf{x}) \odot \epsilon\)
      • 解码器从 \(\mathbf{z}\) 重构 \(\mathbf{x}'\),计算重构损失(如二元交叉熵)。
      • 计算KL散度 \(D_{\text{KL}}(q_{\phi} \| p)\),通常有解析解(如高斯之间的KL散度)。
      • 最大化ELBO等价于最小化损失函数:\(\mathcal{L} = -\text{重构项} + \text{KL项}\)
  4. 生成新样本

    • 训练完成后,从先验 \(p(\mathbf{z}) = \mathcal{N}(0, I)\) 中采样一个随机向量 \(\mathbf{z}\)
    • 输入解码器,直接生成新的数据样本 \(\mathbf{x} \sim p_{\theta}(\mathbf{x} | \mathbf{z})\)

关键点总结

  • VAE通过变分下界避免难处理的积分,将生成问题转化为优化问题。
  • 编码器-解码器结构结合重参数化,使模型可端到端训练。
  • KL散度项确保潜在空间有良好结构(如连续性),支持语义插值和生成。
变分自编码器(VAE)的原理与推断生成过程 题目描述 变分自编码器(Variational Autoencoder, VAE)是一种结合了深度学习和变分推断的生成模型。它的目标是从观测数据(如图像)中学习数据的潜在结构,并能够生成新的、与原始数据相似的数据样本。与传统的自编码器不同,VAE不仅学习数据的压缩表示(编码),还学习潜在空间的概率分布,从而支持有意义的采样和生成。 解题过程 问题建模 假设我们有一个数据集 \( \mathbf{X} = \{ \mathbf{x}^{(1)}, \mathbf{x}^{(2)}, \dots, \mathbf{x}^{(N)} \} \),其中每个 \( \mathbf{x} \) 是一个数据点(如一张图片的像素向量)。 VAE假设每个数据点 \( \mathbf{x} \) 是由某个未观察到的潜在变量 \( \mathbf{z} \) 生成的。生成过程是:先从先验分布 \( p(\mathbf{z}) \)(通常为标准正态分布 \( \mathcal{N}(0, I) \))中采样一个潜在变量 \( \mathbf{z} \),然后通过条件分布 \( p_ {\theta}(\mathbf{x} | \mathbf{z}) \)(由解码器网络参数化)生成 \( \mathbf{x} \)。 我们的目标是学习生成模型的参数 \( \theta \),使得似然 \( p_ {\theta}(\mathbf{x}) = \int p_ {\theta}(\mathbf{x} | \mathbf{z}) p(\mathbf{z}) d\mathbf{z} \) 尽可能大。但由于积分难处理,直接优化似然困难。 变分下界(ELBO)的推导 引入一个近似后验分布 \( q_ {\phi}(\mathbf{z} | \mathbf{x}) \)(由编码器网络参数化),来逼近真实后验 \( p_ {\theta}(\mathbf{z} | \mathbf{x}) \)。 通过变分推断,我们可以推导出对数似然的证据下界(ELBO): \[ \log p_ {\theta}(\mathbf{x}) \geq \mathbb{E} {q {\phi}(\mathbf{z} | \mathbf{x})} \left[ \log p_ {\theta}(\mathbf{x} | \mathbf{z}) \right] - D_ {\text{KL}} \left( q_ {\phi}(\mathbf{z} | \mathbf{x}) \| p(\mathbf{z}) \right) = \text{ELBO}(\theta, \phi; \mathbf{x}) \] 其中: 第一项是重构损失,衡量解码器从潜在变量 \( \mathbf{z} \) 重构数据 \( \mathbf{x} \) 的能力。 第二项是KL散度,约束近似后验 \( q_ {\phi}(\mathbf{z} | \mathbf{x}) \) 接近先验 \( p(\mathbf{z}) \),起到正则化作用。 网络结构设计 编码器(推断网络) :输入数据 \( \mathbf{x} \),输出近似后验 \( q_ {\phi}(\mathbf{z} | \mathbf{x}) \) 的参数。通常假设 \( q_ {\phi}(\mathbf{z} | \mathbf{x}) = \mathcal{N}(\mathbf{z}; \mu_ {\phi}(\mathbf{x}), \sigma_ {\phi}^2(\mathbf{x}) I) \),因此编码器输出均值 \( \mu_ {\phi} \) 和方差 \( \sigma_ {\phi}^2 \)。 解码器(生成网络) :输入潜在变量 \( \mathbf{z} \),输出生成分布 \( p_ {\theta}(\mathbf{x} | \mathbf{z}) \) 的参数。对于二值数据(如MNIST),常用伯努利分布,解码器输出每个像素的激活概率;对于连续数据,可用高斯分布。 重参数化技巧 为了通过随机梯度下降优化ELBO,需要处理采样操作 \( \mathbf{z} \sim q_ {\phi}(\mathbf{z} | \mathbf{x}) \) 的梯度问题。 重参数化将采样过程分解为确定性部分和随机部分:令 \( \mathbf{z} = \mu_ {\phi}(\mathbf{x}) + \sigma_ {\phi}(\mathbf{x}) \odot \epsilon \),其中 \( \epsilon \sim \mathcal{N}(0, I) \)。这样梯度可以回传到编码器的参数 \( \phi \)。 训练过程 对每个数据点 \( \mathbf{x} \): 编码器计算 \( \mu_ {\phi}(\mathbf{x}) \) 和 \( \sigma_ {\phi}(\mathbf{x}) \)。 通过重参数化采样 \( \mathbf{z} = \mu_ {\phi}(\mathbf{x}) + \sigma_ {\phi}(\mathbf{x}) \odot \epsilon \)。 解码器从 \( \mathbf{z} \) 重构 \( \mathbf{x}' \),计算重构损失(如二元交叉熵)。 计算KL散度 \( D_ {\text{KL}}(q_ {\phi} \| p) \),通常有解析解(如高斯之间的KL散度)。 最大化ELBO等价于最小化损失函数:\( \mathcal{L} = -\text{重构项} + \text{KL项} \)。 生成新样本 训练完成后,从先验 \( p(\mathbf{z}) = \mathcal{N}(0, I) \) 中采样一个随机向量 \( \mathbf{z} \)。 输入解码器,直接生成新的数据样本 \( \mathbf{x} \sim p_ {\theta}(\mathbf{x} | \mathbf{z}) \)。 关键点总结 VAE通过变分下界避免难处理的积分,将生成问题转化为优化问题。 编码器-解码器结构结合重参数化,使模型可端到端训练。 KL散度项确保潜在空间有良好结构(如连续性),支持语义插值和生成。