一文读懂变分自编码(VAE)
概述
变分自编码器(Variational Autoencoder, VAE)是一种生成模型,用于学习数据的潜在表示并生成与原始数据分布相似的新数据。它是一种概率模型,通过结合深度学习和变分推断的思想,解决了传统自编码器无法生成数据的限制。
自编码器(Autoencoder, AE)是一种无监督学习模型,用于学习数据的低维表示,并尝试从低维表示中重建原始数据。它是一种神经网络结构,常用于降维、特征提取和数据生成任务。
自编码器的变种:
- 稀疏自编码器(Sparse Autoencoder)
通过添加稀疏性约束,使潜在表示 z 稀疏化,从而提取更具代表性的特征。 - 去噪自编码器(Denoising Autoencoder, DAE)
在输入数据上添加噪声,训练模型从受损数据中恢复原始数据,提高模型的鲁棒性。 - 变分自编码器(Variational Autoencoder, VAE)
将潜在表示建模为概率分布,能够生成多样化的数据(生成模型)。 - 向量量化变分自编码器(Vector Quantized Variational Autoencoder, VQVAE)
将连续的隐变量空间离散化成一组有限的代码向量,用于表示数据的特征。
KL散度
KL散度的定义
KL 散度(Kullback-Leibler Divergence,简称 KL 散度)是用来衡量两个概率分布之间差异的一种非对称性度量。在概率论和信息论中,KL 散度常用来表示一个分布 Q(近似分布)和另一个目标分布 P之间的相对熵(信息损失)。
信息损失的直观解释:
KL 散度的性质:
- 非负性: D K L ( P / / Q ) ≥ 0 D_{KL}(P//Q)≥0 DKL(P//Q)≥0 且当且仅当 Q(z)=P(z) 时等于 0。
- 非对称性: D K L ( P / / Q ) ≠ D K L ( Q / / P ) D_{KL}(P//Q) ≠ D_{KL}(Q//P) DKL(P//Q)=DKL(Q//P)
- KL 散度越大,说明 P和 Q的差异越大
因此 KL 散度不能直接看作距离,但可以用于优化目标。
变分自编码(VAE)
变分自动编码器 (VAE) 有一个独特属性,将它们与普通的自动编码器区分开来,正是这个属性使它们对生成建模如此有用:它们的潜在空间在设计上是连续的,允许轻松随机采样和插值。
它通过做一些乍一看似乎相当令人惊讶的事情来实现这一点:使其编码器不输出大小为 n 的编码向量,而是输出两个大小为 n 的向量:一个均值向量 μ 和一个标准差向量 σ。
三个关键组成元素
编码器(Encoder):编码器将输入数据 x压缩映射到潜在空间中的概率分布参数(通常为高斯分布的均值 μ与方差 σ2)。具体来说,编码器通过神经网络对输入数据进行特征提取,并输出一组潜在变量分布的参数,用来近似后验分布 q ( z ∣ x ) q(z∣x) q(z∣x) 。
潜在变量(Latent Variables)及其先验分布(Prior):引入一组潜在变量 z,这些潜在变量往往来自一个简单的先验分布(例如标准正态分布 p ( z ) = N ( 0 , I ) p(z)=N(0,I) p(z)=N(0,I) )。通过从该潜在分布中抽样的方式,可以生成新的数据样本。同时,编码器学习到的后验近似 q ( z ∣ x ) q(z∣x) q(z∣x) 必须与此先验分布保持一致,从而实现稳定的生成过程与良好的特征表达能力。
解码器(Decoder):解码器将从潜在分布中采样得到的潜在变量 z映射回原数据空间,从而生成与输入数据分布相似的新样本。解码器模型通常是一个与编码器结构相对对称的神经网络,用于参数化生成分布 p θ ( x ∣ z ) p_\theta(x∣z) pθ(x∣z) ,使得给定某一个潜在向量 z时,可以生成近似真实分布的数据样本。
损失函数
变分自编码器的损失函数(也称ELBO损失函数)是通过最大化数据对数似然的变分下界(Evidence Lower BOund, ELBO)推导而来的。
步骤总结
- 编码器:输入数据 x x x,输出潜在分布 q ( z ∣ x ) = N ( z ; μ ( x ) , σ 2 ( x ) ) q(z∣x)=N(z; μ(x), σ^2(x)) q(z∣x)=N(z;μ(x),σ2(x)) ,用正态分布建模。
参数化表示:通过神经网络输出均值 μ ( x ) μ(x) μ(x)和标准差 σ ( x ) σ(x) σ(x)。 - 潜在空间采样:采样潜在变量 z ∼ q ( z ∣ x ) = N ( μ ( x ) , σ 2 ( x ) ) z∼q(z∣x)=N(μ(x), σ^2(x)) z∼q(z∣x)=N(μ(x),σ2(x)) 。
使用重参数化技巧: z = μ ( x ) + σ ( x ) ⋅ ϵ , ϵ ∼ N ( 0 , 1 ) z=μ(x) + σ(x)⋅ϵ, ϵ∼N(0,1) z=μ(x)+σ(x)⋅ϵ,ϵ∼N(0,1). 使采样过程可导,从而支持反向传播。 - 解码器:输入潜在变量 z z z,输出 p ( x ∣ z ) p(x∣z) p(x∣z) ,即重建数据的分布。
- 计算损失函数:重构损失+KL散度损失
- 反向传播和参数更新
重参数化技巧
重参数化技巧的核心是将随机变量的采样过程表示为一个可微分的确定性函数,使得梯度能够传递到模型参数。这是通过引入一个独立于参数的随机噪声来实现的。
假设编码器输出的潜在分布是高斯分布 q ϕ ( z ∣ x ) = N ( μ , σ 2 ) q_\phi(z∣x)=N(μ,σ^2) qϕ(z∣x)=N(μ,σ2) ,其中 μ μ μ和 σ σ σ是由编码器网络输出的参数。
传统的采样过程: z ∼ N ( μ , σ 2 ) z∼N(μ,σ^2) z∼N(μ,σ2),由于采样操作不可导,无法对编码器网络参数 ϕ ϕ ϕ求导。
为了解决这个问题,我们使用重参数化技巧,将采样过程重写为: z = μ + σ ⊙ ϵ z=μ+σ⊙ϵ z=μ+σ⊙ϵ
其中: ϵ ∼ N ( 0 , I ) ϵ∼N(0,I) ϵ∼N(0,I)是从标准正态分布采样的独立噪声, ⊙ ⊙ ⊙ 表示逐元素乘法。
现在, z z z是 μ μ μ和 σ σ σ的可微函数,且 ϵ ϵ ϵ与模型参数无关。
优势和局限性
优势
- 生成能力:可以从先验分布 p(z) 中采样生成新数据。
- 潜在空间的连续性:潜在表示是概率分布,生成的数据具有多样性和平滑性。
- 数学解释性强:基于概率理论,具有清晰的数学意义。
局限性
- 生成质量有限:生成的样本可能较模糊,不如GAN生成的高质量。
- KL散度权重问题:正则项的影响可能导致生成分布与数据分布不匹配。
VAE的应用
潜在扩散模型(Latent Diffusion Models, LDMs):将训练过程分为两步:
-
训练自动编码器(Autoencoder)首先训练一个自动编码器,将原始图像映射到一个感知上等价于原图,但维度更低、冗余更少的潜在空间。在这个潜在空间中,图像的高频无用细节被尽可能去除,但整体视觉外观与结构得以保留(这被称为“温和的压缩”,mild compression)。由于潜在空间的复杂度降低,训练和推理时对计算资源的需求显著减少。
-
在潜在空间中训练扩散模型,接着,在通过自动编码器得到的潜在表示上训练扩散模型。由于潜在空间已去除了许多不可感知的冗余细节,模型在这个较紧凑的表示空间中进行扩散过程,既能保留足够的语义信息,又避免了对每个像素进行繁琐的重复计算。这样减少了训练和推理的计算量,提升了模型的训练速度和生成效率。
VAE特点
- 概率建模:VAE不仅学习数据的压缩表示(即编码),还学习这些表示的概率分布。这意味着编码后的潜在变量不是固定的值,而是服从某个分布(通常是高斯分布)。
- 变分推理:由于直接计算后验分布通常是不可行的,VAE使用变分推理方法来近似这个后验分布。具体来说,它引入了一个参数化的分布(称为变分分布或识别模型),并最小化该分布与真实后验之间的KL散度。
- 生成能力:VAE可以用来生成新的样本。通过从学习到的潜在空间中随机抽取样本,并通过解码器将其转换为原始数据空间中的样本,可以实现这一点。
- 连续且平滑的潜在空间:VAE倾向于创建一个连续和平滑的潜在空间,这使得在潜在空间中进行插值变得有意义,并且能够生成合理的、过渡自然的新样本。
- 重构损失+正则化项:损失函数由两部分组成:一是重构损失(如均方误差或交叉熵),衡量输入和输出之间的差异;二是KL散度作为正则化项,确保潜在变量的分布接近于预定义的先验分布(通常是标准正态分布)。
- 不确定性估计:因为VAE是基于概率模型的,所以它们能够提供对预测结果不确定性的估计,这对于某些应用领域(例如医疗诊断)非常重要。
- 可解释性:在一些情况下,VAE的潜在空间可能具有一定的语义意义,即特定维度的变化可能会对应于输入数据中的一些显著特征或模式。
- 训练稳定性:相较于其他一些生成模型(如GANs),VAE的训练过程往往更稳定,不容易出现模式崩溃等问题。
- 灵活性:VAE框架非常灵活,可以通过改变编码器、解码器结构以及潜在变量的分布来适应不同的任务需求。
- 扩展性:VAE的概念容易扩展到条件变分自编码器(CVAE)、对抗变分自编码器(AAE)等变体,以处理更复杂的任务,比如条件生成或者结合对抗训练机制提升生成质量。