从最大似然到EM算法:一致的理解方式
By 苏剑林 | 2018-03-15 | 172584位读者 |最近在思考NLP的无监督学习和概率图相关的一些内容,于是重新把一些参数估计方法理了一遍。在深度学习中,参数估计是最基本的步骤之一了,也就是我们所说的模型训练过程。为了训练模型就得有个损失函数,而如果没有系统学习过概率论的读者,能想到的最自然的损失函数估计是平均平方误差,它也就是对应于我们所说的欧式距离。而理论上来讲,概率模型的最佳搭配应该是“交叉熵”函数,它来源于概率论中的最大似然函数。
最大似然 #
合理的存在 #
何为最大似然?哲学上有句话叫做“存在就是合理的”,最大似然的意思是“存在就是最合理的”。具体来说,如果事件$X$的概率分布为$p(X)$,如果一次观测中具体观测到的值分别为$X_1,X_2,\dots,X_n$,并假设它们是相互独立,那么
$$\mathcal{P} = \prod_{i=1}^n p(X_i)\tag{1}$$
是最大的。如果$p(X)$是一个带有参数$\theta$的概率分布式$p_{\theta}(X)$,那么我们应当想办法选择$\theta$,使得$\mathcal{L}$最大化,即
$$\theta = \mathop{\text{argmax}}_{\theta} \mathcal{P}(\theta) = \mathop{\text{argmax}}_{\theta}\prod_{i=1}^n p_{\theta}(X_i)\tag{2}$$
对概率取对数,就得到等价形式
$$\theta = \mathop{\text{argmax}}_{\theta}\sum_{i=1}^n \log p_{\theta}(X_i)\tag{3}$$
如果右端再除以$n$,我们就得到更精炼的表达形式
$$\theta = \mathop{\text{argmax}}_{\theta} \mathcal{L}(\theta) = \mathop{\text{argmax}}_{\theta} \mathbb{E}\big[\log p_{\theta}(X_i)\big]\tag{4}$$
其中我们将$-\mathcal{L}(\theta)$就称为交叉熵。
理论形式 #
理论上,根据已有的数据,我们可以得到每个$X$的统计频率$\tilde{p}(X)$,那么可以得到上式的等价形式
$$\theta = \mathop{\text{argmax}}_{\theta} \mathcal{L}(\theta) = \mathop{\text{argmax}}_{\theta}\sum_X \tilde{p}(X)\log p_{\theta}(X)\tag{5}$$
但实际上我们几乎都不可能得到$\tilde{p}(X)$(尤其是对于连续分布),我们能直接算的是关于它的数学期望,也就是$(4)$式,因为求期望只需要把每个样本的值算出来,然后求和并除以$n$就行了。所以$(5)$式只有理论价值,它能方便后面的推导。
要注意的是,上面的描述是非常一般的,其中$X$可以是任意对象,它也有可能是连续的实数,这时候就要把求和换成积分,把$p(X)$变成概率密度函数。当然,这并没有什么本质困难。
更广泛的KL散度 #
从KL散度出发也可以导出最大似然的形式来。假如两个分布$\tilde{p}(X)$和$p(X)$,我们用KL散度来衡量它们的距离:
$$\begin{aligned}KL\Big(\tilde{p}(X)\Big\Vert p(X)\Big) =& \sum_X \tilde{p}(X) \ln \frac{\tilde{p}(X)}{p(X)}\\
=&\mathbb{E}\left[\ln \frac{\tilde{p}(X)}{p(X)}\right]\end{aligned}\tag{6}$$
当两个分布相同时,KL散度为0,当两个分布不同时,KL散度大于0,假设读者已经知道这些性质。
接着假设$X$的样本已经给出来了,这就意味着$\tilde{p}(X)$可以视为已知了,这时候:
$$\begin{aligned}\theta =& \mathop{\text{argmin}}_{\theta} KL\Big(\tilde{p}(X)\Big\Vert p_{\theta}(X)\Big)\\
=& \mathop{\text{argmax}}_{\theta}\sum_X \tilde{p}(X)\log p_{\theta}(X)\\
=& \mathop{\text{argmax}}_{\theta}\mathbb{E}\big[\log p_{\theta}(X_i)\big]\end{aligned}\tag{7}$$
这就重新导出了$(4)$和$(5)$。事实上KL散度要比简单的最大似然含义更为丰富,因为最大似然相当于假设了$\tilde{p}(X)$是已知的(已知$X$的样本),这并不总是能实现的(比如EM算法的场景),很多时候我们只知道$X$的部分信息,这时候就要回归到KL散度中来。
注:如果读者不能很好地理解采样计算,请阅读《变分自编码器(二):从贝叶斯观点出发》中的《数值计算vs采样计算》一节。
有监督模型 #
现在我们来观察有监督学习中是如何应用上述内容的。假设输入为$X$,标签为$Y$,那么$(X,Y)$就构成了一个事件,于是我们根据$(4)$就有
$$\theta = \mathop{\text{argmax}}_{\theta} \mathbb{E}_{X,Y}\big[\log p_{\theta}(X,Y)\big]\tag{8}$$
这里已经注明了是对$X,Y$整体求数学期望,然而该式却是不够实用的。
分类问题 #
以分类问题为例,我们通常建模的是$p(Y|X)$而不是$p(X,Y)$,也就是我们要根据输入确定输出的分布,而不是它们的联合分布。所以我们还是要从$(5)$式出发,利用$p(X,Y)=p(X) p(Y|X)$,先得到
$$\theta = \mathop{\text{argmax}}_{\theta} \sum_{X,Y} \tilde{p}(X,Y)\log \big[p_{\theta}(X)p_{\theta}(Y|X)\big]\tag{9}$$
因为我们只对$p(Y|X)$建模,因此$p_{\theta}(X)$我们认为就是$\tilde{p}(X)$,那么这相当于让优化目标多了一个常数项,因此$(9)$等价于
$$\theta = \mathop{\text{argmax}}_{\theta} \sum_{X,Y} \tilde{p}(X, Y)\log p_{\theta}(Y|X)\tag{10}$$
然后,我们还有$\tilde{p}(X,Y)=\tilde{p}(X)\tilde{p}(Y|X)$,于是$(8)$式还可以再变化成
$$\theta = \mathop{\text{argmax}}_{\theta} \sum_X \tilde{p}(X) \sum_Y \tilde{p}(Y|X)\log p_{\theta}(Y|X)\tag{11}$$
最后别忘了,我们是处理有监督学习中的分类问题,一般而言在训练数据中对于确定的输入$X$就只有一个类别,所以$\tilde{p}(Y_t|X)=1$,其余为0,$Y_t$就是$X$的目标标签,所以
$$\theta = \mathop{\text{argmax}}_{\theta} \sum_X \tilde{p}(X) \log p_{\theta}(Y_t|X)\tag{12}$$
这就是最常见的分类问题的最大似然函数了:
$$\theta = \mathop{\text{argmax}}_{\theta} \mathbb{E}_{X}\big[\log p_{\theta}(Y_t|X)\big]\tag{13}$$
变变变 #
事实上,上述的内容只是一些恒等变换,应该说没有特别重要的价值,而它的结果(也就是分类问题的交叉熵损失)也早就被我们用得滚瓜烂熟了。因此,这一节仅仅是展示了如何将最大似然函数从最原始的形式出发,最终落实到一个具体的问题中,让读者熟悉一下这种逐步推进的变换过程。
隐变量 #
现在就是展示它的价值的时候了,我们要将用它来给出一个EM算法的直接推导(本博客还提供了另外一个理解角度,参考《梯度下降和EM算法:系出同源,一脉相承》)。对于EM算法,一般将它分为M步和E步,应当说,M步是比较好理解的,难就难在E步的那个$Q$函数为什么要这样构造。很多教程并没有给出这个$Q$函数的解释,有一些教程给出了基于詹森不等式的理解,但我认为这些做法都没有很好凸显出EM算法的精髓。
一般来说,EM算法用于存在隐变量的概率问题优化。什么是隐变量?很简单,还是以刚才的分类问题为例,分类问题要建模的是$p(Y|X)$,当然也等价于$p(X,Y)$,我们说过要用最大似然函数为目标,得到$(8)$式
$$\theta = \mathop{\text{argmax}}_{\theta} \mathbb{E}_{X,Y}\big[\log p_{\theta}(X,Y)\big]\tag{8}$$
如果给出$(X,Y)$的标签数据对,那就是一个普通的有监督学习问题了,然而如果只给出$X$不给出$Y$呢?这时候$Y$就称为隐变量,它存在,但我们看不见,所以“隐”。
GMM模型 #
等等,没有标签数据你也想做分类问题?当然有可能,GMM模型不就是这样的一个模型了吗?在GMM中假设了
$$p_{\theta}(X,Y) = p_{\theta}(Y) p_{\theta}(X|Y)\tag{14}$$
注意,是$p_{\theta}(Y) p_{\theta}(X|Y)$而不是$p_{\theta}(X) p_{\theta}(Y|X)$,两者区别在于我们难以直接估计$p(X)$,也比较难直接猜测$p(Y|X)$的形式。而$p(Y)$和$p(X|Y)$就相对容易了,因为我们通常假设$Y$的意义是类别,所以$p(Y)$只是一个有限向量,而$p(X|Y)$表示每个类内的对象的分布,既然这些对象都属于同一个类,同一个类应该都长得差不多吧,所以GMM假设它为正态分布,这时候做的假设就有依据了,不然将所有数据混合在一起,谁知道假设什么分布好呢?
这种情况下,我们完整的数据应该是$(X,Y)$,但我们并没有这种成对的样本$(X_1,Y_1),\dots,(X_n,Y_n)$(不然就退化为有监督学习了),我们只知道$X$的样本$X_1,\dots,X_n$,这就对应了我们在KL散度这一节描述的情形了。
pLSA模型 #
当然,并不只有无监督学习才有隐变量,有监督学习也可以有,比如我们可以设
$$p(Y|X)=\sum_{Z}p_{\theta}(Y|Z)p_{\theta}(Z|X)\tag{15}$$
这时候多出了一个变量$Z$,就算给出$(X,Y)$这样的标签数据对,但$Z$仍然是没有数据的,是我们假想的一个变量,它也就是隐变量,pLSA就是这样的一个问题。也就是说,这时候完整的数据对应该是$(X,Y,Z)$的形式,但我们只知道$(X_1,Y_1),\dots,(X_n,Y_n)$这样的部分样本。
贝叶斯学派 #
可能有读者“异想天开”:那么参数$\theta$是不是也可以看作一个隐变量呢?恭喜你,如果你有这层领悟,那你已经进入贝叶斯学派的思维范畴了。贝叶斯学派认为,一切都是随机的,一切都服从某个概率分布,参数$\theta$也不例外。不过很遗憾,贝叶斯学派的概率理论很艰深,我们这里还没法派上用场。(其实更重要的是,笔者也还不懂~~)
EM算法 #
好了,不再废话了,还是正式进入对EM算法的讨论吧。
联合KL散度 #
我们先来看一下,对于含有隐变量的问题求解,一般教程的处理方案是这样的:由于隐变量不可观测,因此一般改用边缘分布(也就是显变量的分布)的最大似然为目标函数,即
$$\theta = \mathop{\text{argmax}}_{\theta}\sum_X \tilde{p}(X)\log\sum_Z p_{\theta}(X|Z)p_{\theta}(Z)\tag{16}$$
为最大化的目标。
这种做法不是不行,而是这样一来为了得到EM算法就需要引入比较多的数学知识,而且严格证明还需要比较冗长的推导。事实上可以从KL散度出发,通过分析联合概率分布的KL散度来极大简化EM算法的推导。而如果采用边缘分布最大似然的做法,我们就无法直观地理解那个$Q$函数的来源了。
以GMM为例,首先我们来算$\tilde{p}(X,Y)$和$p_{\theta}(X,Y)$的KL散度:
$$\begin{aligned} &KL\Big(\tilde{p}(X,Y)\Big\Vert p_{\theta}(X,Y)\Big)\\
=& \sum_{X,Y}\tilde{p}(X,Y)\log \frac{\tilde{p}(X,Y)}{p_{\theta}(X,Y)}\\
=& \sum_{X}\tilde{p}(X)\sum_{Y} \tilde{p}(Y|X)\log \frac{\tilde{p}(Y|X)\tilde{p}(X)}{p_{\theta}(X|Y)p_{\theta}(Y)}\\
=& \mathbb{E}_X\left[\sum_{Y} \tilde{p}(Y|X)\log \frac{\tilde{p}(Y|X)\tilde{p}(X)}{p_{\theta}(X|Y)p_{\theta}(Y)}\right]\\
=& \mathbb{E}_X\left[\sum_{Y} \tilde{p}(Y|X)\log \frac{\tilde{p}(Y|X)}{p_{\theta}(X|Y)p_{\theta}(Y)}+\sum_{Y} \tilde{p}(Y|X)\log \tilde{p}(X)\right]\\
=& \mathbb{E}_X\left[\sum_{Y} \tilde{p}(Y|X)\log \frac{\tilde{p}(Y|X)}{p_{\theta}(X|Y)p_{\theta}(Y)}\right]+\mathbb{E}\left[\log \tilde{p}(X)\right]\\
=& \mathbb{E}_X\left[\sum_{Y} \tilde{p}(Y|X)\log \frac{\tilde{p}(Y|X)}{p_{\theta}(X|Y)p_{\theta}(Y)}\right]+\text{常数}
\end{aligned}\tag{17}$$
这个过程虽然比较长,但并没有什么迂回的变换,是比较容易接受的。
EM大佬来了 #
再次回顾$(17)$式的来源,我们希望找到一组分布的参数$\theta$,使得$KL\Big(\tilde{p}(X,Y)\Big\Vert p_{\theta}(X,Y)\Big)$越小越好,$p_{\theta}(X,Y)$我们已经给出为$p_{\theta}(X|Y)p_{\theta}(Y)$的形式,只有参数$\theta$是未知的。但是在$(17)$式中,$\tilde{p}(Y|X)$也是未知的,包括形式。
这时候,大佬就发话了:先当它已知的吧,这时候$\tilde{p}(Y|X)$可以视为常数,那么我们就可以算参数$\theta$了:
$$\begin{aligned}\theta^{(r)} =& \mathop{\text{argmin}}_{\theta} \mathbb{E}_X\left[\sum_{Y} \tilde{p}^{(r-1)}(Y|X)\log \frac{\tilde{p}^{(r-1)}(Y|X)}{p_{\theta}(X|Y)p_{\theta}(Y)}\right]\\
=& \mathop{\text{argmax}}_{\theta} \mathbb{E}_X\left[\sum_{Y}\tilde{p}^{(r-1)}(Y|X)\log p_{\theta}(Y) p_{\theta}(X|Y)\right]\end{aligned}\tag{18}$$
然后这时候算出了新的$\theta^{(r)}$,我们把$p_{\theta}(X|Y)$当成已知的,来求$\tilde{p}(Y|X)$,
$$\tilde{p}^{(r)}(Y|X) = \mathop{\text{argmin}}_{\tilde{p}(Y|X)} \mathbb{E}_X\left[\sum_{Y} \tilde{p}(Y|X)\log \frac{\tilde{p}(Y|X)}{p_{\theta^{(r)}}(X|Y)p_{\theta^{(r)}}(Y)}\right]\tag{19}$$
事实上$(19)$式是可以直接写出解析解的,答案是:
$$\tilde{p}^{(r)}(Y|X)=\frac{p_{\theta^{(r)}}(Y)p_{\theta^{(r)}}(X|Y)}{\sum\limits_Y p_{\theta^{(r)}}(Y)p_{\theta^{(r)}}(X|Y)}\tag{20}$$
补充推导:$(19)$式方括号内的部分,可以改写为
$$\begin{aligned}&\sum_{Y} \tilde{p}(Y|X)\log \frac{\tilde{p}(Y|X)}{p_{\theta^{(r)}}(X,Y)}\\
=&\sum_{Y} \tilde{p}(Y|X)\log \frac{\tilde{p}(Y|X)}{p_{\theta^{(r)}}(Y|X)} - \sum_{Y} \tilde{p}(Y|X)\log p_{\theta^{(r)}}(X)\\
=& KL\Big(\tilde{p}(Y|X)\Big\Vert p_{\theta^{(r)}}(Y|X)\Big) - \text{常数}
\end{aligned}$$所以最小化$(19)$式也就相当于最小化$KL\Big(\tilde{p}(Y|X)\Big\Vert p_{\theta^{(r)}}(Y|X)\Big)$,根据KL散度的性质,显然最优解就是两个分布完全一致,即
$$\tilde{p}(Y|X) = p_{\theta^{(r)}}(Y|X) = \frac{p_{\theta^{(r)}}(Y)p_{\theta^{(r)}}(X|Y)}{\sum\limits_Y p_{\theta^{(r)}}(Y)p_{\theta^{(r)}}(X|Y)}$$这就得到了$(20)$式。
因为我们没法一步到位求$(17)$的最小值,所以现在就将它交替地训练:先固定一部分,最大化另外一部分,然后交换过来。EM算法就是对复杂目标函数的交替训练方法!
联合$(18)$式和$(20)$式,就构成了整个求解算法。现在来看看$(18)$式,有个E(求期望),又有个M($\mathop{\text{argmax}}$),就叫它EM算法吧,那个被E的式子,我们就叫它$Q$函数好了。于是EM大佬就这样出来了,$Q$函数也出来了,就这么任性...
当然,EM算法中的E的本意是将$\sum\limits_{Y}\tilde{p}^{(r-1)}(Y|X)\log p_{\theta}(Y) p_{\theta}(X|Y)$看成是对隐变量$Y$求期望,这里我们就随意一点的,结论没错就行~
是不是感觉很突然?感觉啥也没做,EM算法就这么两句话说清楚了?还包括了推导?
究竟在做啥 #
对于pLSA或者其他含有隐变量的模型的EM算法,也可以类似地推导。对比目前我能找到的EM算法的推导,我相信上面的过程已经是相当简洁了。尽管前面很多铺垫,但其实都是基础知识而已。
那这是如何实现的呢?回顾整个过程,其实我们也没做什么,只是纯粹地使用KL散度作为联合分布的差异性度量,然后对KL散度交替最小化罢了~这样子得到的推导,比从边缘分布的最大似然出发,居然直接快捷了很多,也是个惊喜。
一致的理解 #
本文是作者对最大似然原理的一翻思考,整体思路是从最大似然的原理和形式出发,来诱导出有监督/无监督学习的一些结果,希望能用一个统一的思想将各种相关内容都串起来。最后发现结果也挺让人满意的,尤其是EM算法部分,以后只需要记住一切的根本都是(联合)分布的最大似然或KL散度,再也不用死记EM算法中的Q函数形式了。
当然,文章有些观点都是“我认为”的,因此可能有不当之处,请读者甄别。不过可以保证的是结果跟现有的都是一样的。欢迎读者继续交流~
转载到请包括本文地址:https://www.kexue.fm/archives/5239
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Mar. 15, 2018). 《从最大似然到EM算法:一致的理解方式 》[Blog post]. Retrieved from https://www.kexue.fm/archives/5239
@online{kexuefm-5239,
title={从最大似然到EM算法:一致的理解方式},
author={苏剑林},
year={2018},
month={Mar},
url={\url{https://www.kexue.fm/archives/5239}},
}
April 21st, 2025
感谢苏老师,最近温习了以下EM算法,自己在看VAE和DM的时候就感觉这些本质上都是一类算法
点赞
April 27th, 2025
苏老师您好,我最近在写一篇基于**最大似然估计**求VAE损失函数的博客,推导背景如下:
现有一个神经网络参数化的$p_{\theta}$,和真实数据分布$p_{data}$,本质目的为了使$p_{\theta} \rightarrow p_{data}$,为此我们计算二者KL散度公式:
$$
\begin{aligned}
D_{KL}(p_{data}||p_{\theta}) &= \int p_{data}(x)log\frac{p_{data}(x)}{p_{\theta}(x)}dx \\
&= \int p_{data}(x)logp_{data}(x)dx - \int p_{data}(x)logp_{\theta}(x)dx \\
&=\mathbb{E}_{x \sim p_{data}(x)}[logp_{data}(x)]-\mathbb{E}_{x \sim p_{data}(x)}[logp_{\theta}(x)]
\end{aligned}
$$
这要求$\mathbb{E}_{x \sim p_{data}(x)}[logp_{\theta}(x)]$尽可能的大,在大数定理前提下,最大似然估计(MLE)的公式是和上述推导具有一致的形式。
$$
\frac{1}{N}\sum_{i=1}^Nlogp_{\theta}(x_i) \rightarrow \mathbb{E}_{x \sim p_{data}(x)}[log(p_{\theta}(x))]
$$
但是我在开头就卡了壳,我的问题随之而来:
$\text{1. 最大似然估计和ELBO的计算具有联系吗?}$
网上部分资料从$logp_{\theta}(x)$开始推导VAE的ELBO公式,我觉得既不满足MLE公式推导中$logp_{\theta}(x_i)$的离散形式,也不满足$\mathbb{E}_{x \sim p_{data}(x)}[log(p_{\theta}(x))]$的连续形式。可能是因为我数学功底太差,没有想清楚二者到底是否有联系,只是形式上的一致吗?如果有联系为什么推导过程可以省去$\mathbb{E}_{x \sim p_{data}(x)}$?
$\text{2. VAE的ELBO计算到底该从$logp_{\theta}(x)$出发还是从$logp(x)$出发?}$
关于这个问题,可能不适合在此专栏下提出,但是我考虑到和MLE可能有一定关联性还是斗胆提问
$$
\begin{aligned}
logp(x)&=logp(x)\int_zq_{\phi}(z|x)dz \\
&=\int_z q_{\phi}(z|x)logp(x)dz \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[logp(x)] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p(x,z)}{p(z|x)}] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p(x,z)}{p(z|x)}\frac{q_{\phi}(z|x)}{q_{\phi}(z|x)}] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p(x,z)}{q_{\phi}(z|x)}]+\mathbb{E}_{z \sim q_{\phi}(z|x)}[\frac{q_{\phi}(z|x)}{p(z|x)}] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p(x,z)}{q_{\phi}(z|x)}]+D_{KL}(q_{\phi}(z|x)||p(z|x))\\
&\geq \mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p(x,z)}{q_{\phi}(z|x)}] = ELBO
\end{aligned}
$$
但也有一部分资料推导显示
$$
\begin{aligned}
logp_{\theta}(x)&=logp_{\theta}(x)\int_zq_{\phi}(z|x)dz \\
&=\int_z q_{\phi}(z|x)logp_{\theta}(x)dz \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[logp_{\theta}(x)] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p_{\theta}(x,z)}{p_{\theta}(z|x)}] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p_{\theta}(x,z)}{p_{\theta}(z|x)}\frac{q_{\phi}(z|x)}{q_{\phi}(z|x)}] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p_{\theta}(x,z)}{q_{\phi}(z|x)}]+\mathbb{E}_{z \sim q_{\phi}(z|x)}[\frac{q_{\phi}(z|x)}{p_{\theta}(z|x)}] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p_{\theta}(x,z)}{q_{\phi}(z|x)}]+D_{KL}(q_{\phi}(z|x)||p_{\theta}(z|x))\\
&\geq \mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p_{\theta}(x,z)}{q_{\phi}(z|x)}] = ELBO
\end{aligned}
$$
对于前者我理解是$logp(x)$是一个定值,所以ELBO设计有天然的意义,最大化ELBO的同时还能最小化$D_{KL}(q_{\phi}(z|x)||p(z|x))$,规避了由于不知道真实分布$p(z|x)$进而导致两个分布之间无法计算距离(无法评价Encoder)的问题;对于后者,$logp_{\theta}(x)$已经是一个参数化的分布,该值并非定值,那么最大化ELBO还有意义吗?$D_{KL}(q_{\phi}(z|x)||p_{\theta}(z|x))$一项是两个参数化分布之间的距离,其中意义在于什么呢?因此特向苏神请教,这两种推导方法之间的联系是什么?后者更像是MLE的形式但是我目前暂时理解不了后者推导的意义。
数学水平不高,希望苏神指教,感谢!!
肯定是$\mathbb{E}_{x \sim p_{data}(x)}[\log(p_{\theta}(x))]$为基础进行推导啊,有些教程省略了$\mathbb{E}_{x \sim p_{data}(x)}$,那是简单起见,推导的是单个样本的损失函数。因为实际训练肯定要多个样本求平均的,这自动包含了$\mathbb{E}_{x \sim p_{data}(x)}$。
至于$\log p(x)$,你最后推导出来的$\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p(x,z)}{q_{\phi}(z|x)}] = ELBO$我没看懂:一来按照你的定义,$p(x,z)$是真实的联合分布,这是不知道解析式的,怎么训练?二来这个目标也不是VAE的训练目标形式啊(KL散度哪里去了?)当然你的$\log p_{\theta}(x)$也有同样问题。
也可能是我不了解ELBO那一套。总之,“反对 + 打倒”一切来自旧式变分推断的乱七八糟的恶心ELBO!
其实我的推导很简单:
$$KL\Big(p_{data}(x) p_{\theta}(z|x)\Big\Vert q_{\phi}(x|z)q(z)\Big)\geq KL\Big(p_{data}(x) \Big\Vert p_{\phi}(x)\Big)$$
这里
$$p_{\phi}(x) = \int q_{\phi}(x|z)q(z) dz$$
所以用$KL\Big(p_{data}(x) p_{\theta}(z|x)\Big\Vert q_{\phi}(x|z)q(z)\Big)$作为训练目标。
谢谢苏老师的回复!
1. 首先回复您为什么ELBO不带KL,并不是最终损失函数形式,需要做如下变形:
$$
\begin{aligned}
ELBO &= \mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p_{\theta}(x,z)}{q_{\phi}(z|x)}] \\
&= \mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p_{\theta}(x|z)p(z)}{q_{\phi}(z|x)}] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[logp_{\theta}(x|z)]-\mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{q_{\phi}(z|x)}{p(z)}] \\
&=\mathbb{E}_{z \sim q_{\phi}(z|x)}[logp_{\theta}(x|z)]-D_{KL}(q_{\phi}(z|x)||p(z))
\end{aligned}
$$
2. 其次,关于您对“打倒基于旧式变分推断的ELBO”,我有一些不同看法:
VAE的参数调优策略与EM算法有同工之妙。
①固定$\phi$参数,优化$\theta$参数。在ELBO中$\mathbb{E}_{z \sim q_{\phi}(z|x)}[logp_{\theta}(x|z)]$表现为提高解码器生成图像精度。但是此时$\theta$的变动导致后验分布$p_{\theta}(z|x)$也发生了变化,进而导致$D_{KL}(q_{\phi}(z|x)||p_{\theta}(z|x))$值发生了变化,最终影响$ELBO$值;
②固定$\theta$参数,优化$\phi$参数。因此$q_{\phi}(z|x)$会通过调整$\mu_{\phi}$和$\sigma_{\phi}$去最大化ELBO值,体现为最小化$D_{KL}(q_{\phi}(z|x)||p(z))=\frac{1}{2}(1+log\sigma_{\phi}^2-\mu_{\phi}^2-\sigma_{\phi}^2)$。同时,$\mu_{\phi}$和$\sigma_{\phi}$值的变动会重采样生成不同的$z$,这也使得$\theta$参数得以不断更新;
二者实现动态平衡的效果。
按照变分推断的形式
$$
logp_{\theta}(x) = \mathbb{E}_{z \sim q_{\phi}(z|x)}[log\frac{p_{\theta}(x,z)}{q_{\phi}(z|x)}]+D_{KL}(q_{\phi}(z|x)||p_{\theta}(z|x))
$$
较为直观的解释了参数$\phi$和$\theta$之间的互相影响关系。
1、明白了,我将$q_{\phi}(z|x)$看成$q_{\phi}(x|z)$了(ELBO厌恶感+1);
2、“VAE与EM算法有同工之妙”跟“ELBO推导丑陋”并不矛盾。
ELBO基于最大似然,或者说基于最小化$\mathbb{E}_{x \sim p_{data}(x)}[-\log(p_{\theta}(x))]$,这玩意既不直观,也不好用,是概率统计最应该抛弃的概念之一。直观的做法应该是换成$KL$散度,比如$KL\Big(p_{data}(x) \Big\Vert p_{\phi}(x)\Big)$,这是类似距离的存在,越小越好,等于零则相等。
而且$KL$散度是可以双向优化的,它不排斥$p_{data}(x)$也有参数的情形(最大似然如果$p_{data}(x)$有参数就挂了),比如VAE的优化目标,就是定义两个联合分布$p_{data}(x) p_{\theta}(z|x)$和$q_{\phi}(x|z)q(z)$,然后优化它们的联合KL散度$KL\Big(p_{data}(x) p_{\theta}(z|x)\Big\Vert q_{\phi}(x|z)q(z)\Big)$,多简单。
如果非要从ELBO角度来理解,我们也有不等式
$$KL\Big(p_{data}(x) p_{\theta}(z|x)\Big\Vert q_{\phi}(x|z)q(z)\Big)\geq KL\Big(p_{data}(x) \Big\Vert p_{\phi}(x)\Big)$$
即联合分布的KL散度,是边缘分布的KL散度的上界,简单直观又好记,这不比原始的ELBO一通乱七八糟的形式舒服多了。
联合分布KL散度的视角,还可以推出 https://kexue.fm/archives/5887 类似的聚类算法,很难想象用旧式ELBO的处理方式推导起来会有多麻烦。
总之,坚决打倒旧式ELBO。
至于你说的动态平衡理解,我在 https://kexue.fm/archives/5253 也写过差不多的内容,但拆分开理解仅仅是一种不算很紧要的理解方式,它跟实际训练不吻合,并且理解结果也容易引起误解(拆分两项后,总有人觉得每一项都能优化到零)。
谢谢苏老师的回复!
我也是在从MLE出发推导VAE的Loss函数这个过程中产生了这些疑问,所以谢谢苏老师的耐心解答,让我现在对VAE有了一些更深的理解。
关于您倡导的KL散度推导流程,非常感谢提供一种全新的思路,这也是我下一步要学习的!再次感谢您认真耐心的回复!