什么是 变分自编码器?
变分自编码器是一类潜变量生成模型:编码器近似给定观测后的潜变量后验,解码器则建模给定潜变量时观测数据的条件分布。
快速了解
| 创建时间 | 2013 年(由 Diederik P. Kingma 和 Max Welling 提出) |
|---|---|
| 规范文档 | 官方规范 |
工作原理
潜变量模型
先验 p(z) 定义在未知观测前如何采样潜变量,解码器 p(x|z) 定义给定潜变量时的观测分布。真实后验 p(z|x) 通常难以直接计算,因此编码器 q(z|x) 用共享神经网络参数近似它。常见对角高斯编码器为每个潜维度输出均值和对数方差,但这只是建模选择,不是所有 VAE 都必须采用的唯一形式。
ELBO 与重参数化
ELBO 包含期望重建项,以及 q(z|x) 与先验之间的 KL 散度;最大化它是在改进 log p(x) 的下界,而不只是减小重建误差。重参数化把采样写成 z = mu + sigma * epsilon,其中 epsilon 来自固定噪声分布,使梯度可以传回编码器参数。重建似然、先验、KL 权重和估计器必须与数据类型和任务目标一致。
失败模式与诊断
当 q(z|x) 接近先验、解码器不再使用 z 时会发生后验崩溃;整体 KL 接近零可提示完全崩溃,却可能掩盖不同维度的差异。其他问题包括非活跃潜维度、聚合后验与先验不匹配、不合适似然导致的过度平滑,以及潜表示不能支撑目标任务。应联合检查逐维 KL、Active Units、互信息估计、重建切片、先验采样和下游探针。
评测与现代用途
评测必须服从用途:密度建模看留出集似然估计,编解码器看重建和感知指标,生成任务看先验采样质量与覆盖率,表示或异常检测看带标签的真实下游测试。潜空间扩散常使用单独训练的自编码器降低空间计算成本,但具体架构和目标不一定是教科书式 VAE。与扩散模型互操作时应记录编解码器、缩放因子和重建契约。
主要特点
- 把解码器定义的生成模型与摊销推断网络结合起来
- 为每个输入建模近似后验,而不是只生成一个固定编码
- 优化包含重建项和先验散度项的证据下界
- 通过重参数化采样估计随机潜变量路径上的梯度
- 既可从先验生成样本,也可编码观测用于表示任务
- 可能出现后验崩溃、非活跃维度、先验失配和过度平滑
常见用途
- 在可测重建权衡下学习紧凑概率表示
- 为下游生成或压缩系统构建潜空间编解码器
- 在潜变量不确定性属于模型目标时执行条件生成
- 在真实留出集上校准并分析失败的异常检测研究
- 需要显式潜变量的半监督或科学建模任务
示例
Loading code...常见问题
VAE 与普通自编码器有什么区别?
普通自编码器通常把输入映射为一个确定性编码,并以重建为主要目标。VAE 定义先验、近似后验 q(z|x) 和条件观测模型 p(x|z),再优化 ELBO,因此采样和似然建模属于契约的一部分。不过,训练完成的潜空间并不会自动具有可解释性。
VAE 损失就是重建损失加 KL 散度吗?
这是常见负 ELBO 实现的简写,但重建项实际是某种观测分布下的负对数似然,KL 项也取决于近似后验与先验。Reduction、缩放、Beta 权重和数据似然都会改变目标,因此不能脱离这些设置直接比较不同实现的原始 Loss。
重参数化技巧解决了什么问题?
它把随机性移到分布固定的辅助变量中。高斯编码器可写成 z = mu + sigma 乘以 epsilon,其中 epsilon 从标准正态分布采样,于是路径梯度可以更新 mu 和 sigma。它不会让任意离散采样都可微,也不能保证后验近似质量。
VAE 的后验崩溃是什么?
后验崩溃指近似后验接近先验,解码器从 z 获得的信息很少。高表达能力解码器或不利的训练动态更容易触发它。应检查逐维 KL、Active Units、重建、先验采样和下游信息;仅有看似合理的重建结果仍可能掩盖潜变量失效。
所有潜空间扩散模型中的自编码器都是 VAE 吗?
不是。潜空间扩散需要某种编码器和解码器表示,但实现可能使用 KL 正则的连续潜变量、向量量化码本、对抗或感知损失,也可能混合多种目标。必须检查具体 Checkpoint 和训练目标;通道数、缩放比例与重建行为都是实现契约,不是 VAE 的通用常数。