VAE详解及PyTorch代码

三大有名的生成模型VAE、GAN以及Diffusion Model

其余两篇

看了网上的一些博客,大多都写到了重点,也就是后面的公式推导部分,可是大部分只有推导过程,很少有讲明白为什么要这么假设,我看的时候内心不断有个疑问:这些所有推导的第一个式子是怎么来的?为什么所有的推导都是要证明第一个式子?下面我们从生成模型的源头来理解这个问题,就茅塞顿开了

什么是生成模型?

首先要明白什么是生成模型?比如我们有一堆数据点,他的真实分布是,生成模型的目的就是去学习一个模型,将一些随机采样的噪声(通常为高斯噪声)输入到此模型中,使得此模型的输出为中的数据,即模型的分布去尽可能的接近数据的真实分布,或者说让模型能够尽可能地生成数据点中的数据

生成模型要做什么

如上所述,生成模型就是要去接近数据点(数据集)的真实分布,也就是说我们要最大化所建模的概率分布

这里的就是模型的参数,就是随机采样的噪声,的后验概率分布,通常来说都是高斯分布

VAE的目标函数

实际上,对于大多数的的取值都接近0,因此VAE的核心就是不断地进行采样,直到可能产生数据点为止,这显然会让生成过程变得困难/复杂

在真正实现时,作者构建了一个新的函数,给定数据集中的一个数据可以给我们一个的分布,这个给定的分布就更加容易产生出了,在后的的范围比先验要小得多,因此我们将关联起来,如下

这个式子是不是和上面那个很相似?只是讲替换为了,这种替换能够使得我们的随机采样变得不是那么的随机(即,相对于更加具体了采样的范围,而不是无脑采样…)

在原文中,也有提到是求解的关键: The relationship between and is one of the cornerstones of variational Bayesian methods.

既然上面提到了的获取对生成至关重要,那如何去获得呢,作者用KL散度来构建之间的关系(在文中KL散度用符号来表示)

下面用Bayes公式来化简上述式子,将代替

因为与变量无关,因此可以从期望中拿出,将上式继续整理得

注意到这里的可以是任意的概率分布,但是为了让其有意义,使从其采样出的噪声更容易建模出,并最小化,我们让去依赖于,即得到下式

上式就是VAE最核心的公式了

  • 等号左边:是我们要最大化的项,描述了可能生成的取值,当模型的建模能力足够时,可以看做0
  • 等号右边:可以通过梯度下降来优化,他更像是一个自编码器(AE),因为编码到空间,解码重建出

未完…

Error: API rate limit exceeded for 54.86.227.123. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)