假设一个简单的神经网络的输入是一组标签(以某种方式编码),输出是一张与这些标签相对应的图像。假设这个网络由一些密集层和一些反向(转置)卷积层组成。
这个网络的缺点是什么,它引导人们发明相当复杂的东西,比如 GAN 或 VAE?
假设一个简单的神经网络的输入是一组标签(以某种方式编码),输出是一张与这些标签相对应的图像。假设这个网络由一些密集层和一些反向(转置)卷积层组成。
这个网络的缺点是什么,它引导人们发明相当复杂的东西,比如 GAN 或 VAE?
这些生成模型与您描述的方法之间唯一的缺点和区别是输入。您描述了输入标签,对于 GAN 或 VAE,模型的生成部分采用概率分布的某种表示。对于 GAN,它主要是随机噪声,而对于 VAE,它是一些潜在空间(参见 nbros 的答案)。
您描述的方法会阻止网络正确学习流体生成。如果您有离散输入,网络将尝试对输入执行某种分类,而不是生成,因此当您尝试生成新图像时,您很可能会得到相当于乱码的图像。
事实上,这就是为什么标准的自动编码器(不是变分的)不能很好地用于生成的原因。您会认为您可以将自己的自定义输入输入到潜在空间中:
但是如果你尝试了这个,你最终会告诉网络尝试从它无法解释的潜在空间中生成一些东西。
因此,VAE 的“变分”部分就派上用场了。这有助于网络学习从连续分布中生成,因此无论您使用什么输入,网络都将能够解释它并给出适当的输出。
对于 GAN,它只是在每个训练步骤中输入随机噪声,因此它也是基于连续分布生成的。
如果你尝试训练你的生成方法,我预测你会找到所有共享相似标签的图像的平均值(假设你有 cat、dog 和 brown haired 的标签,如果你输入“dog=1, cat=0, brown haired=1" 你会得到所有棕色头发狗的平均值),但是如果你尝试输入网络没有看到的标签组合,因为它没有从连续分布中学习,结果图像不会像您对这些标签所期望的那样。
我将只关注 VAE,因为我更熟悉它,但这些解释也可能适用于 GAN 和其他生成模型。
在 VAE 的情况下,您训练一个神经网络不仅可以生成图像,而且可以在所谓的潜在空间中紧凑地表示它们,因此您可以训练 VAE 进行降维。更准确地说,VAE 试图学习一个比训练数据的维数更小的概率分布,但它希望能代表训练数据。因此,模型被迫学习生成训练数据的概率分布的基本特征。
VAE 是一种生成模型而不是判别模型。对于将输入映射到图像的神经网络,您不会学习潜在概率分布(除非您以这种方式制定模型),您可以从中进行采样,但您只是在有监督的情况下进行映射方式(也就是说,您需要一个标记的训练数据集),并且确定性地,图像的输入。在 VAE 中,存在某种形式的随机性,同时训练(和测试)模型。