变分自编码器(Variational Autoencoder, VAE)的原理与损失函数推导
题目描述
变分自编码器(VAE)是一种生成模型,它结合了神经网络和概率图模型,能够学习输入数据(如图像)的概率分布,并生成新的样本。与标准自编码器不同,VAE的隐变量遵循概率分布(如高斯分布),其训练目标是通过变分推断最大化证据下界(ELBO)。本题要求详解VAE的核心思想、概率模型构建、重参数化技巧以及损失函数的推导过程。
解题过程
-
核心问题定义
- 目标:学习真实数据分布 \(p(x)\)(例如人脸图像的分布),以便采样生成新数据。
- 挑战:直接建模 \(p(x)\) 需要计算复杂积分(如 \(p(x) = \int p(x|z)p(z)dz\)),其中隐变量 \(z\) 的高维空间导致计算不可行。
- VAE的解决思路:引入一个易采样的隐变量分布 \(p(z)\)(如标准高斯分布),并构建解码器 \(p_\theta(x|z)\) 生成数据,同时用编码器 \(q_\phi(z|x)\) 近似真实后验分布 \(p(z|x)\)。
-
概率图模型与变分推断
- 假设数据由隐变量 \(z\) 生成:
- 先验分布 \(p(z) = \mathcal{N}(0, I)\)
- 条件分布 \(p_\theta(x|z)\)(由解码器用神经网络参数化)
- 真实后验 \(p(z|x) = \frac{p_\theta(x|z)p(z)}{p(x)}\) 难以计算,因此用变分分布 \(q_\phi(z|x)\)(编码器)逼近它,通常假设为高斯分布:
- 假设数据由隐变量 \(z\) 生成:
\[ q_\phi(z|x) = \mathcal{N}(z; \mu_\phi(x), \sigma_\phi^2(x)I) \]
- 变分推断的目标是最大化证据下界(ELBO):
\[ \log p(x) \geq \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{KL}(q_\phi(z|x) \| p(z)) = \text{ELBO} \]
- ELBO的推导
- 从对数似然出发,引入变分分布:
\[ \log p(x) = \mathbb{E}_{q_\phi(z|x)}\left[\log \frac{p(x, z)}{q_\phi(z|x)}\right] + D_{KL}(q_\phi(z|x) \| p(z|x)) \]
- 由于KL散度非负,可推导出:
\[ \log p(x) \geq \mathbb{E}_{q_\phi(z|x)}\left[\log \frac{p_\theta(x|z)p(z)}{q_\phi(z|x)}\right] = \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{KL}(q_\phi(z|x) \| p(z)) \]
- 第一项(重构损失):鼓励解码器从隐变量 \(z\) 重建数据 \(x\)。
- 第二项(正则化损失):约束编码器输出的分布接近先验 \(p(z)\),避免过拟合。
- 重参数化技巧
- 问题:直接采样 \(z \sim q_\phi(z|x)\) 导致梯度无法反向传播(采样操作不可导)。
- 解决方案:将采样过程分离为可导部分和随机部分。例如,若 \(z \sim \mathcal{N}(\mu, \sigma^2)\),则重参数化为:
\[ z = \mu + \sigma \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) \]
- 这样,梯度可通过 \(\mu\) 和 \(\sigma\) 回传,而 \(\epsilon\) 作为随机变量独立于模型参数。
- 损失函数的具体形式
- 重构损失:假设 \(p_\theta(x|z)\) 为高斯分布(连续数据)或伯努利分布(二值数据),常用均方误差(MSE)或二元交叉熵计算。
- KL散度损失:当 \(p(z) = \mathcal{N}(0, I)\),\(q_\phi(z|x) = \mathcal{N}(\mu, \sigma^2)\) 时,有解析解:
\[ D_{KL} = -\frac{1}{2} \sum_{j=1}^J \left(1 + \log(\sigma_j^2) - \mu_j^2 - \sigma_j^2\right) \]
其中 $ J $ 是隐变量维度。
- 最终损失函数:
\[ \mathcal{L} = -\mathbb{E}_{\epsilon \sim \mathcal{N}(0, I)}[\log p_\theta(x|z)] + D_{KL}(q_\phi(z|x) \| p(z)) \]
实践中通过蒙特卡洛采样(仅需1个样本)估计期望值。
- 训练流程总结
- 输入数据 \(x\) 通过编码器得到 \(\mu\) 和 \(\log \sigma^2\)。
- 重参数化采样 \(z = \mu + \sigma \odot \epsilon\)。
- 解码器从 \(z\) 重建 \(\hat{x}\),计算重构损失。
- 联合优化编码器参数 \(\phi\) 和解码器参数 \(\theta\),使ELBO最大化(即损失最小化)。
关键点
VAE通过概率框架将生成模型训练转化为可优化的ELBO目标,重参数化技巧解决了随机性节点的梯度传播问题,使其成为深度生成模型的基石之一。