生成式AI基石之一:变分自编码器(VAE)详解:从架构到数学的深度指南
VAE 是一个强大的生成模型。它通过引入概率思想,将编码器从一个确定性的映射转变为一个概率分布的参数化器,并利用重参数化技巧和精心设计的损失函数(重建损失 + KL 散度),成功地构建了一个连续、结构化的潜在空间。这不仅使其能够高质量地压缩和重建数据,更赋予了它从该空间中采样以创造全新数据的能力,为无监督学习和数据生成领域开辟了新的道路。
1. VAE 的核心思想:从自编码器 (AE) 说起
要理解 VAE,我们首先要明白它与标准自编码器(Autoencoder, AE)的区别。
自编码器是一种非常经典且有趣的神经网络架构,它最初被提出用于无监督学习任务,如数据降维和特征学习。它的核心思想非常直观:学习数据的压缩表示(编码),然后再根据这个压缩表示尽可能地重建原始数据(解码)。
自编码器的目标非常明确:让输出值尽可能等于输入值。换句话说,它是一个试图“模仿”其输入的网络。
这听起来似乎很简单,甚至有点 trivial(“恒等函数谁不会学?”)。但关键在于,网络结构中存在一个瓶颈(Bottleneck),这个瓶颈迫使网络不能简单地复制输入,而必须学会如何有效地压缩(编码)信息,从而提取出数据中最有意义的特征。
一个标准的自编码器由两部分组成:
1.编码器(Encoder):
功能:将高维的输入数据压缩成一个低维的、稠密的向量表示。这个低维向量被称为编码(Code)、潜在表示(Latent Representation) 或潜在向量(Latent Vector)。
结构:通常是一个前馈神经网络,层数逐渐减少,神经元数量也越来越少。
2.解码器(Decoder):
功能:将编码器产生的低维编码尽可能地重建回原始的高维数据。
结构:通常是编码器的镜像(但不绝对),是一个前馈神经网络,层数逐渐增加,神经元数量也越来越多,最终输出层的维度与输入层相同。
瓶颈层(Bottleneck Layer):
连接编码器和解码器的中间层。这一层的维度远小于输入层,是信息被压缩的地方,也是整个自编码器的核心。

工作流程:
1.输入:一个高维数据样本 x(例如一张图片)。
2.编码:x通过编码器网络,被