EM算法(最大期望算法)

EM 算法

1、问题描述

极大似然法是最常用的参数估计方法之一。设观测变量为 xxx,模型参数为 θ\thetaθ ,则极大似然法通过最大化似然函数 p(x∣θ)p(x|\theta)p(xθ) 或对数似然 log⁡p(x∣θ)\log p(x|\theta)logp(xθ) 来求解最优的 θ\thetaθ. 然而在一些问题中,观测变量 xxx 依赖于隐变量 zzz. 此时根据全概率公式有:
p(x∣θ)=∑zp(x,z∣θ)orp(x∣θ)=∫zp(x,z∣θ)dzp(x|\theta)=\sum_z p(x,z|\theta) \quad or \quad p(x|\theta)=\int_z p(x,z|\theta)dz p(xθ)=zp(x,zθ)orp(xθ)=zp(x,zθ)dz
对数似然为:
L(θ)=log⁡p(x∣θ)=log⁡∑zp(x,z∣θ)L(\theta)=\log p(x|\theta)=\log \sum_z p(x,z|\theta) L(θ)=logp(xθ)=logzp(x,zθ)
如果仍然使用极大似然法,我们会发现 L(θ)L(\theta)L(θ) 的导数将变得非常复杂,要优化的参数之间无法分离,导致无法写出封闭形式的解。这时就需要用到 EM 算法了。

2、理论推导

首先介绍 Jensen 不等式:
fff 是凸函数,则有:
E(f(X))≥f(E(X))E(f(X))\ge f(E(X)) E(f(X))f(E(X))
当随机变量 XXX 为常数时等号成立。
fff 是凹函数,则结论相反。

回到上面的问题,我们为隐变量 zzz 引入一个概率分布 q(z)q(z)q(z) ,则有:
L(θ)=log⁡∑zp(x,z∣θ)=log⁡(∑zq(z)p(x,z∣θ)q(z))≥∑zq(z)log⁡p(x,z∣θ)q(z)=J(θ,q)L(\theta)=\log \sum_z p(x,z|\theta)=\log \left(\sum_z q(z)\frac{p(x,z|\theta)}{q(z)}\right)\ge \sum_z q(z)\log\frac{p(x,z|\theta)}{q(z)} =J(\theta,q) L(θ)=logzp(x,zθ)=log(zq(z)q(z)p(x,zθ))zq(z)logq(z)p(x,zθ)=J(θ,q)
(不等号使用了 Jensen不等式。函数 fff 是 log 函数,凹函数)

q(z)=p(z∣x,θ)q(z)=p(z|x,\theta)q(z)=p(zx,θ) 时,等号成立,因此 J(θ,q)J(\theta,q)J(θ,q)L(θ)L(\theta)L(θ) 紧的下界,所以可以将最大化 L(θ)L(\theta)L(θ) 的问题变为最大化 J(θ,q)J(\theta,q)J(θ,q)
max⁡θL(θ)⇔max⁡θ,qJ(θ,q)\max_\theta L(\theta)\Leftrightarrow\max_{\theta,q} J(\theta,q) θmaxL(θ)θ,qmaxJ(θ,q)
不过,同时优化 θ\thetaθqqq 依旧非常困难,因此 EM 算法采用交替迭代的方式优化:

  1. E-step 固定 $\theta $ 优化 qqq
    qt+1=arg max⁡qJ(θt,q)q^{t+1}=\argmax_q J(\theta^t,q) qt+1=qargmaxJ(θt,q)
    由上面取等号条件可知:$q{t+1}=p(z|x,\thetat) $

  2. M-step 固定 qqq 优化 $\theta $:
    θt+1=arg max⁡θJ(θ,qt+1)\theta^{t+1}=\argmax_\theta J(\theta,q^{t+1}) θt+1=θargmaxJ(θ,qt+1)
    上述优化目标可以拆出一个与 θ\thetaθ 无关的常数项:

    J(θ,qt+1)=∑zqt+1(z)log⁡p(x,z∣θ)−∑zqt+1(z)log⁡qt+1(z)=∑zp(z∣x,θt)log⁡p(x,z∣θ)−∑zqt+1(z)log⁡qt+1(z)\begin{align*} J(\theta,q^{t+1})&=\sum_z q^{t+1}(z)\log p(x,z|\theta)-\sum_z q^{t+1}(z)\log q^{t+1}(z) \\ &=\sum_z p(z|x,\theta^t)\log p(x,z|\theta)-\sum_z q^{t+1}(z)\log q^{t+1}(z) \end{align*}J(θ,qt+1)=zqt+1(z)logp(x,zθ)zqt+1(z)logqt+1(z)=zp(zx,θt)logp(x,zθ)zqt+1(z)logqt+1(z)
    Q(θ,θt)=∑zp(z∣x,θt)log⁡p(x,z∣θ)Q(\theta,\theta^t)=\sum_z p(z|x,\theta^t)\log p(x,z|\theta)Q(θ,θt)=zp(zx,θt)logp(x,zθ),因为第二项为常数,因此只优化第一项即可:
    θt+1=arg max⁡θQ(θ,θt)\theta^{t+1}=\argmax_\theta Q(\theta,\theta^t) θt+1=θargmaxQ(θ,θt)

经过一轮 E-step 和 M-step,有:
L(θt+1)≥J(qt+1,θt+1)≥J(qt+1,θt)=L(θt)L(\theta^{t+1})\ge J(q^{t+1},\theta^{t+1})\ge J(q^{t+1},\theta^t)=L(\theta^t)L(θt+1)J(qt+1,θt+1)J(qt+1,θt)=L(θt)
可知 L(θ)L(\theta)L(θ) 确实得到了优化。

3、算法步骤

综上所述,EM算法的步骤如下:

  1. 随机初始化 θ0\theta^0θ0
  2. E-step:给定 θt\theta^tθt,求隐变量的后验分布:
    qt+1=p(z∣x,θt)q^{t+1}=p(z|x,\theta^t) qt+1=p(zx,θt)
  3. M-step:
    优化Q(θ,θt)=∑zp(z∣x,θt)log⁡p(x,z∣θ)Q(\theta,\theta^t)=\sum_z p(z|x,\theta^t)\log p(x,z|\theta)Q(θ,θt)=zp(zx,θt)logp(x,zθ)
    得到:θt+1=arg max⁡θQ(θ,θt)\theta^{t+1}=\argmax_\theta Q(\theta,\theta^t)θt+1=θargmaxQ(θ,θt)
  4. 迭代执行 2、3 步直至收敛。

4、另一种分析

可以从另一种角度,绕过 Jensen 不等式进行推导 ,如下:
L(θ)=log⁡p(x∣θ)=∫zq(z)log⁡p(x∣θ)dz=∫zq(z)log⁡p(x∣z,θ)p(z)p(z∣x,θ)q(z)q(z)dz=∫zq(z)log⁡p(x∣z,θ)dz−∫zq(z)log⁡q(z)p(z)dz+∫zq(z)log⁡q(z)p(z∣x,θ)dz=∫zq(z)log⁡p(x∣z,θ)p(z)q(z)dz+KL(q(z)∣∣p(z∣x,θ))=∫zq(z)log⁡p(x,z∣θ)dz⏟J(θ,q)+KL(q(z)∣∣p(z∣x,θ))⏟≥0\begin{align*} L(\theta)&=\log p(x|\theta)\\ &=\int_z q(z)\log p(x|\theta)dz\\ &=\int_z q(z)\log \frac{p(x|z,\theta)p(z)}{p(z|x,\theta)}\frac{q(z)}{q(z)}dz\\ &=\int_z q(z) \log p(x|z,\theta)dz-\int_z q(z)\log \frac{q(z)}{p(z)}dz+\int_z q(z)\log\frac{q(z)}{p(z|x,\theta)}dz\\ &=\int_z q(z)\log \frac{p(x|z,\theta)p(z)}{q(z)}dz + KL(q(z)||p(z|x,\theta))\\ &=\underbrace{\int_z q(z)\log p(x,z|\theta)dz}_{J(\theta,q)}+\underbrace{KL(q(z)||p(z|x,\theta))}_{\ge 0} \end{align*}L(θ)=logp(xθ)=zq(z)logp(xθ)dz=zq(z)logp(zx,θ)p(xz,θ)p(z)q(z)q(z)dz=zq(z)logp(xz,θ)dzzq(z)logp(z)q(z)dz+zq(z)logp(zx,θ)q(z)dz=zq(z)logq(z)p(xz,θ)p(z)dz+KL(q(z)∣∣p(zx,θ))=J(θ,q)zq(z)logp(x,zθ)dz+0KL(q(z)∣∣p(zx,θ))

从而得到 J(θ,q)≤L(θ)J(\theta,q)\le L(\theta)J(θ,q)L(θ).

这也正是 ELBO 的推导过程。
ELBO 一般形式:
log⁡p(x)≥Eq(z)[log⁡p(x,z)q(z)]\log p(x)\ge E_{q(z)}\left[\log \frac{p(x,z)}{q(z)}\right] logp(x)Eq(z)[logq(z)p(x,z)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值