直接看paper看得云里雾里,李沐视频一语道破天机(建议从30min左右开始看GAN到Diffusion的串讲)。VAE的核心思路就是下面:
做生成,其实就是从随机向量(z)到目标图像(x)的过程,那么z就是先验,x就是后验。
一些博客讲的也挺好的:
VAE的原理和代码实现_vae代码_Zero_to_zero1234的博客-CSDN博客
1、目的
perform efficient inference and learning in directed probabilistic models(有向概率模型,也就是我们的DL网络), in the presence of continuous latent variables(连续隐变量z) with intractable prosterior distributions(输出x')
2、贡献
重参数(reparameterization) + 极大似然法(maximum likelihood / maximum a posteriori) + 可导变分下界(differentiable variational lower bound,是下界的无偏估计),使得问题可以使用SGD求解
3、方法
1)基本假设
从先验分布中采样,从条件概率分布中采样,且两个分布的概率密度函数对任意和z都是可微的。
2)网络结构
encoder是,decoder是
3)优化目标
极大似然法,使得网络参数下收集的数据集的概率最大,即最大化
而该式可以被写为
由于KL散度>=0,因此有
则就是变分下限
则我们需要做的就是对这个变分下限进行优化,从而需要求解相对于变分参数和生成参数的微分
4)算法流程
5)重参化技巧
但这样的话,先验z缺少可优化参数。因此改写为下面的形式:
其中和可以用MLP预测
4、公式推导
可以参考:
快速推导 VAE 变分自编码器,多种写法,和重要细节 Variational Autoencoder - 知乎