带你理解EM算法

实际上EM算法的思想常常出现在我们的日常生活中,我们在日常中也一定使用过EM算法。
举个例子,刚来到一个公司,你希望知道哪些行为(参数),可以最大化你的工资(目标函数),但是又因为你是新人所以有很多东西跟你工资的关系都不知道(比如员工,领导之间的关系,公司的文化等等),你唯一知道的就是在表明上的东西(观测变量),比如公司的规章制度等等,那么这时候你会怎么办呢?你或许会采取一种策略,先根据过去的经验来猜测这些隐藏因素对你工资的影响(E步),然后根据这些猜测来决定你采取什么行动(M步),当你采取完行动后,你又获得了一些经验,刷新了你对这些隐藏因素的看法,于是你修正你的想法(E步),再去优化你的行动(M步)直到最后收敛到一个最优值。

因此,形式化来讲,EM算法就是要最大化似然度来求得一个参数 θ \theta θ的最优值。但是,很多时候,当我们的模型中存在隐变量的时候(比如,一个词所属的主题,聚类问题中样本的类别, etc.),我们的似然度是很难求的。下面是该似然度的式子,其中z表示不可观测的变量,x表示可观测的变量,由于z是不可观测的,所以,要求似然度,我们必须要对z求和或求积分(连续的时候求积分,离散的时候求和)。

L ( θ ) = ∑ i = 1 N log ⁡ p ( x i ∣ θ ) = ∑ i = 1 N log ⁡ [ ∑ z i p ( x i , z i ∣ θ ) ] \mathcal{L}( \theta ) =\sum ^{N}_{i=1}\log p( x_{i} |\theta ) =\sum ^{N}_{i=1}\log\left[\sum _{z_{i}} p( x_{i} ,z_{i} |\theta )\right] L(θ)=i=1Nlogp(xiθ)=i=1Nlog[zip(xi,ziθ)]
可以看到上面的这个式子,如果不存在隐变量的话,那么那个log是直接作用与p的,如果p恰好是指数族分布,那么这个似然度就非常好求,但是有隐变量的时候,log被一个 ∑ z \sum _{z} z给截断的,这就使得这个式子变得很难优化。

这个问题的关键在于, log ⁡ p ( x i ∣ θ ) \log p( x_{i} |\theta ) logp(xiθ)很难优化,但是 p ( x i , z i ∣ θ ) p( x_{i} ,z_{i} |\theta ) p(xi,ziθ)却很好优化,比如说聚类的时候,你提前知道所有样本的类别了,那你计算每个类别的中心距离就太简单了,但是要优化 p ( x i , z i ∣ θ ) p( x_{i} ,z_{i} |\theta ) p(xi,ziθ)的前提是,你要看得到隐变量的取值才行啊,然而隐变量是看不到的。EM算法通过一个巧妙的构造,让 p ( x i , z i ∣ θ ) p( x_{i} ,z_{i} |\theta ) p(xi,ziθ)和似然度 p ( x i ∣ θ ) p( x_{i} |\theta ) p(xiθ)的下界联系起来,这是我们只要优化下界就能代替优化似然度本身。

接下来我们看一下对于单个样本 p ( x i ) p( x_{i}) p(xi)似然度的下界是什么东西。在这里我们引入了 z i z_{i} zi的分布 q i ( z i ) q_{i}( z_{i}) qi(zi)

log ⁡ p ( x i ∣ θ ) = log ⁡ p ( x i , z i ) − log ⁡ p ( z i ∣ x i ) = log ⁡ ( p ( x i , z i ) q i ( z i ) ) − log ⁡ ( p ( z i ∣ x i ) q i ( z i ) ) = log ⁡ p ( x i , z i ) − log ⁡ q i ( z i ) − log ⁡ ( p ( z i ∣ x i ) q i ( z i ) ) = ∫ q i ( z i ) log ⁡ p ( x i , z i ) d z − ∫ q i ( z i ) log ⁡ q ( z i ) d z − ∫ q i ( z i ) log ⁡ ( p ( z i ∣ x i ) q i ( z i ) ) d z ( 两边同时对 z 求期望 ) = E z i ( log ⁡ p ( x i , z i ) ) − H ( q i ) ⏟ E L B O i + K L ( q i ( z i ) ∣ ∣ p ( z i ∣ x i ) ) \begin{aligned} \log p( x_{i} |\theta ) & =\log p( x_{i} ,z_{i}) -\log p( z_{i} |x_{i})\\ & =\log\left(\frac{p( x_{i} ,z_{i})}{q_{i}( z_{i})}\right) -\log\left(\frac{p( z_{i} |x_{i})}{q_{i}( z_{i})}\right)\\ & =\log p( x_{i} ,z_{i}) -\log q_{i}( z_{i}) -\log\left(\frac{p( z_{i} |x_{i})}{q_{i}( z_{i})}\right)\\ & =\int q_{i}( z_{i})\log p( x_{i} ,z_{i}) dz-\int q_{i}( z_{i})\log q( z_{i}) dz-\int q_{i}( z_{i})\log\left(\frac{p( z_{i} |x_{i})}{q_{i}( z_{i})}\right) dz( 两边同时对z求期望)\\ & =\underbrace{E_{z_{i}}(\log p( x_{i} ,z_{i})) -H( q_{i})}_{ELBO_{i}} +KL( q_{i}( z_{i}) ||p( z_{i} |x_{i})) \end{aligned} logp(xiθ)=logp(xi,zi)logp(zixi)=log(qi(zi)p(xi,zi))log(qi(zi)p(zixi))=logp(xi,zi)logqi(zi)log(qi(zi)p(zixi))=qi(zi)logp(xi,zi)dzqi(zi)logq(zi)dzqi(zi)log(qi(zi)p(zixi))dz(两边同时对z求期望)=ELBOi Ezi(logp(xi,zi))H(qi)+KL(qi(zi)∣∣p(zixi))
我们知道 K L ( q ( z i ) ∣ ∣ p ( z i ∣ x i ) ) ⩾ 0 KL( q( z_{i}) ||p( z_{i} |x_{i})) \geqslant 0 KL(q(zi)∣∣p(zixi))0,所以这个似然度一定有
log ⁡ p ( x i ) ⩾ E z i ( log ⁡ p ( x i , z i ) ) − H ( q i ) \log p( x_{i}) \geqslant E_{z_{i}}(\log p( x_{i} ,z_{i})) -H( q_{i}) logp(xi)Ezi(logp(xi,zi))H(qi)
可以看到对数似然度被分解成了两部分,一个是evidence lower bound(ELBO),似然度的下界,另一个是KL距离,不管q是什么分布,这两部分加起来肯定是一样的。
这里写图片描述

图中的L是我们的ELBO。

也就是说,只要我们令KL距离为0,此时 q ( z ) = p ( z ∣ x ) q( z) =p( z|x) q(z)=p(zx),那么ELBO就等于似然度的值了。这就意味着我们最大化 θ \theta θ的时候,不再需要对 log ⁡ p ( x ∣ θ ) \log p( x|\theta ) logp(xθ)做,只需要找到 θ \theta θ使得这个ELBO最大不就相当于在“最大化我们的似然度”吗。而最大化这个ELBO太简单了,在这里 H ( q ) H( q) H(q)是q的熵,与 θ \theta θ无关只与分布q有关,所以不用管。于是我们把 q ( z ) = p ( z ∣ x ) q( z) =p( z|x) q(z)=p(zx)代入到ELBO中得到
E L B O i = E z i ( log ⁡ p ( x i , z i ) ) + c o n s t = ∫ q i ( z i ) log ⁡ p ( x i , z i ) d z + c o n s t = ∫ p ( z i ∣ x i ) log ⁡ p ( x i , z i ) d z + c o n s t = ∑ z i p ( z i ∣ x i ) log ⁡ p ( x i , z i ) + c o n s t ( 如果 z 是离散的 ) \begin{aligned} ELBO_{i} & =E_{z_{i}}(\log p( x_{i} ,z_{i})) +const\\ & =\int q_{i}( z_{i})\log p( x_{i} ,z_{i}) dz+const\\ & =\int p( z_{i} |x_{i})\log p( x_{i} ,z_{i}) dz+const\\ & =\sum _{z_{i}} p( z_{i} |x_{i})\log p( x_{i} ,z_{i}) +const( 如果z是离散的) \end{aligned} ELBOi=Ezi(logp(xi,zi))+const=qi(zi)logp(xi,zi)dz+const=p(zixi)logp(xi,zi)dz+const=zip(zixi)logp(xi,zi)+const(如果z是离散的)
这里写图片描述

EM算法,示意图,E步,把KL设为0,蓝色的线往上移,使得ELBO=似然度,M步,最大化ELBO,使得似然度增大,红色的线往上移,然后我们不断重复直到收敛。

考虑所有样本,正式的EM框架:

E步:把 q i ( z i ) = p ( z i ∣ x i ) q_{i}( z_{i}) =p( z_{i} |x_{i}) qi(zi)=p(zixi)代入到下界中,再把常数项剔除,
Q ( θ , θ t − 1 ) = ∑ i = 1 N ∑ z i p ( z i ∣ x i , θ t − 1 ) log ⁡ p ( x i , z i , θ ) = ∑ i = 1 N E [ log ⁡ p ( x i , z i ∣ θ ) ∣ x i , θ t − 1 ] Q\left( \theta ,\theta ^{t-1}\right) =\sum ^{N}_{i=1}\sum _{z_{i}} p( z_{i} |x_{i},\theta^{t-1})\log p( x_{i} ,z_{i},\theta)=\sum ^{N}_{i=1} E\left[\log p( x_{i} ,z_{i} |\theta ) |x_{i} ,\theta ^{t-1}\right] Q(θ,θt1)=i=1Nzip(zixi,θt1)logp(xi,zi,θ)=i=1NE[logp(xi,ziθ)xi,θt1]
M步:最大化下界ELBO
θ t = arg ⁡ max ⁡ θ Q ( θ , θ t − 1 ) \theta ^{t} =\arg\max_{\theta } Q\left( \theta ,\theta ^{t-1}\right) θt=argθmaxQ(θ,θt1)

M步2:我们还可以做MAP估计,只需要在Q加上参数的对数先验就可以轻松完成,E步没有任何变化
θ t = arg ⁡ max ⁡ θ Q ( θ , θ t − 1 ) + log ⁡ p ( θ ) \theta ^{t} =\arg\max_{\theta } Q\left( \theta ,\theta ^{t-1}\right) +\log p( \theta ) θt=argθmaxQ(θ,θt1)+logp(θ)
在MAP估计的时候,不仅需要考虑下界的最大化,还需要考虑先验对参数的影响。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值