从 Autoencoder 到 β-VAE
这篇文章是对 Lilian Weng 的原文 From Autoencoder to Beta-VAE 的阅读笔记,不是原文转载。
文章主线
文章从普通 Autoencoder 出发,依次讨论 Denoising Autoencoder、Sparse Autoencoder 和 Contractive Autoencoder,最后进入 Variational Autoencoder 及其后续变体。
Autoencoder 通过编码器和解码器学习近似恒等映射。中间的低维表示可以用于降维、压缩,也可以作为下游任务的表示。它的基本重建目标可以写成:
$$ L_{AE} = \frac{1}{n}\sum_{i=1}^{n}\left(x^{(i)} - f_\theta(g_\phi(x^{(i)}))\right)^2 $$
VAE 的关键变化
VAE 不再把隐变量看作确定的编码,而是学习一个近似后验分布。训练目标由重建项和 KL 散度组成,也就是 ELBO。这样得到的潜空间具有连续性,能够从分布中采样并生成新的样本。
实现 VAE 时,重参数化技巧把随机采样写成可微形式:
$$ z = \mu + \sigma \odot \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) $$
这一步让梯度可以从解码器反向传播到编码器的均值和方差。
β-VAE 与解耦表示
β-VAE 在 KL 项前加入权重 β。当 β 大于 1 时,模型会更强地约束近似后验接近先验,通常能得到更具解耦性的潜变量,但也可能牺牲重建质量。
这里值得注意的是,解耦并不是无条件保证的性质。它依赖数据生成因素、先验、模型容量和训练设置,不能只看一个损失函数系数就下结论。
后续变体
原文还介绍了 VQ-VAE、VQ-VAE-2 和 TD-VAE。VQ-VAE 将连续潜变量替换为码本中的离散向量,适合语言、语音和其他离散表示场景。TD-VAE 则把变分推断扩展到序列建模,允许模型对较远时间点之间的潜变量关系进行预测。
我的阅读问题
- 在具体数据集上,重建质量和解耦程度如何被同时衡量?
- β 的选择是否应该随训练阶段动态调整?
- 离散潜变量的码本大小如何影响表示能力和训练稳定性?
原文包含完整推导、图示和参考文献,建议直接阅读: