VAE学习笔记

VAE是变分自编码器的简称,它结合了自动编码器与概率模型,通过强制编码器输出服从高斯分布的潜在变量,使模型具有生成新样本的能力。与传统AE不同,VAE的损失函数包括重构误差和KL散度,前者确保数据重建质量,后者促使潜在变量接近标准高斯分布。这种约束使VAE在图像生成等领域具有一定的应用价值。
摘要由CSDN通过智能技术生成

VAE学习笔记

VAE作为比GAN早的生成模型,虽然效果不如GAN,但是也是非常值得学习的,毕竟融合了VAE和GAN的模型也不少。

Autoencoding

在讲VAE之前,一定要先简单讲一下Autoencoding,因为VAE就是变分的Autoencoding。
在autoencoder模型中,我们加入一个编码器,它能帮我们把图片编码成向量。然后解码器能够把这些向量恢复成图片。

但是,我们想建一个产生式模型,而不是一个只是储存图片的网络。现在我们还不能产生任何未知的东西,因为我们不能随意产生合理的潜在变量。因为合理的潜在变量都是编码器从原始图片中产生的。所以就有了VAE模型。

VAE和AE的区别

和普通autoecoding比,VAE可以对编码器添加约束,就是强迫它产生服从单位高斯分布的潜在变量。因此,VAE的Encoder会输出两个向量,你可以把其中一个看成mean,另一个看成variance。同时还要加入一个误差error,这个error是从一个高斯分布sample出来的。最终把这3个向量合成成code,variance要乘上一个noise,然后加在mean上。

现在,产生新的图片也变得容易:我们只要从单位高斯分布中进行采样,然后把它传给解码器就可以了。

VAE为什么有作用

左边的图,对于普通的AE,如果在满月和弦月的code的中间调一个点,去做decode会得到什么?

答案是不确定,因为你对code的分布并没有任何的约束。

而VAE引入了noise,所以对于相同的input经过encoder后虽然得到的mean和variance是相同的,但是noise是不同的,所以会有一些较小的误差。

如右边的图,所以对于VAE在这样的一个误差范围内的点,而不是仅仅一个点都应该能decode到满月或弦月。

那么对于noise区间重合的地方,就会产生渐进的图,要同时和满月或弦月都比较相似,如最右图所示。

VAE损失函数

VAE的损失函数分为两部分,一部分。一方面,是图片的重构误差,我们可以用平均平方误差来度量,另一方面。我们可以用KL散度(KL散度介绍)来度量我们潜在变量的分布和单位高斯分布的差异。

首先,假定所有的数据都是独立同分布的(i.i.d),两个观测不会相互影响。我们要对生成模型做参数估计,
利用对数最大似然法,就是要最大化下面的对数似然函数:
在这里插入图片描述

VAEs用识别模型去逼近真实的后验概率在这里插入图片描述,衡量两个分布的相似程度。具体推导如下:
log ⁡ p θ ( x ( i ) ) = E z ∼ q ϕ ( z ∣ x ( i ) ) [ log ⁡ p θ ( x ( i ) ) ] = E z ∼ q ϕ [ log ⁡ p θ ( x ( i ) ∣ z ) p θ ( z ) p θ ( z ∣ x ( i ) ) ] = E z ∼ q ϕ [ log ⁡ p θ ( x ( i ) ∣ z ) p θ ( z ) p θ ( z ∣ x ( i ) ) q ϕ ( z ∣ x ( i ) ) q ϕ ( z ∣ x ( i ) ) ] = E z ∼ q ϕ [ log ⁡ p θ ( x ( i ) ∣ z ) ] – E z ∼ q ϕ [ q ϕ ( z ∣ x ( i ) ) p θ ( z ) ] + E z ∼ q

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值