生成式人工智能 - 变分自动编码器

变分自动编码器 (VAE) 是一种深度学习模型,代表了生成建模、降维和特征学习等无监督学习的重大进步。

与传统自动编码器不同,VAE 背后的主要思想是使用概率方法不仅重建数据,而且还从学习到的潜在空间生成新的数据样本。阅读本章以了解变分自动编码器、它们与传统自动编码器的区别以及它们独特的损失函数。

什么是变分自动编码器?

变分自动编码器是一种神经网络,它通过添加概率方法来扩展传统自动编码器的概念。

虽然传统自动编码器旨在从潜在空间压缩和重新生成输入数据,但 VAE 通过使用概率方法,可以通过学习输入数据中的潜在模式来重新生成输入数据以及生成新的数据样本。 VAE 的这种能力使得它们在制作逼真的图像或创建新的数据点等任务中非常有用。

传统自动​​编码器与变分自动编码器

下表提供了传统自动编码器和变分自动编码器之间的全面比较 −

方面 自动编码器 变分自动编码器 (VAE)
潜在空间 自动编码器将输入数据编码为潜在空间中的确定性点。 变分自动编码器将输入数据编码为潜在空间中的概率分布空间。
编码器输出 自动编码器中的编码器生成输入的单个向量表示。 VAE 中的编码器生成两个向量 - 潜在分布的均值和方差。
解码器输入 自动编码器中的解码器将来自编码器的单个向量作为输入,以从潜在空间重新生成输入数据。 VAE 中的解码器使用均值和方差向量作为输入从潜在空间进行采样。
训练目标 自动编码器旨在最小化输入和输出之间的重建误差。 VAE 旨在最小化重建误差以及学习分布与先验分布之间的 KL 散度。
重建损失 自动编码器通常使用均方误差 (MSE) 或二元交叉熵作为重建损失。 VAE 也使用均方误差 (MSE) 或二元交叉熵作为重建损失。
正则化 自动编码器本身并不包括潜在空间中的任何正则化。 VAE 包含一个 KL 散度项来正则化潜在空间。
生成能力 自动编码器无法从输入中生成新的数据样本数据。 VAE 可以生成与输入数据相似的新数据样本。
使用先验分布 自动编码器不使用潜在空间中的先验分布。 VAE 在潜在空间中使用先验分布,通常是标准正态分布。
复杂性 自动编码器易于实现。 由于概率成分和正则化的需求,VAE 更加复杂。
对过度拟合的鲁棒性 如果没有适当的正则化,自动编码器很容易过度拟合。 由于 KL 散度的正则化效应,VAE 不太容易过度拟合术语。
输出质量 自动编码器可以准确地重建输入数据。 VAE 可以生成新的、真实的数据样本。
用例 自动编码器用于降维、特征提取、去噪和异常检测。 VAE 用于生成建模、数据增强、半监督学习和图像合成。

变分自动编码器损失函数

变分自动编码器的损失函数结合了以下两个组件 −

重建损失

重建损失用于以确保解码器能够准确地从隐藏层接收到的潜在空间表示中重建输入。它被计算为原始输入和重建输入之间的均方误差 (MSE)。从数学上讲,它表示如下 −

$$\mathrm{\mathcal{L_{reconstruction}} \: = \: \displaystyle\sum\limits_{i=1}^N || x_{i} \: - \: \hat{x}_{l} ||^{2}}$$

其中 $\mathrm{x_{i}}$ 为原始输入,$\mathrm{\hat{x}_{l}}$ 为重构输入。

KL 散度

KL 散度测量学习分布与先验分布的偏差。VAE 中的先验分布通常是标准正态分布。术语 KL 散度使潜在空间表示正规化,并确保它具有对生成任务有用的属性。

从数学上讲,它表示如下 −

$$\mathrm{\mathcal{L}_{KL} \: = \: -\frac{1}{2} \displaystyle\sum\limits_{j=1}^d ( 1 \: + \: log(\sigma_{j}^{2}) \: - \: \mu_{j}^{2} \: - \: \sigma_{j}^{2})}$$

其中 $\mathrm{\mu_{j}}$是平均值,$\mathrm{\sigma_{j}}$ 是潜在分布的标准差。

总 VAE 损失

训练 VAE 的总损失函数是两个关键成分的总和,即重建损失和 KL 散度。

$$\mathrm{\mathcal{L}_{VAE} \: = \: \mathcal{L}_{reconstruction} \: + \: \mathcal{L}_{KL}}$$

此总损失确保模型准确地重建来自潜在空间的输入,同时保持生成任务属性。

结论

在潜在中使用概率方法空间使得变分自动编码器 (VAE) 成为传统自动编码器的强大扩展。这一变化使 VAE 能够生成新的、真实的数据样本,并使它们对 ML 和数据科学领域的各种应用非常有用。

在本章中,我们详细讨论了 VAE、它们的损失函数以及它们与传统自动编码器的比较。了解 VAE 与传统自动编码器的不同之处以及 VAE 损失函数的作用对于有效使用这些模型非常重要。