VAE原理

为什么要使用VAE

直观解释

这里主要是与AutoEncoder进行一个对比。简单易懂的理解变分其实就是一句话:用简单的分布q去近似复杂的分布p。
在这里插入图片描述在原先的AutoEncoder当中,只能产生一一对应的图片,然而如果我们希望它能够产生两张月亮的中间结果时,他便不能够进行输出。因此,在VAE中对图像加入noise,在一定范围内都可以输出对应的月亮的图像,因此我们期望在两个范围的交界处,使得模型能够产生一个中间结果。
在这里插入图片描述
再来看一下VAE的流程,其中e1-e3是通过正态分布产生的vector。c代表的是加上了noise以后的code,decoder需要做的就是把加入noise以后的code还原成一张图像。σ1-σ3是通过学习产生的noise的方差,因为需要保证他是正数,在乘e时需要对其取exp。这样就保证了对于c1-c3的,方差的大小决定了noise的大小。
在这里插入图片描述
但是只通过上面的描述还是不够的,因为当把所有的σ都取0时,模型自然是训练的最好的。为了避免这种情况,我们需要对方差添加右下角的约束,也就是让variance不能太小。在下图中绿色曲线代表该式的函数图像,可以看出当σ取0时函数值是取1的,也就是不要让他太小。
在这里插入图片描述

论文中常见的解释

问题描述

例如下图所示的宝可梦图像生成,可以把每一只宝可梦看成高维空间中的一个点,我们想要做的就是估计这个几率分布。输入x是一个vector。在这里插入图片描述

高斯混合模型

对于一个复杂的分布,他可以是由多组正态分布混合构成的,因此它可以表示为如下的形式。那么我们就可以计算x究竟属于哪一个正态分布当中,而后对分布进行描述。但是这样其实是不够的,更好的描述方式是使用Distributed Representations的方案进行描述。Distributed Representation是什么意思呢?在 distributed representation 中,强调的重点是每个词并非采用离散的表征方式(例如 one-hot encoding),而是被表征为一个低维,稠密的向量。
在这里插入图片描述
VAE其实就是可以看作是Distributed Representation的版本。

VAE

z是从正态分布中取样的一个向量,z的每一维都代表了一个图像的特征。我们通过一个正态分布来产生Gaussian,z中的每一个点都代表了一个Gaussian,所以我们有无穷多的Gaussian,z的均值与方差都是可以通过函数来计算的(通过NN)。隐变量z的作用除了让生成网络尽可能还原原来的数据 X,同时也能生成原来数据中不存在的数据。
在这里插入图片描述那么现在我们就可以用积分的形式来表示P(x),这个类比前面离散的时候是累加,但是由于这里的Gaussian是无穷多的,因此需要变成积分的形式。
在这里插入图片描述现在可以回想在训练Diffusion model的时候,我们通过最大似然估计来考量两个分布之间的相似度。在VAE中用的也是这样一个思路,这里需要训练的值就是z的均值与方差,其实也就是更能够凸显x的特征。
在这里插入图片描述
下面给一个推导过程,其实也就是计算的是他的下界,这个在之前Diffusion model中有提到过。
在这里插入图片描述
为什么要引入q这一项呢?其实也就是让KL占比越来越小,其实也就是让q(z|x)与p(z|x)越来越接近,回归到在说Diffusion model中想讲的故事,其实就是让两个分布越接近越好。
在这里插入图片描述我们对Lb进行一些变形,可以看到前一项其实就是一个负的KL divergence。回忆一下q是什么,q其实就是一个NN,其实就是encoder,他吃一个x,输出z的均值与方差。
在这里插入图片描述
那么现在的目的就变成了训练一个NN,使得KL divergence越小越好。那也就是让q与P(z),P(z)是一个正态分布越像越好。
在这里插入图片描述再来看另外一项,另外一项的目标是max。也就是从q中sample data,要让logP(x|z)越大越好,其实这就是autoencoder在做的事情。所以目的就变成了如下所示这样的形式,其实就是让一个神经网络吃一个输入x,而后产生两个向量,分别代表均值和方差,而后根据均值和方差sample出一个z。再将这个z作为下一个神经网络的输入,产生两个向量,分别代表均值和方差。因为这里通常不考虑方差,所以就是要让两个均值越接近越好。
在这里插入图片描述
两项合并,其实就是我们之前看到的呢个VAE的损失函数。
在这里插入图片描述

VAE的问题

VAE只是产生数据集中已经有的图片,而不是产生新的图片,因此就有了后续的GAN等技术的研究。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值