当前位置: 编码机 >> 编码机优势 >> DMIR原创变分自编码机VAE
我们假设有一个隐变量z,我们的样本是从中产生,因为有隐变量的存在,通常的边缘分布是没法算的。
所以传统来说,我们会构造出一个下界:
而EM算法,就是通过精心选择这个下界中的q,从而使得下界最大化,也就是计算来近似该模型的似然度。进一步可以参考我之前写的文章《带你理解EM算法》
然而如果我们令也是不可计算的呢,比如你的z有很多很多维,那么你在算那个期望的时候就会出现一堆积分,这是非常难算的。
此时我们可以使用变分推断的方法,那就是,我们不直接令了,而是选一个相对简单的分布q去近似。简单的q怎么来?最常用的就是对q作平均场(mean-field)假设,即,我们可以认为:
这个假设的意思是,虽然你的z有很多维,但是他们都是相互独立的,也就是说,你算很多很多积分的时候,每个可以分别积分,所以一个联合积分的问题就简化成了仅需一个积分的问题,于是我们在优化ELOB的时候,只需分别优化就可以了。将平均场假设代进ELOB中,化简可以得到
因为每个都是相互独立,于是,只需分别最大化每个的ELOB就可以实现ELOB最大化,而其他的项都视作了常数,此时,ELOB就简单地变成了一个负的KL距离,所以,想要最大化这个ELOB,我们只需要令
就可以了。这实际上是一个迭代的问题,因为在constant中,包含了其他的项的q,所以,我们只需不断地更新各个元素q的分布直到收敛就可以了。
从变分推断到VAE但是,如果即使用了平均场假设也没法算,而使用MCMC又太慢怎么办?为了解决这个问题,我们回到最初的那个下界的表达式中
实际上ELOB有几种不同的,但是等价的表达方式:
KLform:
Entropyform:
FullyMonteCarlo(FMC)form:
其中q是一个任意的分布,那么现在,我们令,用KL形式的下界可以得到:
现在引入了一个带参数的来表示这个上界,如果要最大化这个上界,我们只要用梯度上升不断更新参数就可以了。一般情况下,KL距离的那一项是有解析解的,所以梯度很好求。然而对第一项求梯度则没那么简单,一个常用的方法是
如上图,我们可以用reparameterizetrick来解决这个问题,这时z对于x来说就是一个固定的值,只要我们从中抽样后,固定住就可以了,设
其中是一个已知的简单分布,比如说标准正态分布,次数z的产生就变成了从某个固定的标准分布中采样,于是下界中的期望那一项可以改写成:于是对于一个样本的下界可以写作:
其中在这里,如果我们用一个MLP来表示和和就可以对用这个目标函数求梯度来最大化了,注意产生z的分布其实是由一个标准正态分布的和一个用MLP表示的映射函数构成的,所以训练过程实际上是更新和这两个MLP的参数,我们称为encodernetwork,为decodernetwork。而z的产生则是从抽一个样本,然后经过一个确定性来产生。
更直观一点,如果我们假设先验分布,服从标准正态分布,
也就是说,也是正态分布,不过其参数由x决定。于是对于两个正态分布的KL距离,对于有J个维度的z,我们完全可以算出其解析解:
接下来我们看看这个网络的架构
encodernetwork将一只喵星人映射成一个均值和一个方差,然后产生一个z样本,通过decodernetwork再变成一只喵~
然而VAE对比GAN确实存在一些问题。
可以看到VAE的“拟合”能力没有GAN的强,VAE会趋于平滑而GAN则不会。而且VAE产生的图像会比较模糊,这似乎所有优化对数似然的目标函数都有这问题(《Deeplearning》)
参考资料Auto-encodingvariationalbayes
Tutorialonvariationalautoencoders
HowdoesthereparameterizationtrickforVAEsworkandwhyisitimportant?
VariationalAutoencodersExplainedDeeplearning
徐亦达机器学习课程
带你理解EM算法
预览时标签不可点收录于合集#个上一篇下一篇