VAE学习总结
VAE是变分推断(variational inference )以及自编码器(Auto-encoder)的组合,是一种非监督的生成模型。
图1 自编码器(Auto-encoder)
其中,自编码器(Auto-encoder)的结构如图1所示。由Encoder和Decoder组成,其中Encoder和Decoder通常使用神经网络来实现。
Encoder将输入$x$映射到一个隐状态$z$,Decoder将$z$再映射回$tilde{x}$。
AE的训练目标就是使得输入$x$和输出tilde{x}尽可能相似, 同时AE是完全确定的,AE的输入直接决定了生成结果。自编码器是通过无监督的方式来训练来获取输入数据在较低维度的表达。
自编码器的主要应用场景有:
1. 降维
2. 图像压缩
3. 图像降噪
4. 图像生成
5. 特征提取
从变分推断理解VAE
设:
$x$:为观测数据,可以看作是样本
$y$:为隐变量,包含但不限于模型的参数
首先变分推断的核心思想是:因为一般情况下后验概率$p(z|x)$是不可求解的,所以变分推断采用了一种迂回的策略,即使用$q(z)$去近似$p(z|x)$。
其实,可以把$p(z|x)$看作是AE中的编码器,$p(x|z)$看作是AE中的解码器。
VAE是典型的生成模型,$q(z)$导如下:
\[logp(x)=log\frac{p(x,z)}{p(z|x)}=log\frac{p(x,z)}{q(z|x)}-log\frac{p(z|x)}{q(z|x)} \]
两边对$q(z|x)$求期望得到:
\[logp(x)=\int q(z|x)log\frac{p(x,z)}{q(z|x)}dz-\int q(z|x)log\frac{p(z|x)}{q(z|x)}dz=ELBO+KL(q(z|x)||p(z|x)) \]
使用不同 $q(z|x)$时,ELBO和KL的和是一定的,那我调整 $q(z|x)$ 使ELBO最大时,KL也必然最小了。KL最小意味着 $q(z|x)$和 $q(z|x)$很接近。其中,最大化ELBO就是最小化 -ELBO。
\[ELBO=\int q(z|x)log\frac{p(x|z)p(z)}{q(z|x)}dz=\int q(z|x)logp(x|z)dz+\int q(z|x)log\frac{p(z)}{q(z|x)}dz\]
\[-ELBO=-\int q(z|x)logp(x|z)dz+\int q(z|x)log\frac{q(z|x)}{p(z)}dz\]
其中,第一项为重构误差$-\int q(z|x)logp(x|z)dz$,需要最小化,即:
\[Maximum\int q(z|x)logp(x|z)dz=MaximumE_{q(z|x)}[logp(x|z)]\]
上述的这个期望,也就是表明在给定$q(x|z)$(编码器输出)的情况下p(x|z)(解码器输出)的值尽可能高,这其实就是一个类似于Auto-Encoder的损失函数(方差忽略不计的话):
图2 VAE
第二项为KL散度误差($KL(q(z|x)||p(z))$)。
其实$-KL(q(z|x)||p(z))$的展开式如下所示(具体的展开计算过程可以参阅《Auto-Encoding Variational Bayes》的Appendix B):
\[\sum_{i=1}^{J}(exp(\sigma _{i})-(1+\sigma _{i})+{m_{i}}^{2})\]
因此任务变成了最小化重构误差和KL散度误差之和。
图3 VAE网络结构
我们分别构造两个子网络,左侧为推断网络,又叫Encoder,他是为了拟合$q(z|x)$的;右侧为生成网络,又叫Decoder,他是为了拟合$p(x|z)$的。
整个过程大致为:我们从${x_{1},x_{2},...,x_{n}}$通过推断网络计算,得到每个样本对应隐变量的后验概率$q(z_{n}|x_{n})$,
再从这个后验概率分布中随机抽取一个$z$交给生成网络,计算得出的重构后的${\hat{x}_{1},\hat{x}_{2},...,\hat{x}_{n}}$。
我们的目标是使$q(z_{n}|x_{n})$更接近于$p(z)$的分布,同时${x_{1},x_{2},...,x_{n}}$和原数据集的${\hat{x}_{1},\hat{x}_{2},...,\hat{x}_{n}}$更加接近。
图4 VAE训练过程
如图4所示,我们要最小化的-ELBO分成的两项:重构损失和$KL(q(z|x)||p(z))$分别就是生成网络和推断网络的损失函数,我们要求这两项损失之和的最小值。
可以使用梯度下降方法进行优化,网络优化的过程就是我们估计参数的过程,网络收敛后,我们就得到了一个良好的生成模型。
参考:
https://zhuanlan.zhihu.com/p/365447917
https://blog.csdn.net/weixin_42217488/article/details/108954885
https://zhuanlan.zhihu.com/p/434394556
https://zhuanlan.zhihu.com/p/39063974
https://zhuanlan.zhihu.com/p/368959795
http://www.gwylab.com/note-vae.html