论文解析:变分自编码器

VAE(变分自编码器)

 变分自编码器来自于论文《Auto-Encoding Variational Bayes》,是一种生成式模型,生成式模型的概念在CS229中已经有过介绍了,简单来说,对于一个判别式模型来说,我们希望得到的是 P ( y ∣ x ) P(y|x) P(yx),即在给定了样本x的情况下希望得到其输出y的分布(在回归模型里这通常表现为ML求期望如Linear family,在分类模型里这就简单的表示为softamx的输出);而生成式模型的目的则是希望求取 P ( x ∣ y ) P(x|y) P(xy),即想要知道输出y是如何产生输入的,常见的生产式模型就比如GDA。VAE作为一个生成式模型,其目的也就是想要得到输出如何得到输入。

  在VAE中,我们给定了一个基本的假设,我们的样本x是某些隐变量z(lantent variable)通过某种映射产生的,而z也不是一个固定值,而是服从一个分布的: z ∼ P θ ∗ ( z ) z\sim P_{\theta^*}(z) zPθ(z),则 x ∼ P θ ∗ ( x ∣ z ) x \sim P_{\theta^*}(x|z) xPθ(xz),这里的 P P P是一由参数 θ \theta θ决定的分布族,而 θ ∗ \theta^* θ就是我们需要找到的真实分布。所以我们最根本的目标就是确定z和 θ \theta θ的值,这样就能够得到样本x了。

VAE解决的问题

“V”–>varitional bound

既然我们最想得到的是x的分布,这样通过采样就能直接得到新的X,但得不到这样一个分布,只好退而求其次想要求z和 θ \theta θ的值,这样通过z到x的映射我们同样可以到与x有关的分布:

P θ ( x ) = ∫ P θ ( x ∣ z ) P θ ( z ) P_{\theta}(x)=\int P_{\theta}(x|z)P_{\theta}(z) Pθ(x)=Pθ(xz)Pθ(z)

但很不凑巧,这个式子是无法求得的,虽然我们可以实施 P θ ( x ∣ z ) P_{\theta}(x|z) Pθ(xz)这一过程(通过神经网络),并且对 P ( z ) P(z) P(z)做出假设(如符合高斯分布),但我们无法实现这一积分的过程,无法对每个z的取值都计算其输出后给出可能的x。

而想通过最大后验概率来求解同样是不行的, P θ ( z ∣ x ) = P θ ( x ∣ z ) P θ ( z ) P θ ( x ) P_{\theta}(z|x)=\frac{P_{\theta}(x|z)P_{\theta}(z)}{P_{\theta}(x)} Pθ(zx)=Pθ(x)Pθ(xz)Pθ(z),因为我们并不知道x的分布。这样我们就引入了一种迂回的方法来求解这个问题,我们引入了encoder-> q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(zx)来对真实的后验概率进行拟合。给出以下推导过程
论文解析:变分自编码器_第1张图片

这里给出是已观测到样本的概率为一个定值,将其拆解开后里面包含了我们所想要去最小化的 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(zx) p θ ( z ∣ x ) p_\theta(z|x) pθ(zx)间的距离,又由于这一项为KL散度的形式,大于等于0恒成立,所以我们只需要最大化前两项就可以实现最小化预测分布和实际分布间距离的目的。那么前两项给出了我们想要最大化的概率的下限,叫做(variational) lower bound。
我们的目标就变成了最小化这个变微分下界,很好的点在于这个变微分下界是可以求取的,可以通过对样本采样(蒙特卡洛法)求微分得到,即最终我们得到的目标函数是:

在这里插入图片描述

那么接下来只需要对这个函数求导即可以达成我们最大化边缘概率密度的目的了。
附录:蒙特卡洛法求取分布期望的梯度:
在这里插入图片描述

重参数技巧

前部分提到我们只需要最小化可变微分下界即可以求得理想的参数 ϕ , θ \phi,\theta ϕ,θ,而其中微分的部分可以通过蒙特卡洛法得到:
第一种情况:如果目标函数中KL散度的部分不可积,需要一起用蒙特卡罗法求取数值解:
在这里插入图片描述

第二种情况:如果目标函数中的KL散度部分可积,直接求取分析解:
在这里插入图片描述

但是有一点需要注意,我们的确可以通过encoder近似z的后验分布 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(zx),比如假定它符合正态分布,用神经网络输出分布的均值和方差。但是在decoder部分我们要输入的是确切的z,需要从这个分布中采样,而采样这个过程是不可导的,我们没有办法对采样这个过程进行后向传播,于是这里引入里一个重参数的技巧,即在假定z为正态分布的情况下,我们可以认为z是一个固定的可微函数,只不过其中的参量是来自某种分布,这样的化采样这一过程只是对这个参量而言的,而我们需要优化的参数则是和这个可微函数的形式有关。具体形式转换为:

z ∼ q ϕ ( z ∣ x ) → z = g ϕ ( ϵ , x ) , ϵ ∼ p ( ϵ ) z\sim q_{\phi}(z|x)\rightarrow z=g_{\phi}(\epsilon,x),\epsilon\sim p(\epsilon) zqϕ(zx)z=gϕ(ϵ,x),ϵp(ϵ)

论文解析:变分自编码器_第2张图片

实例

在常用的实验中,我们假定 q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(zx)是一个对称的正态分布,由此可求得与其相关的损失项的解析解。给出最终目标函数如下:
在这里插入图片描述

待思考

  1. 损失函数中的第一项是用来衡量我们给出的Z的后验猜测与Z的先验概率的相似程度,也当我们的Z设定为标准正态分布的时候,这就要求了每个x对应的后验分布 q ϕ ( z ∣ x ( i ) ) q_\phi(z|x^{(i)}) qϕ(zx(i))都应该是倾向于满足零均值,方差为1的性质,前者要求所有x求得的后验分布都应该围绕在0周围,使得生成图片之间更加的连续,可以看到1逐渐转变到7;后者要求生成的图片存在着波动性,不能完美无缺的重构原始样本,那就成了普通的编解码;第二项有着重构误差的含义,即给定了多组z,我们从这多组Z中恢复出x的概率有多大,最好情况我们根据一个完美的encoder得到了在输入x背后的隐变量z的分布,那么若decoder也是完美的,我们一定能通过这样一个映射得到x,也就是这一项是为1的。抽象来看的化,前者衡量了encoder输出分布和真实分布的相近程度,后者衡量了decoder输出图片与输入图片的相似程度。但有个问题是这里是假定Z符合正态分布,如果不采用这个假设,那么第一项约束还有意义嘛?还是说默认都为标准正态分布。
  2. 这里是假定说所有的图片是来自于同一个隐变量的分布的,那对于含有多标签的数据集,如果考虑不同的 ϵ \epsilon ϵ会不会有着更好的结果呢,以MINIST数据集为例,其包含数据类别0~9,可否假定来自10个不同的正态分布呢?

Reference:

https://www.sohu.com/a/226209674_500659
https://blog.csdn.net/forlogen/article/details/100554185
https://www.jianshu.com/p/92e77578719b
https://zhuanlan.zhihu.com/p/364917826
https://zhuanlan.zhihu.com/p/64485020
https://zhuanlan.zhihu.com/p/144649293
decoder拟合高斯分布损失函数的分析
Auto-Encoding Variational Bayes

你可能感兴趣的:(DL,深度学习论文,python,深度学习,生成模型)