为什么VAE的解码器可以使用正态分布样本生成合理的支出?

时间:2019-07-18 07:01:06

标签: autoencoder

我正在努力了解变分自动编码器(VAE)的解码器的工作原理,在阅读了一些论文并进行了一些研究之后,仍然有一个使我感到困惑的问题,具体如下:    为什么训练有素的VAE解码器仅使用正态分布的样本而不是编码器生成的分布的样本就能生成合理的输出,这在大多数学术论文中都用q(z | x)表示。    换句话说,在VAE训练过程中,KL散度通过将q(z | x)拉向正态分布来完成其工作。但是,在训练完成后,不可能使q(z | x)与正态分布严格相同。    因此在训练过程中,解码器的输入是来自分布q(z | x)的样本,它是编码器的输出。     我的问题是:在训练完成后,为什么解码器仅使用正态分布的样本就能合理地生成输出,而不是使用分布q(z | x)的样本。

任何提示和提示将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

这个问题是一年多以前提出的,但出于迟到总比没有好的精神,这里是如何根据用例进行推理的原因-

a)如果您的用例是重建输入,那么您将遵循以下路线:首先将图像馈送到编码器,获得近似后验,然后从中进行采样并将该潜在采样馈送到解码器。如果您的网络训练有素,那么您将获得与输入类似/相同的输出。但是,这首先有什么用呢?请参阅用例(c),了解何时使用编码器很重要/有趣。

b)让我们从VAE中删除编码器。您有接受z训练有素的解码器。换句话说,它能够将z映射到图像。由于之前训练的z是大约标准法线,因此解码器将生成相应的图像。现在,该生成的图像将被视为合成图像,不一定与您的任何训练数据都匹配。

c)还有另一个称为CVAE(条件变分编码器)的VAE,它的流量与常规VAE相同,另外还可以提供额外的输入(即,除了潜在样本外)。然后,该附加输入将影响输入的生成/重构。例如您将图像传递给编码器以获取z,然后提供一个代表眼镜添加的(学习的)矢量,并将该矢量和z传递给解码器。现在,结果将与您作为编码器输入传递的图像相同/相似,但是增加了眼镜。

我的问题是:为什么解码器仅使用正态分布的样本就能合理地生成输出

我已经在用例(b)中回答了,但是在这里非常明确-原因解码器之所以能够合理地生成输出,是因为它是用输入(在这种情况下为z)训练的,该输入是从更接近标准正态分布的样本中采样的。