变分自动编码器 - 潜在空间的维度

机器算法验证 机器学习 神经网络 正态分布 自动编码器 生成模型
2022-03-17 03:55:15

我做了一些实验来了解 VAE 中潜在空间维度的影响,似乎空间越高,生成逼真的图像就越困难。我可能对原因有直觉,我想听听你的意见或任何其他关于它的理论见解。

首先,我注意到:

  • 在 MNIST 上训练具有大潜在空间(8x8x1024)的深度卷积 VAE 后,重建效果非常好。此外,当我将任何样本提供给我的编码器时,输出均值接近 0,输出 std接近 1。重建损失和潜在损失似乎都很低.xμ(x)σ(x)
  • 但是,如果我将来自的随机样本提供给我的解码器,则输出是黑色背景上的一些随机白色笔划(如 MNIST 样本,但看起来不像数字)。N(0,I)
  • 如果我给我的编码器一个图像,它将输出一个平均值(接近 0),如果我给我的解码器随机样本来自,输出将是代表与输入相同数字的图像(既真实又与输入不同)xμ(x)N(μ(x),I)

我的结论是:

  • VAE 生成了许多真实图像的高斯分布,其中心接近 0 但不完全为 0。因此,真实图像的分布是高斯的混合D=xXαxN(μ(x),I)
  • 的实际支持的实际支持不重叠(除了在一组测量零上)。通过实际支持,我指的是实际生成大多数点的空间。对于高维高斯,它对应于一个肥皂泡N(0,I)D

所以这里是一个高维潜在空间会发生什么的可视化:

高维高斯

红色气泡将是的实际支持,而黑色气泡的并集将是 的实际支持。只有黑色气泡包含逼真的图像,而红色气泡几乎不包含逼真的图像。维度越高,气泡越细,重叠空间越小。N(0,I)D

这种直觉正确吗?高维潜在空间不能正常工作还有其他原因吗?

1个回答

您似乎误解了您的架构,并且很简单,过度拟合了您的数据

看起来你对潜在空间的解释是它代表了许多逼真的图像。在最好的情况下这不太可能,并且如果您的解码器对采样输出执行任何转换(可能是仿射转换除外) - 不可能。

自动编码器(或更确切地说是它们的编码器组件)通常是压缩算法这意味着他们用更小、更抽象的特征来逼近“真实”数据。

例如,字符串“ 33333333000000000669111222222 ”可以通过非常简单的算法无损压缩为“ 8:3/9:0/2:6/1:9/3:1/6:2 ”-出现次数:数字,保持位置. 如果您的标准是文本长度,则编码要短六个字符 - 不是一个巨大的改进,但仍然是一个改进。

发生的事情是我们引入了一个抽象的、更高维度的特征——“重复次数”——它可以帮助我们更简洁地表达原始数据。您可以进一步压缩输出;例如,注意到即使位置只是分隔符,您可以将它们编码为一位填充而不是 ASCII 代码。

自动编码器正是这样做的,除了它们自己选择特征,而变分自动编码器强制最终编码级别(至少)以一种可以操纵的方式是模糊的。

因此,您在模型中所做的就是使用超过六万五千个特征来描述您的输入图像。在变分自动编码器中,每个特征实际上是一个特征的两个不同版本之间的滑动比例,例如面部的男性/女性,或 MNIST 数字的宽/细笔触。

你能想出一百种方式来有意义地描述两张真实照片之间的差异吗?可能,我想,但是当你试图继续时,他们会变得越来越强迫。

有了这么多的剩余空间,优化器可以轻松地将每个不同的训练图像的特征编码在潜在空间的非重叠切片中,而不是学习全局获取的训练数据的特征。

所以,当你给它提供一张验证图片时,它的编码会落在局部适用的特征编码岛之间的某个地方,因此结果是完全不连贯的。