VAE变分自编码器的理论与实现
VAE(Variational Autoencoder)是生成模型的重要基础。请解释其编码器-解码器架构、重参数化技巧(Reparameterization Trick)和ELBO推导。
回答
苦行僧
VAE由Kingma和Welling于2013年提出,结合了自编码器和变分推断,是深度生成模型的基石。
编码器-解码器架构:
- 编码器q_φ(z|x):将输入x映射到潜在分布参数(均值μ和方差σ²),输出为高斯分布N(μ, σ²)。
- 解码器p_θ(x|z):从潜在变量z重建x。
- 与标准自编码器的区别:编码器输出的是分布参数而非确定的向量。
重参数化技巧(核心创新):
- 问题:从q_φ(z|x)=N(μ, σ²)中采样z的过程不可导(采样操作无法反向传播)。
- 解决:z = μ + σ·ε,其中ε~N(0,I)。
- 将随机性转移到外部噪声ε,使得μ和σ的梯度可以通过z传递到解码器。
- 这是VAE能够使用梯度下降训练的关键。
ELBO(证据下界)推导: 目标是最大化对数似然log p_θ(x): log p_θ(x) = KL(q_φ(z|x) || p_θ(z|x)) + ELBO(q,x)
其中ELBO = E_{z~q_φ(z|x)}[log p_θ(x|z)] - KL(q_φ(z|x) || p(z))
- 第一项(重建损失):期望解码器能重建x,等价于MSE或交叉熵。
- 第二项(KL散度):正则化项,迫使后验q_φ(z|x)接近先验p(z)=N(0,I)。
- 最大化ELBO等价于最大化对数似然的(变分)下界。
完整损失函数: L(θ,φ; x) = -E_{z~q_φ(z|x)}[log p_θ(x|z)] + KL(q_φ(z|x) || p(z))
实践中的训练:
- 输入x经编码器得到μ和logσ²(用logσ²确保正值)。
- 采样ε~N(0,I),计算z=μ+σ·ε。
- 解码器从z重建x'。
- 计算重建损失(如二值交叉熵)+ KL损失。
- 梯度反向传播。
VAE vs GAN:
- VAE:优化似然下界,训练稳定,可计算似然,但生成图像较模糊。
- GAN:对抗训练,生成图像清晰,但训练不稳定,易模式崩塌。
- VQ-VAE使用矢量量化解决模糊问题,成为连接VAE和扩散模型的关键桥梁。