VAE(Variational Autoencoders)变分自编码器
参考文章
CSDN博客:VAE的理解
2025-01-07
为什么学习
整理工作的时候发现对扩散模型的数学公式不清晰,扩散模型是在VAE的基础上发展的。
VAE是什么
VAE以前的自编码器,编码器输出的只是一个编码后的数值张量。
VAE,编码器输出的是编码后的分布,故而它是一种生成式模型。
生成式网络是指根据模型学到的模式创建新的数据或内容。
简而言之,VAE的想法是训练具有正则化潜在空间的自动编码器。然后,正则化编码器被迫将数据编码为接近高斯的分布,而解码器则从潜在空间重建数据。
我们权且都把编码器,解码器当作是用万能黑盒-深度学习实现,那么是如何设置目标损失函数,使得这个思想可行的呢?
首先,我们先看一些概念定义,了解贝叶斯。
一些概念定义
在一些情况,希望根据可观测变量(已知)的数据来推断不可观测变量的分布(未知),可以使用贝叶斯定理:
- 可观测变量 (Observed Variable):通常记为 $X$,是我们能够直接获取数据的变量。
- 不可观测变量 (Unobserved Variable or Latent Variable):通常记为 $Z$,是我们无法直接测量的数据。
而在VAE里,input和output可以看做都是$X$,因为input来自于已知的数据集,而假定output会和input同分布,相比之下编码后的结果可以看做是$Z$,不可以直接观测到。
贝叶斯定理在这种情况下用于根据可观测变量的数据来推断不可观测变量的分布:
这时,经常听的概念是这些意思:
- 后验概率 : $P(Z|X)$,表示在已知观测变量 $X$ 的情况下,隐变量 $Z$ 的概率分布。
- 先验概率 : $P(Z)$,表示隐变量 $Z$ 的初始概率分布,不考虑观测变量 $X$。
- 似然 : $P(X|Z)$,表示在给定隐变量 $Z$ 的情况下,观测变量 $X$ 的概率分布。
- 证据 : $P(X)$,表示观测变量 $X$ 的概率分布,通常作为归一化常数。
loss推导
- 根据生成器的目的设损失函数
VAE的目标就是当生成器用,训练的时候是可以从数据集得到分布的,那么转化为数学问题就是“假定我们知道这个分布的真实参数为$\theta^*$,希望生成一个类似真实数据的点$x^{(i)}$“,可以使用最大似然估计的方法得到:
- 证据下界函数替换
但是直接最大化 公式1 不好求,于是使用Jensen不等式找到了一个下界函数作为替代品,同时由于是基于$x$的,故而叫证据下界函数。
此外,我们把编码器网络记做$\phi$,可以得到 ,来近似(approximate)生成模型的真实但难以计算的后验分布 ,方便用到。
Jensen不等式,就是当$f(x)$是凸函数时,后求均值要小于先求均值
此时,只要最大化损失函数转别为
那么只要第1项最大,第2项最小就可以得到最大loss值。
而第1项表示$z$到$x$的重组,也就是decoder,那么越大即编码器结果尽可能准确。
而第2项,是 $z$ 的验 $q_\phi(z|x)$ 和先验 $p(z)$ 的KL散度,越小则表示两个越接近,但VAE假设$z$的分布是标准正态分布,故而这一项可以理解为让$z$尽可能避免过拟合。
VAE的代码实现
其实就是输出
参考文献
Chen, Y., Liu, J., Peng, L., Wu, Y., Xu, Y., & Zhang, Z. (2024). Auto-Encoding Variational Bayes. Cambridge Explorations in Arts and Sciences.