自编码器是降维和特征学习的有效工具。它们擅长学习输入数据的压缩表示,然后从这种表示中重建数据。然而,变分自编码器 (VAEs) 将自编码器框架引向了一个新的方向:生成建模。什么是生成建模?本质上,生成建模是关于教会机器创建新事物。生成模型不是学习从输入特征预测标签(例如在分类这种判别任务中),而是旨在学习数据本身的潜在概率分布。如果模型真正理解了数据的分布方式,那么它就可以用来生成看起来像是来自原始数据集的新颖合成数据样本。假设您有一个手写数字数据集。判别模型可能会学习判断图像是否为“7”。它学习 $P(\text{标签} | \text{图像})$。生成模型会学习使图像看起来像“7”或“3”或任何数字的特征。它试图学习 $P(\text{图像})$。一旦训练完成,您可以让它“设想出”一个它从未见过的新数字图像。其应用非常广泛:创建逼真图像、生成新音乐作品、合成类人文本,甚至可以增强现有数据集以提高其他机器学习模型的性能。自编码器与生成的萌芽您可能想知道我们熟悉的自编码器是如何融入这一情境的。回想一下基本的自编码器架构:编码器将输入数据 $X$ 映射到低维潜在表示 $z$,解码器则尝试从 $z$ 重建原始数据 $\hat{X}$。输入 (X) --> 编码器 --> 潜在空间 (z) --> 解码器 --> 重建输出 (X_hat)解码器部分特别有意思。如果我们可以某种方式向其输入来自潜在空间 $z$ 的有意义向量,它原则上可以生成新数据。解码器已经学会将潜在空间中的点映射回原始数据空间。那么,自编码器难道不已经是一个生成模型了吗?不完全是,或者至少,默认情况下效果不太好。标准自编码器经过训练,擅长重建。它们的潜在空间 $z$ 学习捕获实现这一目标所需的信息。然而,这种潜在空间的组织方式不一定有利于生成新颖、多样且逼真的样本。如果您从标准自编码器的潜在空间中选取一个随机点并将其通过解码器,输出可能嘈杂、无意义,或者不像您的原始数据集中的任何有效数据。自编码器已经学会将特定输入数据映射到潜在空间中的特定区域,但“中间”区域或远离这些映射的区域可能未定义,或导致重建效果差。该空间可能呈“块状”或有“空洞”。digraph G { rankdir=TB; node [shape=box, style="filled,rounded", fontname="Arial"]; edge [fontname="Arial"]; Input [label="输入数据 (X)", fillcolor="#e9ecef"]; subgraph cluster_latent { label="潜在空间比较"; style=rounded; bgcolor="#f8f9fa"; subgraph cluster_std { label="标准自编码器潜在空间"; fillcolor="#ced4da"; L_Std [label="映射的数据点\n(可能稀疏、不规则)", shape= Mrecord, fillcolor="#ffc9c9"]; } subgraph cluster_vae { label="变分自编码器潜在空间"; fillcolor="#ced4da"; L_VAE [label="概率编码\n(鼓励平滑、连续)", shape= Mrecord, fillcolor="#b2f2bb"]; } } Decoder [label="解码器 (生成器)", fillcolor="#e9ecef"]; Output_Std [label="生成的 X'\n(从采样z生成,常不真实)", fillcolor="#ffc9c9"]; Output_VAE [label="生成的 X'\n(从采样z生成,新颖、逼真)", fillcolor="#b2f2bb"]; Input -> L_Std [label=" 编码器"]; Input -> L_VAE [label=" 概率\n编码器"]; L_Std -> Decoder [label=" 采样 z"]; L_VAE -> Decoder [label=" 采样 z"]; Decoder -> Output_Std; Decoder -> Output_VAE [style=dashed]; }这是一个简化视图,比较了输入数据在标准自编码器和变分自编码器潜在空间中的可能表示方式,以及这对于使用解码器生成新数据的影响。对结构化潜在空间的需求为了有效利用类似自编码器的结构进行生成,我们需要潜在空间不仅仅是一个压缩室。我们需要它具有结构化和连续性。这意味着:连续性:潜在空间中向量 $z$ 的微小变化,应导致生成输出 $\hat{X}$ 中语义上微小且有意义的变化。如果潜在空间中微小移动就将输出从“猫”急剧变为“汽车”,那么该空间对于平滑生成或插值没有太大用处。完备性(或密度):潜在空间中可以解码为逼真样本的区域应该足够密集。我们希望能够从潜在空间中选定的分布(例如高斯分布)中采样点,并有很高概率生成有意义的内容。标准自编码器不明确强制实施这些特性。它们的主要目标是最小化重建误差。这正是变分自编码器 (VAEs) 的用武之地。VAEs 是一种专门为生成建模而设计的自编码器。它们为编码器和潜在空间引入了概率机制,并结合了修改后的损失函数,以鼓励潜在空间具有这些理想特性。尽管它们仍然使用编码器-解码器架构,但 VAEs 不将输入映射到潜在空间中的单个点。相反,它们将其映射到概率分布的参数(例如高斯分布的均值和方差)。这种概率方法是它们生成多样且连贯的新样本能力的基础,也是我们将在本章中详细研究的内容。通过学习平滑且结构化的潜在空间,VAEs 为通过简单地从这个学习到的空间采样并将其通过解码器来生成新颖数据铺平了道路。