变分自编码器 = 最小化先验分布 + 最大化互信息
By 苏剑林 | 2018-10-10 | 124167位读者 |这篇文章很简短,主要描述的是一个很有用、也不复杂、但是我居然这么久才发现的事实~
在《深度学习的互信息:无监督提取特征》一文中,我们通过先验分布和最大化互信息两个loss的加权组合来得到Deep INFOMAX模型最后的loss。在那篇文章中,虽然把故事讲完了,但是某种意义上来说,那只是个拼凑的loss。而本文则要证明那个loss可以由变分自编码器自然地导出来。
过程 #
不厌其烦地重复一下,变分自编码器(VAE)需要优化的loss是
\begin{equation}\begin{aligned}&KL(\tilde{p}(x)p(z|x)\Vert q(z)q(x|z))\\
=&\iint \tilde{p}(x)p(z|x)\log \frac{\tilde{p}(x)p(z|x)}{q(x|z)q(z)} dzdx\end{aligned}\end{equation}
相关的论述在本博客已经出现多次了。VAE中既包含编码器,又包含解码器,如果我们只需要编码特征,那么再训练一个解码器就显得很累赘了。所以重点是怎么将解码器去掉。
其实再简单不过了,把VAE的loss分开两部分
\begin{equation}\begin{aligned}&KL(\tilde{p}(x)p(z|x)\Vert q(z)q(x|z))\\
=&\iint \tilde{p}(x)p(z|x)\log \frac{p(z|x)}{q(z)} dzdx-\iint \tilde{p}(x)p(z|x)\log \frac{q(x|z)}{\tilde{p}(x)} dzdx\end{aligned}\end{equation}
第一项是先验分布的KL散度,第二项的$\log \frac{q(x|z)}{\tilde{p}(x)}$其实不也就是$x,z$的点互信息吗?假如$q(x|z)$具有无限的拟合能力,最终必然也会有$\tilde{p}(x)p(z|x) = q(x|z)p(z)$(贝叶斯公式),所以第二项也就是
\begin{equation}KL(q(x|z)p(z)\Vert \tilde{p}(x)p(z))=KL(\tilde{p}(x)p(z|x)\Vert \tilde{p}(x)p(z))\end{equation}
就是$x,z$两个随机变量的互信息了,前面的负号意味着我们要最大化互信息。
剩下的处理过程就跟《深度学习的互信息:无监督提取特征》一样了,略。
结语 #
开头已经说了,这篇文章会很简短,没有什么内容。主要目的就是给出变分自编码器的loss的新理解(最小化先验分布 + 最大化互信息),然后就可以自然而言地导出Deep INFOMAX的loss。
如果我还没有写《深度学习的互信息:无监督提取特征》,那么我肯定会用这个出发点来讲解Deep INFOMAX,不过既然那篇文章都写了好几天了,所以只好另开这个简短的小文,来补充说明一下~
转载到请包括本文地址:https://kexue.fm/archives/6088
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Oct. 10, 2018). 《变分自编码器 = 最小化先验分布 + 最大化互信息 》[Blog post]. Retrieved from https://kexue.fm/archives/6088
@online{kexuefm-6088,
title={变分自编码器 = 最小化先验分布 + 最大化互信息},
author={苏剑林},
year={2018},
month={Oct},
url={\url{https://kexue.fm/archives/6088}},
}
October 17th, 2018
[...]变分自编码器 = 最小化先验分布 + 最大化互信息[...]
October 22nd, 2018
苏神你好,我有个问题,既然VAE和之前那篇DEEP INFOMAX的优化目标都是最小化先验分布 + 最大化互信息,那么之前那篇DEEP INFOMAX不就没意义了吗?相当于DEEP INFOMAX重新推导了VAE?
如果从VAE角度看,DEEP INFOMAX有两点贡献:
1、引入了局部互信息,这个大大提升了特征提取效果;
2、使用f散度的估计方法取代了$q(x|z)$的直接计算(也就是说不用重构原图)。
请问苏神,公式(2)的第一项,先验分布的KL散度具体是什么形式啊?为什么我推不出这个KL散度呢?是用了什么技巧吗
先验分布的KL散度就是$(2)$的第一项的形式啊,它已经是结果了,而不是过程。
具体写成KL散度的形式是什么呢?请问是KL(p(z|x)∥q(z))吗?
先算KL(p(z|x)∥q(z)),结果是$x$的函数($z$已经被积分掉了),然后再对所有的$x$求平均。
您好,公式(2)中的第一项:Ex~p(x)[KL(p(z|x)||p(z))]=I(X;Z)吧?
@jiean|comment-14697
公式$(2)$的第一项?
还有,如果按照你的解释,最优解的情况下就有p(z)=q(z),那么把公式2的第一项中的q(z)直接换成p(z),那不是就直接等于X和Z的互信息了吗?这个loss就变成了互信息-互信息?期待苏神针对这个想法做进一步的推导哈哈~
我修改了一下,应该是目前这样描述才对。
根据贝叶斯公式$q(x|z)$满足$q(x|z)p(z)=p(z|x)\tilde{p}(x)$,这里$p(z)$是真实的隐变量分布,这个结果不依赖于对$p(z)$的先验分布假设,所以还不能直接替换为$q(z)$,应该用回原始的$p(z)$。
我的理解是第二项有两层含义吧,$\frac{q(x|z)}{\bar{p}(x)}=\frac{q(x|z)}{p(x|z)}\frac{p(x|z)}{\bar{p}(x)}$,前一个代表了$q(x|z)$的强拟合能力,后一项代表了互信息吧
不是,就是直接拿
$$p(z|x)\tilde{p}(x)/p(z)=\frac{p(z|x)\tilde{p}(x)}{\int p(z|x)\tilde{p}(x) dx}$$
去替换$q(x|z)$的意思。因为我们已经知道了$q(x|z)$的最优解是它,而且这里我们又不需要$q(x|z)$做生成模型。所以从理论角度,这个替换没有问题。后面就是用f-gan的结果进行近似了。
嗷嗷,我看错了,你这里是求最优编码器,不需要解码器,所以默认了解码器最优就是那个替换,明白了,多谢苏神
$p~(x)p(z|x)=p(x,z)=p(x|z)p(z)$,然后由q(x|z)拟合(替换)p(x|z),即可得到$p~(x)p(z|x)=q(x|z)p(z)$
October 25th, 2018
苏神,还是有些不明白,为啥最后q(z)变成了p(z)?
最优解的情况下就有$p(z)=q(z)$。
这其实不是一个严格的证明,这是一个直观的理解。
不知道可不可以这样简单的证明,$p(x,z)$是真实联合分布,在最优解的情况下,$KL(p(x,z)||q(x,z))=0$, $p(x,z)=q(x,z)$, $p(z)p(x|z)=q(z)q(x|z)$, 因为$q(x|z)$具有无限拟合的能力,所以$q(x|z)=p(x|z)$, 得出$p(z)=q(z)$. 请指教。
October 30th, 2018
@hetor|comment-10048
也感谢你让整个过程更为清晰。
November 29th, 2018
看完这个推导很好奇,能不能从这里出发做一些关于在VAE上disentangle变量的工作呢?近期的一系列paper,比如beta-VAE,FactorVAE和今年NIPS的isolating sources of disentanglement in variational autoencoders都是在VAE的loss的KL项上面做拆解和reweight,那可不可以从这里得到一些新的思路呢?
我已经做了一些探究了,但是普适性不强,在图像上有类似infomax(https://kexue.fm/archives/6024)的表现,在nlp中却不够好。而且我发现,原来的infomax在nlp上的表现也不好。
感觉你经常能从别人提出的模型或者loss function里面找到一些新的insight,佩服佩服。因为我最近对VAE的disentangle非常感兴趣,不知道你是否对上述提到的那一系列文章的loss有新的见解呢?
你说的几篇我都没有留意到(捂脸),我需要看看才能回答你。
哈哈哈好的。我打赏啦,看了一晚上你的博客,真的受益匪浅
谢谢~
December 2nd, 2018
博主这一篇文章与上一篇似乎有点概念的矛盾:
本篇的出发点:q(x|z)具有无限的拟合能力,也就是说能完全重构;
而上一篇认为:重构不是好特征的必要条件。
是否可以认为 重构依然是VAE的基本要求?
望指教谢谢
$q(x|z)$理论上可以具有无限的拟合能力,而且如果$q(x|z)$真的具有无限的拟合能力,能够完成重构出$x$出来,这是好事。
但是实际上我们做不到这一点,VAE中,真正实验的时候,我们通常只是让$q(x|z)$是高斯分布,这就没有无限的拟合能力。如果做不到这一点,强迫重建,可能会让模型在特征提取的时候抓不到重点,所以干脆还不如不重构。
至于本文,是希望给出一个VAE的分解理解的理论视角,在这种纯分析的情况下,我们可以假设$q(x|z)$具有无限的拟合能力。正如VAE本身并没有假设$q(x|z)$是高斯分布,理论上它可以是任意复杂的分布,只是落实到实验中我们迫不得已而已。
May 7th, 2019
博主你好,由信息瓶颈理论,这里的第一项,即最小化先验分布的KL散度,实际上是在最小化x和z的互信息的上界,这与第二项最大化x和z的互信息相矛盾吗?
信息瓶颈告诉我们尽量用最少的信息来完成任务。
注意要先有任务,然后完成任务,然后才减少互信息。而VAE中的任务其实就是最大化$x,z$的互信息,而最小化先验分布的KL散度会产生两个效应:1、确实也在降低互信息;2、使得$z$的分布更符合正态分布。
虽然第一个效应与任务本身矛盾,但事实上第二个loss的增大效应会比KL散度的降低效应会强很多,因此第一个效应虽然矛盾,但无伤大雅;所以最小化KL散度主要是“使得$z$的分布更符合正态分布”。
谢谢你的回答。
请问这里可以这样来理解吗,第一项最小化的是编码器的输入与输出间的互信息,从而可以促使编码器学习到更有效、更泛化的特征;第二项最大化的是解码器的输入与输出间的互信息,促使解码器在解码时能够充分利用到z的信息。
这两项虽然都是关于x与z的互信息,但一个是对于编码器的,另一个是对于解码器的。
可以是可以,但是不完全合理。主要是从“任务”角度来看,最大化解码器的输入与输出间的互信息的含义不够清晰。
为何"最小化先验分布的KL散度,实际上是在最小化x和z的互信息的上界"?
August 20th, 2020
博主你好,我不明白这个VAE的objective怎么从最大化p(x)变成KL散度了。
结论也与我现在的观察冲突。在beta-vae中,beta=0近似于AE,beta=1为VAE。我目前观察到的现象是beta越大I(x,z)越小。
哪里冲突了?beta越大I(x,z)越小没毛病呀。
November 6th, 2020
看了您和下面人的讨论,我明白了,谢谢您的回复。
March 2nd, 2024
再次推荐这篇基于互信息推导 $\beta-VAE$ 的博文:
https://www.inference.vc/beta-vae/
有ab initio的味道
另外就是 $\beta-VAE$ 是更一般的模型,$\beta = 1$ 就是普通的 VAE
该分析发现一个事实:
latent factors $Z$ cannot be both marginally and conditionally independent at the same time
并给出了 $\beta$ 的合理取值范围
两边对比看,非常有启发