EM算法原理与推导

EM算法

Jensen不等式

对于凸函数,有 E [ f ( X ) ] ≥ f ( E [ X ] ) E[f(X)]\ge f(E[X]) E[f(X)]f(E[X])。如果 f f f 是一个严格凸函数,那么只有当 X = E [ x ] X=E[x] X=E[x] 成立的时候,Jensen不等式中的等号才会满足。

在这里插入图片描述

向上图演示的一样,如果函数是严格凸函数,那么想要满足Jensen不等式的话,只能是 X X X 是一个定值,从而 X = E [ x ] X=E[x] X=E[x] 。如果 X X X 可能以某分布取多个值的话,任意两个函数值之间的连线都会大于这一区间内的函数值,就好像将一个木棍放入碗里,木棍和碗之间一定存在空隙。而为什么要求函数值严格凸的,我们可以这样考虑,假设碗内有一块平面,那么木棍如果落入该区间,就会和该碗的平面完全贴合。

对应的,如果 f f f 是严格凹函数,那么Jensen不等式就是 E [ f ( X ) ] ≤ f ( E [ X ] ) E[f(X)]\le f(E[X]) E[f(X)]f(E[X]) ,这也是我们要处理的情况,因为我们要用Jensen不等式求解对数似然的极大值。

EM解决的问题

假设我们有数据集 X = { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } X=\{x_{(1)},x_{(2)},...,x_{(m)}\} X={x(1),x(2),...,x(m)},我们想利用生成式模型建模 P ( x ; θ ) P(x;\theta) P(x;θ)

在之前的文章高斯判别模型(GDA)原理与推导中,x就是数据向量,参数 θ \theta θ就是子高斯模型的均值和协方差,然后利用贝叶斯公式进行分类的目的,即 P ( y = i ∣ x ) = P ( x , y = i ) P ( x ) = P ( x , y = i ) ∑ y P ( x , y ) P(y=i|x)=\frac{P(x,y=i)}{P(x)}=\frac{P(x,y=i)}{\sum_yP(x,y)} P(y=ix)=P(x)P(x,y=i)=yP(x,y)P(x,y=i)

然而,GDA是监督学习算法,我们可以观测到数据标签,从而利用不同标签的数据,单独对单个模型的最优参数进行计算。然而这里我们的数据集没有提供标签,但是并不是说标签不存在。我们依然认为数据来自于多个分布,只不过我们无法观测到数据被哪一个子分布生成,因此不能直接利用公式直接计算解析解。EM算法就是用来处理这种具有“隐标签”的混合模型问题。

l ( θ ) = ∑ i = 1 m l o g P ( x ( i ) ; θ ) ( 1 ) l(\theta)=\sum_{i=1}^mlogP(x^{(i)};\theta)\qquad(1) l(θ)=i=1mlogP(x(i);θ)(1)
l ( θ ) = ∑ i = 1 m l o g ∑ z P ( x ( i ) , z ( i ) ; θ ) ( 2 ) l(\theta)=\sum_{i=1}^mlog\sum_zP(x^{(i)},z^{(i)};\theta)\quad(2) l(θ)=i=1mlogzP(x(i),z(i);θ)(2)
l ( θ ) = ∑ i = 1 m l o g ∑ z P ( x ( i ) ; z ( i ) , θ ) P ( z ( i ) ; θ ) ( 2.1 ) l(\theta)=\sum_{i=1}^mlog\sum_zP(x^{(i)};z^{(i)},\theta)P(z^{(i)};\theta)\qquad(2.1) l(θ)=i=1mlogzP(x(i);z(i),θ)P(z(i);θ)(2.1)

如上面的公式所表示的,我们处理无监督学习任务时,假设没有隐标签的存在,直接用(1)公式就可以进行MLE的计算,然而如果有隐标签 z z z的存在,就会使得对数极大似然变成(2)的形式,无法公式直接推导解析式。这里的求和来自于边缘分布的计算。正是因为在对数函数内的求和,造成了计算上的困难。

一个关键的现象是,对于潜在变量的求和位于对数的内部。即使联合概率分布属于指数族分布,由于这个求和式的存在,边缘概率分布通常也不是指数族分布。… 这使得最大似然解没有解析解。

现在无能直接观测到隐标签的话,只能通过渐进迭代的方式去寻找似然函数极大值,简而言之,EM算法是通过一个构造一个似然函数比较紧下界,然后求解下界极大值,然后重新构造下界,然后再求解下界极大值的方式去迭代的。后面会仔细说明这一点。

l ( θ ) = ∑ i l o g P ( x ( i ) ; θ ) ( 1 ) l(\theta)=\sum_ilogP(x^{(i)};\theta) \qquad(1) l(θ)=ilogP(x(i);θ)(1)
l ( θ ) = ∑ i l o g ∑ z ( i ) Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ( 3 ) l(\theta)=\sum_ilog\sum_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \qquad(3) l(θ)=ilogz(i)Qi(z(i))Qi(z(i))P(x(i),z(i);θ)(3)
l ( θ ) = ∑ i l o g E z ( i ) ∼ Q i [ P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ] ( 4 ) l(\theta)=\sum_ilogE_{z^{(i)}\sim Q_i}\Big[\frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}\Big] \qquad(4) l(θ)=ilogEz(i)Qi[Qi(z(i))P(x(i),z(i);θ)](4)
l ( θ ) ≥ ∑ i E z ( i ) ∼ Q i [ l o g P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ] ( 5 ) l(\theta)\ge\sum_iE_{z^{(i)}\sim Q_i}\Big[log\frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}\Big]\qquad(5) l(θ)iEz(i)Qi[logQi(z(i))P(x(i),z(i);θ)](5)
l ( θ ) ≥ ∑ i ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ( 6 ) l(\theta)\ge\sum_i\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \qquad(6) l(θ)iz(i)Qi(z(i))logQi(z(i))P(x(i),z(i);θ)(6)

我研一第一次看见这一串推导的时候,记得还是下午的时候,和现在季节差不多,也是春夏之交。差不多自己在单人间宿舍看了好久,午后斜阳照在我懵逼的我脸上,我脑海中只有一个念头:“这都是些什么操作?”,去吃晚饭的路上还是浑浑噩噩的。然后晚上吃完饭自己在操场溜达好一会,决定说服自己假装看明白了。然后研二的时候,复习线性回归和最小二乘部分的时候,搞明白了极大似然估计,然后查找资料的时候又看见了EM算法这个词,于是回想起了被其支配的恐惧,直到最近,由于考虑项目方案,复习了HMM,才重新看了一遍EM算法,这次觉得真心是差不多看明白了,然后心里只有一个念头:“怎么能有人想出这种操作?”其实当时看不明白,我觉得有一个原因是模式识别的老师把这个EM用交叉熵解释,我就是真心懵逼了,要是当时塌下心好好看Andrew的讲义,应该还是可以看明白的。闲话不多说了,解释一下上面的推导。

(3)是从式子中提出一个恒正因子 Q Q Q,并且 Q Q Q一定小于等于1,这步就是这么要求 Q Q Q的,只要满足条件, Q Q Q其实可以有无数种情况,(这个 Q Q Q实际上就决定的对数似然下界的形状)。至于为什么这么做,实际上就是为了提出一个和 z z z相关的分布,然后往期望上面靠,靠到了期望,就可以用Jensen不等式,后面的推导也是围绕这个目的。用这种方式考虑,(4)步中 Q Q Q z z z的分布函数,剩下的部分固定 θ 和 x \theta和x θx的话,就是一个之和 z z z有关的函数,所以表示为期望的形式。(5)中就是利用Jensen不等式的一步, l o g log log就是Jensen不等式中的函数 f f f,并且log函数的确是一个严格凹函数。最后一步将期望的形式展开,得到(6)。

那么上面这一堆通过对比(3)(6)可以发现,实际上就是把log函数放到里面了,然后等式转变为不等式。我的问题是为啥这么做是好的?

在前面导出问题的时候,我们已经发现了,真正难住我们的,是我们不知道数据的隐标签是啥,这也就使得不能为拥有不同标签的数据单独建模。现在经过上述变换,尽管我们依然不知道数据的隐标签是啥,但是我们可以计算隐标签的后验分布了,即 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))其实就是 P ( z ( i ) ∣ x ( i ) ; θ ) P(z^{(i)}|x^{(i)};\theta) P(z(i)x(i);θ),这个后验分布,在EM算法中被称为责任(responsibility),即哪一个分布对此数据负责。本来我们是不能直接求混合模型的对数似然的,但是确定了责任后我们就可以求解(2.1)式的极大似然估计了。那么,问题来了,为什么 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))其实就是 P ( z ( i ) ∣ x ( i ) ; θ ) P(z^{(i)}|x^{(i)};\theta) P(z(i)x(i);θ)

前面提到直到满足分布条件的Q都可以满足Jensen不等式,不过我们想找到好的那个特殊的一个Q,naive的想法就是让Q使得Jensen不等式成立,根据开始提到的,函数内的取值必须是常数时,Jensen不等式才满足等号,也就是说 P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) \frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} Qi(z(i))P(x(i),z(i);θ)需要是常数。(后面也会证明,这也是保证EM单调收敛性的条件。)
即,
P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) = c ( 7 ) \frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}=c \qquad(7) Qi(z(i))P(x(i),z(i);θ)=c(7)
Q i ( z ( i ) ) ∝ P ( x ( i ) , z ( i ) ; θ ) ( 7.1 ) Q_i(z^{(i)})\propto P(x^{(i)},z^{(i)};\theta) \qquad(7.1) Qi(z(i))P(x(i),z(i);θ)(7.1)
Q i ( z ( i ) ) = P ( x ( i ) , z ( i ) ; θ ) ∑ z P ( x ( i ) , z ; θ ) ( 8 ) Q_i(z^{(i)})=\frac{P(x^{(i)},z^{(i)};\theta)}{\sum_zP(x^{(i)},z;\theta)} \qquad(8) Qi(z(i))=zP(x(i),z;θ)P(x(i),z(i);θ)(8)
Q i ( z ( i ) ) = P ( x ( i ) , z ( i ) ; θ ) P ( x ( i ) ; θ ) ( 8.1 ) Q_i(z^{(i)})=\frac{P(x^{(i)},z^{(i)};\theta)}{P(x^{(i)};\theta)} \qquad(8.1) Qi(z(i))=P(x(i);θ)P(x(i),z(i);θ)(8.1)
Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) ; θ ) ( 8.2 ) Q_i(z^{(i)})=P(z^{(i)}|x^{(i)};\theta) \qquad(8.2) Qi(z(i))=P(z(i)x(i);θ)(8.2)

(7)在前面已经解释了,然而这个常数 c c c是多少不是限制 Q Q Q的条件,只要满足 Q Q Q和联合概率是正比关系即可。而Q也是概率分布,需要满足求和为一的要求,这也是真正限制 Q Q Q的条件,因此得到(8)。后面的(8.1)和(8.2)就是概率论的基础操作了。因此我们得到结论,Q实际上就是给定 x x x和当前 θ \theta θ条件下,隐标签的后验概率。然后就可以简单的求解MLE,转化后的式子通常是凸的,并且存在解析解。

《统计机器学习》书上的证明更加简单粗暴,直接就把后验概率提出来。我直接把原文贴在下面。仅做一个参考,这篇文章主要还是跟着CS229的讲义来走。

在这里插入图片描述

所以EM算法整理如下:首先随意对参数设定一个值。E-Step就是计算当前参数下,x对应的z的后验概率分布。然后M-Step就是假设已知当前z的后验分布,求解模型参数\(\theta\)的MLE。用公示表示的话:
θ : = a r g m a x θ ∑ i ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ( 9 ) \theta := argmax_\theta\sum_i\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \qquad(9) θ:=argmaxθiz(i)Qi(z(i))logQi(z(i))P(x(i),z(i);θ)(9)

然而没感觉这个式子好算啊?真的可以算吗?其实我在推导的时候,甚至写到这里的时候也是有这个疑问的,但是这个问题我们还是需要真正的去解决一个问题才能彻底明白,因此结合GMM来看想必是极好的吧。

收敛性证明

如果 θ ( i ) \theta^{(i)} θ(i) θ ( i + 1 ) \theta^{(i+1)} θ(i+1)是EM算法两轮连续迭代的参数,那么我们可以证明 l ( θ ( t ) ) < l ( θ ( t + 1 ) ) l(\theta^{(t)})<l(\theta^{(t+1)}) l(θ(t))<l(θ(t+1)),即EM算法会使得似然单调增加。
令:
J ( Q , θ ) = ∑ i ∑ z ( i ) Q i ( z ( i ) ) l o g p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ( 10 ) J(Q,\theta)=\sum_i\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \qquad(10) J(Q,θ)=iz(i)Qi(z(i))logQi(z(i))p(x(i),z(i);θ)(10)

且(6)易知:

l ( θ ) ≥ J ( Q , θ ) l(\theta) \ge J(Q,\theta) l(θ)J(Q,θ)

在E步,由于我们保证了Jensen不等式的等号成立,因此E步更新Q之后,

l ( θ ( t ) ) = J ( Q ( t + 1 ) , θ ( t ) ) l(\theta^{(t)})=J(Q^{(t+1)},\theta^{(t)}) l(θ(t))=J(Q(t+1),θ(t))。而由于M步通过(9)的方法更新 θ \theta θ,因此, J ( Q ( t + 1 ) , θ ( t + 1 ) ) ≥ J ( Q ( t + 1 ) , θ ( t ) ) J(Q^{(t+1)},\theta^{(t+1)}) \ge J(Q^{(t+1)},\theta^{(t)}) J(Q(t+1),θ(t+1))J(Q(t+1),θ(t)),下一回合的E步,再次更新Q,使得 l ( θ ( t + 1 ) ) = J ( Q ( t + 2 ) , θ ( t + 1 ) ) l(\theta^{(t+1)})=J(Q^{(t+2)},\theta^{(t+1)}) l(θ(t+1))=J(Q(t+2),θ(t+1)),因此 l ( θ ( t + 1 ) ) ≥ l ( θ ( t ) ) l(\theta^{(t+1)}) \ge l(\theta^{(t)}) l(θ(t+1))l(θ(t))

要走的路还很长

参考文献中提到认识EM算法有九重境界:

  1. EM 就是 E + M
  2. EM 是一种局部下限构造
  3. K-Means是一种Hard EM算法
  4. 从EM 到 广义EM
  5. 广义EM的一个特例是VBEM
  6. 广义EM的另一个特例是WS算法
  7. 广义EM的再一个特例是Gibbs抽样算法
  8. WS算法是VAE和GAN组合的简化版
  9. KL距离的统一

我大概看了一下…前三层可以理解,第四层摸到了边,后面的嘛…

数据缺失问题

可以说EM算法天生就是用来解决缺失数据的问题的,将第3节的隐变量z看成是数据中缺失的数据即可。
在完全数据X(无缺失数据)下,已知模型为f(x|θ),求数据满足何种模型?这可以由第1节的极大似然估计求解;如果采样数据存在部分未知Z,预测这些含未知的数据的数据符何什么模型?这就可借用第3节的EM算法了,先随机假设θ,迭代求解,最后求知f(x|θ),当然也就可求出z。

后续

在本来以为本文要结束的时候,看到了参考资料中的567几篇文章,仿佛给我打开了新视角。无监督学习我一直很感兴趣但是也仅限于感兴趣而已,这次以HMM与CRF入手,“深入”理解了EM、GDA、K-means、GMM等知识点,觉得这应该是以后继续探索的一个很好的入手点。
期待后面来填坑。

参考:

  1. 琴生不等式
  2. CS229讲义
  3. 《统计学习方法》——李航
  4. 怎么通俗易懂地解释EM算法并且举个例子?
  5. 关于EM算法的九层境界的浅薄介绍,​Hinton和Jordan理解的EM算法
  6. 从最大似然到EM算法:一致的理解方式
  7. 梯度下降和EM算法:系出同源,一脉相承
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值