变分自编码器
生成式AI - 变分自编码器(VAEs)
Section titled “生成式AI - 变分自编码器(VAEs)”变分自编码器(Variational Autoencoder, VAE)是一种复杂的深度学习模型,它代表了无监督学习领域的一项重大进展,特别是在生成建模、降维和学习丰富的特征表示方面。VAEs 是生成模型,这意味着它们学习输入数据的底层概率分布,然后可以从这个学习到的分布中采样以创建新的数据实例。
与学习到潜在空间的确定性映射的传统自编码器不同,VAEs 引入了一种概率方法。它们不仅旨在重建数据,而且明确设计用于从学习到的连续潜在空间生成新的、合理的数据样本。本章将深入探讨变分自编码器,它们与传统自编码器的区别,以及其实现生成能力的独特损失函数。
什么是变分自编码器?
Section titled “什么是变分自编码器?”变分自编码器是神经网络,它通过结合概率图模型(probabilistic graphical models)和变分推断(variational inference)的原理扩展了传统自编码器的概念。它们由两个主要部分组成:一个编码器(encoder,也称为识别网络 recognition network 或推断网络 inference network)和一个解码器(decoder,也称为生成网络 generative network)。
传统自编码器学习将输入数据压缩到潜在空间中的一个确定性点,然后进行重建,而 VAEs 则学习潜在空间中表示输入数据的概率分布(通常是高斯分布)的参数。编码器输出该分布的均值($mu$)和方差($sigma^2$,为了数值稳定性通常是对数方差 log-variance)。然后从该分布中抽取一个样本并馈送给解码器进行输入重建。这种概率编码是 VAEs 生成新数据样本能力的关键,并确保了更平滑、更有结构的潜在空间。
传统自编码器 vs. 变分自编码器
Section titled “传统自编码器 vs. 变分自编码器”下表提供了传统自编码器和变分自编码器之间的全面比较:
| 方面 | 传统自编码器 (AEs) | 变分自编码器 (VAEs) |
|---|---|---|
| 潜在空间表示 | 将输入数据编码为潜在空间中的一个单一确定性点(向量)。 | 将输入数据编码为潜在空间中概率分布(通常是高斯分布)的参数(例如,均值和方差)。 |
| 编码器输出 | 产生一个表示压缩输入的单一向量。 | 产生两个向量:一个用于表示输入数据的潜在分布的均值($mu$),另一个用于表示标准差($sigma$)(或对数方差)。 |
| 解码器输入 | 接收来自编码器的单一确定性潜在向量作为输入来重建数据。 | 接收从学习到的潜在概率分布中抽取的样本(使用 $mu$ 和 $sigma$)作为输入来重建数据。 |
| 训练目标 | 主要目标是最小化输入与输出之间的重建误差。 | 旨在最小化重建误差 和 一个正则化项(KL 散度),该项迫使学习到的潜在分布接近先验分布(例如,标准正态分布)。 |
| 重建损失 | 对于连续数据通常使用均方误差(MSE),对于二元/归一化数据使用二元交叉熵(BCE)。 | 也使用 MSE 或 BCE 作为重建损失,类似于 AEs。 |
| 潜在空间正则化 | 本身不包含用于为生成构建潜在空间的显式正则化(尽管一些 AE 如去噪 AE 会添加噪声)。 | 在损失函数中包含一个 Kullback-Leibler (KL) 散度项。这使得潜在空间正则化,使其连续且适合采样和生成。 |
| 生成能力 | 通常不擅长生成新的、多样化的数据样本。在其潜在空间中进行插值可能无法产生有意义的结果。 | 明确设计用于生成。正则化、连续的潜在空间允许有意义的插值和采样,以生成新的、合理的数据实例。 |
| 先验分布的使用 | 不显式地为潜在空间使用先验分布。 | 假定潜在空间存在一个先验分布(通常是标准正态分布,$N(0, I)$)。KL 散度项鼓励学习到的后验分布 $q(z|x)$ 平均上匹配这个先验 $p(z)$。 |
| 数学基础 | 基于确定性映射和降维。 | 基于变分推断,一种来自贝叶斯统计的技术,用于近似难以处理的后验分布。 |
| 复杂度 | 相对更容易实现和理解。 | 由于引入了概率组件、重参数化技巧(reparameterization trick)和损失函数中的 KL 散度项,因而更复杂。 |
| 对过拟合的鲁棒性 | 如果潜在空间维度过大,容易过拟合,学习到恒等映射,除非进行正则化(例如,稀疏 AE、去噪 AE)。 | KL 散度项充当正则化器,有助于防止过拟合并促使潜在空间更具结构。 |
| 输出质量(重建) | 如果潜在维度足够,可以实现非常好的重建。 | 重建质量有时可能比 AE 略模糊,因为 KL 项会牺牲一些重建精度来换取更好的潜在空间结构。 |
| 输出质量(生成) | 不用于生成;生成的样本通常较差。 | 可以生成新的、逼真且多样化的数据样本,尽管 GAN 通常生成更清晰的图像。 |
| 主要用例 | 降维、特征提取、数据去噪、异常检测。 | 生成建模(图像、文本、音频合成)、数据增强、表示学习、半监督学习、药物发现。 |
变分自编码器损失函数
Section titled “变分自编码器损失函数”VAE 的损失函数是其运行的核心,它由两个主要部分组成:
1. 重建损失
Section titled “1. 重建损失”该项衡量了解码器从潜在样本 $z$(从由编码器参数化的分布 $q_{\phi}(z|x)$ 中抽取)重建原始输入数据 $x$ 的程度。它确保 VAE 学习保留输入中的信息。该损失函数的常见选择包括:
- 用于实值数据的均方误差(MSE):$\mathcal{L}{reconstruction} = \frac{1}{N} \sum{i=1}^N || x_i - \hat{x}_i ||^2$
- 用于像素值在 [0, 1] 范围内的数据(例如,归一化图像)的二元交叉熵(BCE):$\mathcal{L}{reconstruction} = -\frac{1}{N} \sum{i=1}^N \sum_{j=1}^D [x_{ij} \log(\hat{x}{ij}) + (1-x{ij}) \log(1-\hat{x}_{ij})]$
这里,$x_i$ 是第 $i$ 个原始输入,$\hat{x}_i$ 是其重建结果,$N$ 是数据点的数量,$D$ 是每个数据点的维度。
2. Kullback-Leibler (KL) 散度
Section titled “2. Kullback-Leibler (KL) 散度”该项作为潜在空间的正则化器。它衡量了学习到的潜在分布 $q_{\phi}(z|x)$(由编码器针对给定输入 $x$ 输出)与潜在变量的选定先验分布 $p(z)$(通常是标准正态分布 $N(0, I)$)之间的差异。最小化 KL 散度鼓励编码器产生接近先验分布的潜在分布,从而形成一个结构良好、连续且适合生成的潜在空间。
对于高斯编码器输出 $q_{\phi}(z|x) = N(z; \mu_x, \sigma_x^2 I)$ 和标准正态先验 $p(z) = N(z; 0, I)$,每个数据点的 KL 散度为:
$$D_{KL}(q_{\phi}(z|x) || p(z)) = -\frac{1}{2} \sum_{j=1}^J (1 + \log(\sigma_{xj}^2) - \mu_{xj}^2 - \sigma_{xj}^2)$$
其中 $J$ 是潜在空间的维度,$mu_{xj}$ 和 $sigma_{xj}^2$ 是输入 $x$ 的潜在分布第 $j$ 个维度的均值和方差。
VAE 总损失(证据下界 - ELBO)
Section titled “VAE 总损失(证据下界 - ELBO)”训练 VAE 的总损失函数通常是证据下界(Evidence Lower Bound, ELBO)的负值。最小化这个负 ELBO 等同于最大化 ELBO。损失函数通常表示为:
$$\mathcal{L}{VAE} = \mathcal{L}{reconstruction} + \beta cdot D_{KL}(q_{\phi}(z|x) || p(z))$$
项 $\beta$ 是 KL 散度的权重因子,通常设置为 1。在一些变体(如 $\beta$-VAE)中,可以对其进行调整,以鼓励学习到更解耦(disentangled)的表示。这个组合损失函数平衡了准确重建的需求与潜在空间正则化使其符合先验分布的需求,从而实现了有效的生成。
变分自编码器(VAEs)是一类强大的生成模型,它利用概率方法和变分推断学习一个连续且结构化的潜在空间。这使得 VAEs 不仅能够重建输入数据,还能生成新的、合理的数据样本,使它们在机器学习和数据科学的各种应用中极具价值,包括图像合成、药物发现和异常检测。
理解 VAEs 与传统自编码器之间的核心区别,特别是 VAE 编码器的概率性质及其独特损失函数(结合了重建误差和 KL 散度)的作用,对于有效应用和创新这些模型至关重要。VAEs 代表着朝着构建能够像人类一样理解和生成复杂数据的机器迈出的关键一步。