我已经阅读了很多关于 VAE 的文献,并且我了解了基本设置。但是,我仍然不知道总体目标是什么。基本设置是我们有一个观察数据集和一组潜在变量。
我的问题:我们要计算什么,为什么?所以我们要计算
- a) 联合概率分布 ? 和/或
- b) 后验分布?
我们用这些分布做什么?我们想生成新的数据点吗?
我已经阅读了很多关于 VAE 的文献,并且我了解了基本设置。但是,我仍然不知道总体目标是什么。基本设置是我们有一个观察数据集和一组潜在变量。
我的问题:我们要计算什么,为什么?所以我们要计算
我们用这些分布做什么?我们想生成新的数据点吗?
与自动编码器类似,变分自动编码器的目标是重建输入。
唯一的区别是 AE 在编码器和解码器部分之间有直接联系,但 VAE 有一个采样层,该层采样形成一个分布(通常是高斯分布),然后将生成的样本馈送到解码器部分。
以下是来自不同自动编码器作为生成模型的一些示例。您可以通过仅使用随机观察作为输入轻松了解网络如何捕获数据分布并生成与原始样本非常相似的样本。顶部是随机输入,底部是重建图像。这些模型在 MNIST 上进行了训练。

如果你看一下这篇论文,你会找到问题的答案:

我们要计算什么,为什么?
我认为您最感兴趣的是这里的推理问题。一旦我们有了训练好的模型,我们就可以使用该模型推断任何分布。例如:
1. 我们可以使用联合分布进行抽样。
为什么?它是一种用于生成新数据点的方法。
如何?我们首先从潜在变量中采样,然后从条件分布中采样。如果都是二元变量,我们可以根据二项分布进行采样。
2. 我们可以绘制条件期望.
为什么?我们可以通过检查显变量的期望来直观地了解隐变量的作用。
如何?我们只是从潜在变量中采样,然后得到条件分布,这就是显式变量的期望。然后我们可以在网格轴对应的 ND 网格上绘制图像...分别。
例如,如果我们为 MNIST 任务设置两个潜在变量(此处离散化),我们可能会得到这样一个网格:
我们可以看到,最有可能的是垂直坐标控制厚度,水平坐标控制曲线。
3. 我们可以计算manifest varialbes 的联合分布.
为什么?我们可以使用这个分布来检查一些新数据的有效性。如果新案例的概率太低,我们可以说它是无效案例,否则它最喜欢类似案例。
如何?我们可以使用验证数据集和测试数据集。首先在验证数据集(所有有效案例)上,我们计算每个案例的联合概率(通过对潜在变量求和),然后找到 75 个百分位和 25 个百分位。然后我们尝试测试用例(可能包含无效用例),如果概率落入范围(25-75 个百分位)我们说它是有效的,否则无效。通过这种方式,我们可以从测试数据集中过滤掉一些不好的情况。
实际上,一旦我们知道贝叶斯模型的参数,我们就可以得到任何分布,并且可以使用它们找到许多有趣的东西。
AVE 是具有编码和解码两部分的网络。编码器具有v形状,解码器也具有形状。当它们放在一起时,它们具有这样的形状><。有趣的部分是潜在向量,它位于两者之间v。在你训练了 AVE(比如在脸上)之后,可以丢弃解码器部分,这样你就剩下编码器部分了。
现在,潜在向量是编码器的输入,可以说潜在向量是一个由 100 个介于 -1 和 1 之间的浮点数组成的数组。由于您在面孔上训练了 AVE,因此您可以通过创建随机浮点数组来生成新面孔-1 和 1 之间的数字并生成一个新面孔。这可以用来制作各种各样的东西,比如新鞋、包、游戏、艺术、汽车的新地图。潜在向量是您在训练网络后随机创建的分布。分布已成为数据。使用 100 个浮点数,分布空间非常大,如果我的数学是正确的 2 次方 100*31 唯一面。这是一个很大的空间,你可以创造出从未出生的人和已经死去的人的面孔。希望对您有所帮助。
自动编码器的目标是学习某种东西的编码(连同它的解码功能)。编码有很多用途。
在变分自动编码器中,学习的是编码的分布,而不是直接的编码函数。这样做的结果是,您可以对学习到的对象编码分布进行多次采样,并且每次都可以获得同一对象的不同编码。从这个意义上说,变分自动编码器捕捉到了这样一种想法,即只要“本质”存在于所有编码中,您就可以通过多种方式表示某些东西。每种编码中要表示的“基本”内容取决于问题;有些问题可能需要更高的精度,而其他问题则更少。可以通过调整用于学习编码的神经网络以及用于判断从编码重建对象的相似程度的成本函数来调整编码的精度。
在数据量相同的情况下,变分自编码器可以学习比普通自编码器更复杂的对象,但需要权衡的是不太精确(尽管不太精确并不总是坏事)。