VAE 原理拆解:从概率编码到潜在空间正则化
这篇文章从基本原理出发完整拆解变分自编码器(VAE)的构建过程。重点不在数学推导而在于把概念落到足够具体的层面:完成实现、训练、调试和部署。每个组件做了什么、为什么需要它、代码里怎么写文章都会逐一交代,后半部分会逐行走读一个最小化的 PyTorch 实现,并介绍训练完成后的几种推理模式。
VAE 为什么存在
当需要理解数据中潜藏的模式时,变分自编码器(VAE)是一个值得考虑的选项。它不只是做数据压缩而是以连续、可插值的方式去捕捉数据背后的生成结构:覆盖可能性的完整范围。训练结束后模型既能重建已有样本,也能生成新的逼真样本,还能对新数据做异常检测。
标准自编码器的做法是把数据压缩到低维表示再还原。问题出在它学到的潜在空间往往缺乏结构:相邻的点未必对应相似的数据,随机采样产出的结果也大多没有意义。
VAE 对潜在空间施加了正则化约束。输入不再被映射到单一的潜在向量,而是映射到一个分布:通常是高斯分布。训练期间,模型让这些分布贴近一个已知的先验(一般取标准正态分布),最终得到的潜在空间平滑且有组织,可以安全地从中采样和推断。
这正是 VAE 在异常检测和表示学习中发挥作用的原因。重建偏差可以在原始特征空间中得到直观解读;潜在偏差如果实现了解耦也具有可解释性,但缺少专门的训练目标(如 β-VAE、FactorVAE 等)时,解耦并无保证。
VAE 在学习重建数据的同时,也在学习一个形态接近简单概率分布的潜在空间。
三个核心组件
VAE 由三个概念层面的部件组成——编码器、潜在空间(通过采样/重参数化技巧实现)、解码器。
编码器接收输入,输出两个向量:均值 μ 和方差 σ²,二者共同定义潜在空间上的概率分布。采样步骤利用一种保持可微性的技巧从该分布中抽取潜在向量,解码器再拿到这个向量去重建原始输入。
训练过程同时平衡两个目标:重建要准确,潜在分布要贴近先验。VAE 的结构特性正来源于这种平衡。
https://avoid.overfit.cn/post/17cbb214d50f4e469a458c061b3c5138

浙公网安备 33010602011771号