生成式AI基石之一:变分自编码器(VAE)详解:从架构到数学的深度指南

『AI先锋杯·14天征文挑战第5期』 10w+人浏览 440人参与

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通过编码器网络,被转换成一个低维的编码 z = encoder(x)

​3.解码​:编码 z通过解码器网络,被重建为一个与 x同维度的输出 x' = decoder(z)

​4.目标​:通过优化算法(如梯度下降),不断调整编码器和解码器的参数,使得重建输出 x'与原始输入 x之间的差异(重建损失)最小化。

AE 的目标是让重建的输出与原始输入尽可能相似,其损失函数通常是均方误差(MSE)或交叉熵。然而,AE 的潜在空间(latent space,即所有潜在向量构成的空间)通常是“不连续”和“无组织”的。这意味着,如果你在潜在空间中随机取一个点,解码器很可能生成一堆毫无意义的杂讯。你无法用它来生成新的、有意义的数据。

VAE 的革命性改进 就在于此。它不对输入数据进行确定性的编码,而是将其编码为一个概率分布。具体来说,编码器不再输出一个单一的向量 z,而是输出描述一个概率分布的参数,通常是一个高斯分布的均值 μ 和方差 σ2。

这样做的核心优势是:

  1. 强制组织潜在空间:VAE 强迫编码器产生的分布趋向于一个标准的正态分布。这使得潜在空间变得连续、平滑且结构化。

  2. 实现生成能力:由于潜在空间是连续且有良好结构的,我们可以在训练完成后,从这个空间中随机采样一个点 z,然后用解码器生成一个全新的、与训练数据相似但又不完全相同的数据样本。

2. VAE 的模型架构

VAE 同样由编码器和解码器两部分组成,但其工作流程更具概率性。

VAE做了一个非常聪明的假设:

1.​世界上所有的图片都是由某个简单的先验分布​(比如标准正态分布 p(z) = N(0, I))中的潜在变量 z生成的。

2.对于某一类具体的图片​(比如“数字2”),它们是由潜在空间中某个特定区域z生成的。这个区域可以是一个概率分布 p(z|X)(即看到图片X后,z最可能出现在哪里)。

3.这个真正的后验分布 p(z|X)太复杂,我们用一个由神经网络计算的、简单的分布 q(z|X) = N(μ, σ²)来近似它。

所以,编码器的任务不再是输出一个确定的点Z,而是输出这个近似分布 N(μ, σ²)的参数!​

编码器工作流程:

输入​:原始数据 x(如图片)。

输出​:不是编码 z,而是两个向量:

均值向量 μ​:表示潜在空间中理想编码应该分布的中心。​

对数方差向量 log(σ²)​​ 或 ​方差向量 σ²​:表示每个维度上的 spread 或不确定性。使用 log(σ²)是因为它的值域更广,训练更稳定。​

功能​:对于给定的输入 x,编码器推断出潜在变量 z所应服从的后验分布 q(z|x)的参数。这里我们假设这个后验分布是一个高斯分布,即 q(z|x) = N(μ, σ²I)

采样 (Sampling)

我们不能直接从编码器输出的分布 q​(z∣X) 中采样,因为“采样”这个动作本身是随机的,无法进行梯度反向传播。这里 VAE 采用了一个非常重要的技巧,叫做重参数化技巧

我们从 N(μ, σ²)中采样 z的操作是不可导的。因此,我们将采样过程移出计算图,改写为一个可导的形式

我们不直接采 z∼N(μ,σ2),而是先从一个标准正态分布 N(0,I) 中采样一个随机噪声 ϵ,然后通过 z=μ+σ⊙ϵ 来计算 z。(这里的 ⊙ 表示逐元素相乘)。

这样一来,随机性被转移到了 ϵ 这个与网络参数无关的变量上,而 z 对于 μ 和 σ 的依赖关系是确定性的,因此梯度可以顺利地从 z 反向传播到编码器的参数 ϕ。

解码器 (Decoder / Generative Model)

输入:从潜在分布中采样得到的潜在向量 z。

输出:重建的数据 X′。解码器实际上是在学习一个条件概率分布 pθ​(X∣z),其中 θ 是解码器神经网络的参数。

3. VAE 的数学原理:损失函数

VAE的损失函数不是凭空设计的,而是通过严谨的数学推导——变分推断(Variational Inference)​——得出的。它的目标是最大化数据本身的概率(似然),同时引入一个可处理的近似分布来简化计算。

VAE 的精髓在于其独特的损失函数。我们的目标是最大化观测到数据 X 的概率,即最大化边际似然 p(X)。根据全概率公式,我们可以写出:

这里的 p(z) 通常选择标准正态分布 N(0, 1)作为先验概率,并不是因为它是什么“唯一真理”,而是因为它是一个在数学便利性实现难度效果之间取得了最佳平衡的工程上的默认选择

这个积分在 z 的维度很高时是难以计算的(intractable)。

这个积分在高维空间中是难以计算的。VAE的解决方案是引入一个识别模型(即编码器)​qᵩ(z|x)来近似真实但难以处理的后验分布 p(z|x)

通过数学推导(Jensen's Inequality),我们可以得到一个似然函数的下界,称为证据下界(Evidence Lower BOund, ELBO)​​:

VAE 的总损失函数 LVAE​ 由两部分组成:

(1) 重建损失 (Reconstruction Loss)

这部分与标准自编码器的损失非常相似。它衡量的是从潜在向量 z 重建出的数据 X′ 与原始数据 X 之间的差异。

如果输入数据是二值的(例如黑白 MNIST 图片),通常使用二元交叉熵 (Binary Cross-Entropy)

如果输入数据是实数值的(例如彩色图片),通常使用均方误差 (Mean Squared Error, MSE)

这个损失项鼓励解码器学习如何根据潜在向量 z 精确地恢复出原始数据。

(2) KL 散度 (Kullback-Leibler Divergence)

这部分是 VAE 的核心,也是它与 AE 的最大区别。它是一个正则化项,用于衡量编码器产生的分布 qϕ​(z∣X) 与我们设定的先验分布 p(z)(通常是 N(0,I))之间的相似度。

作用:这个损失项强迫编码器学习到的均值 μ 趋近于 0,方差 σ2 趋近于 1。这使得所有输入数据在潜在空间中的编码分布都聚集在原点附近,从而让整个潜在空间变得紧凑和连续。

直观理解:如果没有 KL 散度项,编码器会倾向于为每个输入数据找到一个“完美”的编码位置,使得重建损失最小。但这会导致不同数据点的编码在潜在空间中相距很远,中间的空白区域没有任何意义。KL 散度就像一个“引力”,把所有编码都拉向中心,强迫它们挨得更近,从而填补了这些空白,使得潜在空间变得平滑。

总结一下损失函数:VAE 的训练过程就是一个权衡的过程。一方面,它要最小化重建损失,以保证编码包含了足够的信息来恢复原始数据;另一方面,它要最小化 KL 散度,以保证潜在空间具有良好的结构,便于生成新数据。

4. VAE 如何生成新数据?

一旦 VAE 训练完成,生成新数据的过程就非常简单了:

  1. 丢弃编码器:我们不再需要编码器部分。

  2. 从先验分布中采样:直接从标准正态分布 p(z)=N(0,I) 中随机采样一个潜在向量 znew​。

  3. 通过解码器生成:将 znew​ 输入到解码器中。

  4. 获得新样本:解码器的输出 Xnew​ 就是一个全新的、与训练数据风格一致的样本。

因为 KL 散度损失已经确保了训练数据的编码分布与标准正态分布足够接近,所以从标准正态分布中采样就等同于在数据流形的潜在表示中采样。

5. VAE 的优缺点

优点

  • 理论完备:它建立在严谨的变分推断理论之上,数学解释性强。

  • 生成连续的潜在空间:这是其核心优势,不仅能生成数据,还能进行潜在空间的插值,例如实现两张人脸图像的平滑过渡。

  • 训练稳定:相比于生成对抗网络 (GAN),VAE 的训练过程通常更加稳定,不易出现模式崩溃 (mode collapse) 问题。

缺点

  • 生成图像模糊:由于其损失函数(尤其是使用 MSE 时)倾向于产生“平均”的结果,VAE 生成的图像通常比顶级 GAN 生成的图像更模糊。

  • ELBO 只是下界:模型优化的是真实数据对数似然的一个下界,而不是似然本身,这在理论上存在一定差距。

  • 先验假设的局限性:假设潜在变量服从简单的高斯分布可能过于简化,无法捕捉某些复杂数据的真实潜在结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值