生成模型角度看VAE
引入
大部分讲VAE的博客一般会从AE开始讲起。 但是在我推了很多遍公式并且自己从头训练一个VAE然后遇到很多问题之后,我意识到VAE的公式是优雅的,但是实践上还需要从生成模型的角度来理解VAE,告诉我们什么样的情况会训练出问题。 因为现实并不是美好的,不是我们随便弄一个VAE+一个数据集他就能work。
生成模型
个人浅见,所有的生成模型VAE,GAN, Diffusion, Flow-based models都在追求一个事情: 用高斯分布(足够简单的分布)建模复杂的潜在分布。
从代码的角度来说,随机采样一个服从高斯分布的随机向量,输入一个生成模型,得到一个符合用户期望的东西。(图片,视频等等)
我们之所以不从AE谈起,因为AE不是生成模型。
将一个512维度服从高斯分布向量输入styleganv2,可以得到一张人脸图片。
VAE
定义数据集
这个隐向量Z是不可观测的,所以叫做隐。 Z在这里的作用是作为建模X的一个工具。 而
VAE退化成AE
- 这一点非常重要,因为我们在训练的时候真的遇到这个问题了。