EM算法:期望最大化算法
MLE(极大似然估计法)是一种非常有效的参数估计方法,但在概率模型中,有时既含有观测变量 (observable variable), 又含有隐变量(hidden variable)或潜在变量(latent variable),例如:分布中有多余参数或数据为截尾或缺失时,这个时候使用MLE求解是比较困难的。于是Dempster等人于1977年提出了EM算法,其出发点是把求MLE的过程分两步走,第一步是求期望,以便把多余的部分去掉,第二步是求极大值。
我们给定数据和参数:
x
:
observed data
x: \ \text{observed data}
x: observed data
z
:
unobserved data
,
z:\ \text{unobserved data } ,
z: unobserved data , 也就是隐变量
(
x
,
z
)
:
complete data
\left( x,\ z \right) :\ \text{complete data}
(x, z): complete data
θ
:
parameter
\theta :\ \text{parameter}
θ: parameter
EM 算法对这个问题的解决方法是采用迭代的方法,这里直接给出最终的公式
θ
t
+
1
=
a
r
g
m
a
x
θ
∫
z
p
(
z
∣
x
,
θ
t
)
log
p
(
x
,
z
∣
θ
)
d
z
=
a
r
g
m
a
x
θ
E
z
∣
x
,
θ
t
[
log
p
(
x
,
z
∣
θ
)
]
\theta^{t+1}=\mathop{argmax}\limits_{\theta}\int_z p(z|x,\theta^t)\log p(x,z|\theta)dz=\mathop{argmax}\limits_{\theta}\mathbb{E}_{z|x,\theta^t}[\log p(x,z|\theta)]
θt+1=θargmax∫zp(z∣x,θt)logp(x,z∣θ)dz=θargmaxEz∣x,θt[logp(x,z∣θ)]
后面再说明这个式子是从何得来的。
这个公式包含了迭代的两步:
E step:计算
log
p
(
x
,
z
∣
θ
)
\log p(x,z|\theta)
logp(x,z∣θ) 在概率分布
p
(
z
∣
x
,
θ
t
)
p(z|x,\theta^t)
p(z∣x,θt) 下的期望
M step:计算使这个期望最大化的参数得到下一个 EM 步骤的输入
对于上述算法求解过程,似然函数在每一步迭代的过程中都是在增大的,除非已经达到最大值,证明如下。
求证: log p ( x ∣ θ t ) ≤ log p ( x ∣ θ t + 1 ) \log p(x|\theta^t)\le\log p(x|\theta^{t+1}) logp(x∣θt)≤logp(x∣θt+1)
证明:
我们知道
log p ( x ∣ θ ) = log p ( z , x ∣ θ ) − log p ( z ∣ x , θ ) \log p(x|\theta)=\log p(z,x|\theta)-\log p(z|x,\theta) logp(x∣θ)=logp(z,x∣θ)−logp(z∣x,θ)在 p ( z ∣ x , θ t ) p(z|x,\theta^t) p(z∣x,θt)概率下对左右两边求期望:
左 边 = ∫ z p ( z ∣ x , θ t ) log p ( x ∣ θ ) d z = log p ( x ∣ θ ) 左边=\int_zp(z|x,\theta^t)\log p(x|\theta)dz=\log p(x|\theta) 左边=∫zp(z∣x,θt)logp(x∣θ)dz=logp(x∣θ)右 边 = ∫ z p ( z ∣ x , θ t ) log p ( x , z ∣ θ ) d z − ∫ z p ( z ∣ x , θ t ) log p ( z ∣ x , θ ) d z = Q ( θ , θ t ) − H ( θ , θ t ) 右边=\int_zp(z|x,\theta^t)\log p(x,z|\theta)dz-\int_zp(z|x,\theta^t)\log p(z|x,\theta)dz=Q(\theta,\theta^t)-H(\theta,\theta^t) 右边=∫zp(z∣x,θt)logp(x,z∣θ)dz−∫zp(z∣x,θt)logp(z∣x,θ)dz=Q(θ,θt)−H(θ,θt)
所以:
log p ( x ∣ θ ) = Q ( θ , θ t ) − H ( θ , θ t ) \log p(x|\theta)=Q(\theta,\theta^t)-H(\theta,\theta^t) logp(x∣θ)=Q(θ,θt)−H(θ,θt)
由于 Q ( θ , θ t ) = ∫ z p ( z ∣ x , θ t ) log p ( x , z ∣ θ ) d z , Q(\theta,\theta^t)=\int_zp(z|x,\theta^t)\log p(x,z|\theta)dz, Q(θ,θt)=∫zp(z∣x,θt)logp(x,z∣θ)dz,
而 θ t + 1 = a r g m a x θ ∫ z p ( z ∣ x , θ t ) log p ( x , z ∣ θ ) d z = a r g m a x θ Q ( θ , θ t ) , \theta^{t+1}=\mathop{argmax}\limits_{\theta}\int_zp(z|x,\theta^t)\log p(x,z|\theta)dz=\mathop{argmax}\limits_{\theta}Q(\theta,\theta^t), θt+1=θargmax∫zp(z∣x,θt)logp(x,z∣θ)dz=θargmaxQ(θ,θt),
所以 Q ( θ t + 1 , θ t ) ≥ Q ( θ t , θ t ) . Q(\theta^{t+1},\theta^t)\ge Q(\theta^t,\theta^t). Q(θt+1,θt)≥Q(θt,θt).
这时要证 log p ( x ∣ θ t ) ≤ log p ( x ∣ θ t + 1 ) \log p(x|\theta^t)\le\log p(x|\theta^{t+1}) logp(x∣θt)≤logp(x∣θt+1),只需证: H ( θ t , θ t ) ≥ H ( θ t + 1 , θ t ) H(\theta^t,\theta^t)\ge H(\theta^{t+1},\theta^t) H(θt,θt)≥H(θt+1,θt):即 H ( θ t , θ t ) ≥ H ( θ t + 1 , θ t ) H(\theta^t,\theta^t)\ge H(\theta^{t+1},\theta^t) H(θt,θt)≥H(θt+1,θt)
综上我们得证
log p ( x ∣ θ t ) ≤ log p ( x ∣ θ t + 1 ) \log p(x|\theta^t)\le\log p(x|\theta^{t+1}) logp(x∣θt)≤logp(x∣θt+1)
进一步,我们来看EM 迭代过程是如何得来的
log p ( x ∣ θ ) = log p ( z , x ∣ θ ) − log p ( z ∣ x , θ ) = log p ( z , x ∣ θ ) q ( z ) − log p ( z ∣ x , θ ) q ( z ) \log p(x|\theta)=\log p(z,x|\theta)-\log p(z|x,\theta)=\log \frac{p(z,x|\theta)}{q(z)}-\log\frac{p(z|x,\theta)}{q(z)} logp(x∣θ)=logp(z,x∣θ)−logp(z∣x,θ)=logq(z)p(z,x∣θ)−logq(z)p(z∣x,θ)
在概率分布
q
(
z
)
q(z)
q(z)下, 对上式左右两边求期望
E
q
(
z
)
\mathbb{E}_{q(z)}
Eq(z):
其中
E
L
B
O
=
∫
z
q
(
z
)
log
p
(
z
,
x
∣
θ
)
q
(
z
)
d
z
,
ELBO=\int_zq(z)\log \frac{p(z,x|\theta)}{q(z)}dz,
ELBO=∫zq(z)logq(z)p(z,x∣θ)dz,
E
L
B
O
ELBO
ELBO 的全称是Evidence lower bound,我们知道
K
L
(
q
(
z
)
∣
∣
p
(
z
∣
x
,
θ
)
)
≥
0
KL(q(z)||p(z|x,\theta))\ge 0
KL(q(z)∣∣p(z∣x,θ))≥0,所以
log p ( x ∣ θ ) ≥ E L B O , \log p(x|\theta)\ge ELBO, logp(x∣θ)≥ELBO,
在
K
L
(
q
(
z
)
∣
∣
p
(
z
∣
x
,
θ
)
)
=
0
KL(q(z)||p(z|x,\theta))= 0
KL(q(z)∣∣p(z∣x,θ))=0,上式取等号,即:
q
(
z
)
=
p
(
z
∣
x
,
θ
)
q(z)=p(z|x,\theta)
q(z)=p(z∣x,θ),EM 算法的目的是将 ELBO 最大化,根据上面的证明过程,在每一步 EM 后,求得了最大的
E
L
B
O
ELBO
ELBO,并将这个使 $ELBO $最大的参数代入下一次迭代中,这时便有
θ
^
=
a
r
g
m
a
x
θ
E
L
B
O
=
a
r
g
m
a
x
θ
∫
z
q
(
z
)
log
p
(
x
,
z
∣
θ
)
q
(
z
)
d
z
\hat{\theta}=\mathop{argmax}_{\theta}ELBO= \mathop{argmax}_\theta\int_zq(z)\log\frac{p(x,z|\theta)}{q(z)}dz
θ^=argmaxθELBO=argmaxθ∫zq(z)logq(z)p(x,z∣θ)dz
由于 q ( z ) = p ( z ∣ x , θ t ) q(z)=p(z|x,\theta^t) q(z)=p(z∣x,θt)的时候,最大值才能取等号,所以
θ
^
=
a
r
g
m
a
x
θ
E
L
B
O
=
a
r
g
m
a
x
θ
∫
z
q
(
z
)
log
p
(
x
,
z
∣
θ
)
q
(
z
)
d
z
=
a
r
g
m
a
x
θ
∫
z
p
(
z
∣
x
,
θ
t
)
log
p
(
x
,
z
∣
θ
)
p
(
z
∣
x
,
θ
t
)
d
z
=
a
r
g
m
a
x
θ
∫
z
p
(
z
∣
x
,
θ
t
)
log
p
(
x
,
z
∣
θ
)
d
z
\hat{\theta}=\mathop{argmax}_{\theta}ELBO=\mathop{argmax}_\theta\int_zq(z)\log\frac{p(x,z|\theta)}{q(z)}dz=\mathop{argmax}_\theta\int_zp(z|x,\theta^t)\log\frac{p(x,z|\theta)}{p(z|x,\theta^t)}d z\\ =\mathop{argmax}_\theta\int_z p(z|x,\theta^t)\log p(x,z|\theta)dz
θ^=argmaxθELBO=argmaxθ∫zq(z)logq(z)p(x,z∣θ)dz=argmaxθ∫zp(z∣x,θt)logp(z∣x,θt)p(x,z∣θ)dz=argmaxθ∫zp(z∣x,θt)logp(x,z∣θ)dz
我们就得到了开始给出的EM算法迭代式。
从 Jensen 不等式出发,也可以导出上式:
l
o
g
p
(
x
∣
θ
)
=
log
∫
z
p
(
x
,
z
∣
θ
)
d
z
=
log
∫
z
p
(
x
,
z
∣
θ
)
q
(
z
)
q
(
z
)
d
z
=
log
E
q
(
z
)
[
p
(
x
,
z
∣
θ
)
q
(
z
)
]
≥
E
q
(
z
)
[
log
p
(
x
,
z
∣
θ
)
q
(
z
)
]
logp (x|\theta) =\log\int_zp(x,z|\theta)dz=\log\int_z\frac{p(x,z|\theta)q(z)}{q(z)}dz\\ =\log \mathbb{E}_{q(z)}[\frac{p(x,z|\theta)}{q(z)}]\ge \mathbb{E}_{q(z)}[\log\frac{p(x,z|\theta)}{q(z)}]
logp(x∣θ)=log∫zp(x,z∣θ)dz=log∫zq(z)p(x,z∣θ)q(z)dz=logEq(z)[q(z)p(x,z∣θ)]≥Eq(z)[logq(z)p(x,z∣θ)]
右边的式子便是我们上面的
E
L
B
O
ELBO
ELBO,等号在 $ \frac{p(x,z|\theta)}{q(z)} =C$ 时成立。这里
C
C
C是常数,于是:
∫
z
q
(
z
)
d
z
=
1
C
∫
z
p
(
x
,
z
∣
θ
)
d
z
=
1
C
p
(
x
∣
θ
)
=
1
\int_zq(z)dz=\frac{1}{C}\int_zp(x,z|\theta)dz=\frac{1}{C}p(x|\theta)=1\\
∫zq(z)dz=C1∫zp(x,z∣θ)dz=C1p(x∣θ)=1
即
p
(
x
∣
θ
)
=
C
p(x|\theta)=C
p(x∣θ)=C, 另外我们知道
p
(
x
,
z
∣
θ
)
=
C
q
(
z
)
p(x,z|\theta)=Cq(z)
p(x,z∣θ)=Cq(z), 所以
q
(
z
)
=
C
q
(
z
)
C
=
1
p
(
x
∣
θ
)
p
(
x
,
z
∣
θ
)
=
p
(
z
∣
x
,
θ
)
q(z)= \frac{Cq(z)}{C} =\frac{1}{p(x|\theta)}p(x,z|\theta)=p(z|x,\theta)
q(z)=CCq(z)=p(x∣θ)1p(x,z∣θ)=p(z∣x,θ)
这个结果就是上面的最大值取等号的条件。
参考:
模式识别与机器学习(PRML)
李航的统计学习方法