Expectation Maximization (EM) 算法,中文名字叫做“期望最大”算法,是用来解决具有隐变量的混合模型的参数估计(极大似然估计)。在比较简单的情况中,我们可以直接得出我们想要求得的参数的解析解,比如:MLE:
p
(
X
∣
θ
)
p(X|\theta)
p(X∣θ)。我们想要求解的结果就是:
θ
M
L
E
=
a
r
g
m
a
x
θ
log
p
(
X
∣
θ
)
\theta_{MLE}=\mathop{argmax}\limits_\theta\log p(X|\theta)
θMLE=θargmaxlogp(X∣θ)
其中,
l
o
g
p
(
X
∣
θ
)
log p(X|\theta)
logp(X∣θ) 也被我们称为对数似然函数。一旦,问题变得复杂起来以后,就不是这么简单了,特别是引入了隐变量之后。
1 EM 算法简述以及收敛性证明
1.1 EM 算法简述
实际上,EM 算法的描述也并不是很难,我们知道,通常我们想求的似然函数为
p
(
X
∣
θ
)
p(X|\theta)
p(X∣θ)。引入隐变量之后,原式就变成了:
p
(
X
∣
θ
)
=
∫
p
(
X
,
Z
∣
θ
)
p
(
Z
∣
X
,
θ
(
t
)
)
d
Z
p(X | \theta)=\int p(X, Z | \theta) p\left(Z | X, \theta^{(t)}\right) d Z
p(X∣θ)=∫p(X,Z∣θ)p(Z∣X,θ(t))dZ
EM 算法是一种迭代的算法,我们的目标是求:
θ
t
+
1
=
a
r
g
m
a
x
θ
∫
Z
log
[
p
(
X
,
Z
∣
θ
)
]
p
(
Z
∣
X
,
θ
t
)
d
Z
=
E
Z
∣
X
,
θ
t
[
log
p
(
X
,
Z
∣
θ
)
]
\theta^{t+1}=\mathop{argmax}\limits_{\theta}\int_Z\log [p(X,Z|\theta)]p(Z|X,\theta^t)dZ=\mathbb{E}_{Z|X,\theta^t}[\log p(X,Z|\theta)]
θt+1=θargmax∫Zlog[p(X,Z∣θ)]p(Z∣X,θt)dZ=EZ∣X,θt[logp(X,Z∣θ)]
也就是找到一个更新的参数
θ
\theta
θ,使得
p
(
X
,
Z
∣
θ
)
p(X, Z | \theta)
p(X,Z∣θ)出现的概率更大。
1.2 EM 算法的收敛性
我们想要证明的是当
θ
(
t
)
⟶
θ
(
t
+
1
)
时
,
有
log
p
(
X
∣
θ
(
t
)
)
≤
log
p
(
X
∣
θ
(
t
+
1
)
)
\theta^{(t)} \longrightarrow \theta^{(t+1)} \text { 时 }, \text { 有 } \log p\left(X | \theta^{(t)}\right) \leq \log p\left(X | \theta^{(t+1)}\right)
θ(t)⟶θ(t+1) 时 , 有 logp(X∣θ(t))≤logp(X∣θ(t+1))这样才能说明我们的每次迭代都是有效的,也就是每次迭代都要使X发生的概率增加。
log
p
(
X
∣
θ
)
=
log
p
(
X
,
Z
∣
θ
)
p
(
Z
∣
X
;
θ
)
=
log
p
(
X
,
Z
∣
θ
)
−
log
p
(
Z
∣
X
;
θ
)
\log p(X | \theta)=\log \frac{p(X, Z | \theta)}{p(Z | X ; \theta)}=\log p(X, Z | \theta)-\log p(Z | X ; \theta)
logp(X∣θ)=logp(Z∣X;θ)p(X,Z∣θ)=logp(X,Z∣θ)−logp(Z∣X;θ)
下一步,则是同时对两边求关于
p
(
X
,
Z
∣
θ
(
t
)
)
p(X,Z|\theta^{(t)})
p(X,Z∣θ(t))的期望。
左边:
E
Z
∼
p
(
Z
∣
X
,
θ
(
t
)
)
[
log
p
(
X
∣
θ
)
]
=
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
log
p
(
X
∣
θ
)
d
Z
.
=
log
p
(
X
∣
θ
)
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
d
Z
=
log
p
(
X
∣
θ
)
⋅
1
=
log
p
(
X
∣
θ
)
\begin{aligned} \mathbb{E}_{Z \sim p\left(Z | X, \theta^{(t)}\right)}[\log p(X | \theta)] &=\int_{Z} p\left(Z|X, \theta^{(t)}\right) \log p(X | \theta) d Z.\\ &=\log p(X | \theta) \int_{Z} p\left(Z | X, \theta^{(t)}\right) d Z \\ &=\log p(X | \theta) \cdot 1=\log p(X | \theta) \end{aligned}
EZ∼p(Z∣X,θ(t))[logp(X∣θ)]=∫Zp(Z∣X,θ(t))logp(X∣θ)dZ.=logp(X∣θ)∫Zp(Z∣X,θ(t))dZ=logp(X∣θ)⋅1=logp(X∣θ)
右边:
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
log
p
(
X
,
Z
∣
θ
)
d
Z
⏟
Q
(
θ
,
θ
(
t
)
)
−
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
log
p
(
Z
∣
X
,
θ
)
d
Z
⏟
H
(
θ
,
θ
(
t
)
)
\underbrace{\int_{Z} p\left(Z | X, \theta^{(t)}\right) \log p(X, Z | \theta) d Z}_{Q\left(\theta, \theta^{(t)}\right)}-\underbrace{\int_{Z} p\left(Z | X, \theta^{(t)}\right) \log p(Z | X, \theta) d Z}_{H\left(\theta, \theta^{(t)}\right)}
Q(θ,θ(t))
∫Zp(Z∣X,θ(t))logp(X,Z∣θ)dZ−H(θ,θ(t))
∫Zp(Z∣X,θ(t))logp(Z∣X,θ)dZ
所以:
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
log
[
p
(
X
,
Z
∣
θ
)
]
p
(
Z
∣
X
,
θ
t
)
d
Z
\theta^{t+1}=\mathop{argmax}\limits_{\theta}\int_Z\log [p(X,Z|\theta)]p(Z|X,\theta^t)dZ
θt+1=θargmax∫Zlog[p(X,Z∣θ)]p(Z∣X,θt)dZ,所以
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
+
1
)
,
θ
(
t
)
)
−
H
(
θ
(
t
)
,
θ
(
t
)
)
=
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
log
p
(
Z
∣
X
,
θ
(
t
+
1
)
)
d
Z
−
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
log
p
(
Z
∣
X
,
θ
(
t
)
)
d
Z
=
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
log
p
(
Z
∣
X
,
θ
(
t
+
1
)
)
p
(
Z
∣
X
,
θ
(
t
)
)
d
Z
=
−
K
L
(
p
(
Z
∣
X
,
θ
(
t
)
)
∥
p
(
Z
∣
X
,
θ
(
t
+
1
)
)
)
≤
0
\begin{aligned} H\left(\theta^{(t+1)}, \theta^{(t)}\right)-H\left(\theta^{(t)}, \theta^{(t)}\right) &=\int_{Z} p\left(Z | X, \theta^{(t)}\right) \log p\left(Z | X, \theta^{(t+1)}\right) d Z-\int_{Z} p\left(Z | X, \theta^{(t)}\right) \log p\left(Z | X, \theta^{(t)}\right) d Z \\ &=\int_{Z} p\left(Z | X, \theta^{(t)}\right) \log \frac{p\left(Z | X, \theta^{(t+1)}\right)}{p\left(Z | X, \theta^{(t)}\right)} d Z \\ &=-K L\left(p\left(Z | X, \theta^{(t)}\right) \| p\left(Z | X, \theta^{(t+1)}\right)\right) \leq 0 \end{aligned}
H(θ(t+1),θ(t))−H(θ(t),θ(t))=∫Zp(Z∣X,θ(t))logp(Z∣X,θ(t+1))dZ−∫Zp(Z∣X,θ(t))logp(Z∣X,θ(t))dZ=∫Zp(Z∣X,θ(t))logp(Z∣X,θ(t))p(Z∣X,θ(t+1))dZ=−KL(p(Z∣X,θ(t))∥p(Z∣X,θ(t+1)))≤0
或者,我们也可以使用Jensen inequality。很显然,log 函数是一个concave 函数,那么有
E
[
l
o
g
X
]
≤
l
o
g
[
E
[
X
]
]
E[logX] \le log[E[X]]
E[logX]≤log[E[X]],那么:
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
log
p
(
Z
∣
X
,
∣
θ
(
t
+
1
)
)
p
(
Z
∣
X
,
θ
(
t
)
)
d
Z
=
E
Z
∼
p
(
Z
∣
X
,
θ
(
t
)
)
[
log
p
(
Z
∣
X
,
θ
(
t
+
1
)
)
p
(
Z
∣
X
,
θ
(
t
)
)
]
≤
log
[
E
Z
∼
p
(
Z
∣
X
,
θ
(
t
)
)
[
p
(
Z
∣
X
,
θ
(
t
+
1
)
)
p
(
Z
∣
X
,
θ
(
t
)
)
]
]
=
log
[
∫
Z
p
(
Z
∣
X
,
θ
(
t
)
)
[
p
(
Z
∣
X
,
θ
(
t
+
1
)
)
p
(
Z
∣
X
,
θ
(
t
)
)
]
d
Z
]
=
log
∫
Z
p
(
Z
∣
X
,
θ
(
t
+
1
)
)
d
Z
=
0
\begin{aligned} \int_{Z} p\left(Z | X, \theta^{(t)}\right) \log \frac{p\left(Z|X,| \theta^{(t+1)}\right)}{p\left(Z | X, \theta^{(t)}\right)} d Z &=\mathbb{E}_{Z \sim p\left(Z | X, \theta^{(t)}\right)}\left[\log \frac{p\left(Z | X, \theta^{(t+1)}\right)}{p\left(Z | X, \theta^{(t)}\right)}\right] \\ & \leq \log \left[\mathbb{E}_{Z \sim p\left(Z | X, \theta^{(t)}\right)}\left[\frac{p\left(Z | X, \theta^{(t+1)}\right)}{p\left(Z | X, \theta^{(t)}\right)}\right]\right] \\ &=\log \left[\int_{Z} p\left(Z | X, \theta^{(t)}\right)\left[\frac{p\left(Z | X, \theta^{(t+1)}\right)}{p\left(Z | X, \theta^{(t)}\right)}\right] d Z\right] \\ &=\log \int_{Z} p\left(Z | X, \theta^{(t+1)}\right) d Z \\ &=0 \end{aligned}
∫Zp(Z∣X,θ(t))logp(Z∣X,θ(t))p(Z∣X,∣θ(t+1))dZ=EZ∼p(Z∣X,θ(t))[logp(Z∣X,θ(t))p(Z∣X,θ(t+1))]≤log[EZ∼p(Z∣X,θ(t))[p(Z∣X,θ(t))p(Z∣X,θ(t+1))]]=log[∫Zp(Z∣X,θ(t))[p(Z∣X,θ(t))p(Z∣X,θ(t+1))]dZ]=log∫Zp(Z∣X,θ(t+1))dZ=0
综合上面的结果:
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)
那么,经过每次的迭代,似然函数在不断的增大。这就证明了我们的更新是有效的,也证明了算法是收敛的。
2 导出公式
机器学习中,所谓的模型实际上就可以看成是一堆的参数。根据极大似然估计的思想,我们要求解的对象的是:
θ
M
L
E
=
l
o
g
P
(
X
∣
θ
)
\theta_{MLE}=logP(X|\theta)
θMLE=logP(X∣θ)
其中,
X
X
X为observed data;
Z
Z
Z 为latent data;
(
X
;
Z
)
(X;Z)
(X;Z)为complete data;
θ
\theta
θ 为parameter。
那么,EM 公式就被我们描述为:
θ
t
+
1
=
a
r
g
m
a
x
θ
∫
Z
log
[
p
(
X
,
Z
∣
θ
)
]
p
(
Z
∣
X
,
θ
t
)
d
Z
\theta^{t+1}=\mathop{argmax}\limits_{\theta}\int_Z\log [p(X,Z|\theta)]p(Z|X,\theta^t)dZ
θt+1=θargmax∫Zlog[p(X,Z∣θ)]p(Z∣X,θt)dZ
EM 算法可以被我们分解成E-step 和M-step 两个部分。
-
E-step: P ( Z ∣ X , θ ( t ) ) ⟶ E Z ∼ P ( Z ∣ X , θ ( t ) ) [ log P ( X , Z ∣ θ ) ] P\left(Z | X, \theta^{(t)}\right) \longrightarrow \mathbb{E}_{Z \sim P\left(Z | X, \theta^{(t)}\right)}[\log P(X, Z | \theta)] P(Z∣X,θ(t))⟶EZ∼P(Z∣X,θ(t))[logP(X,Z∣θ)]
-
M-step:
θ ( t + 1 ) = arg max θ E Z ∼ P ( Z ∣ X , θ ( t ) ) [ log P ( X , Z ∣ θ ) ] \theta^{(t+1)}=\arg \max _{\theta} \mathbb{E}_{Z \sim P\left(Z | X, \theta^{(t)}\right)}[\log P(X, Z | \theta)] θ(t+1)=argθmaxEZ∼P(Z∣X,θ(t))[logP(X,Z∣θ)]
前面我们已经证明了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)
收敛性告诉了我们算法确实是有效的,我们可以放心的去使用它。而大家会不会觉得这个公式的得来有点懵逼?懵逼就对了,那么下一步,我们的目标就是要推导出EM 算法究竟是怎么来的,给出一个理论的证明。
2.1 从KL Divergence 进行分析
这是个什么东西呢?中文名字叫做“证据下界”。这个名字读起来似乎有一点点奇怪。我们首先看看它是怎么来的。首先,我们定义一个有关于表示层
Z
Z
Z 的表示层变量
q
(
Z
)
q(Z)
q(Z),
q
(
Z
)
q(Z)
q(Z) 可以表示任何一个变量。
log
P
(
X
∣
θ
)
=
log
P
(
X
,
Z
∣
θ
)
−
log
P
(
Z
∣
X
,
θ
)
=
log
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
−
log
P
(
Z
∣
X
,
θ
)
Q
(
Z
)
\begin{aligned} \log P(X | \theta) &=\log P(X, Z | \theta)-\log P(Z | X, \theta) \\ &=\log \frac{P(X, Z | \theta)}{Q(Z)}-\log \frac{P(Z | X, \theta)}{Q(Z)} \end{aligned}
logP(X∣θ)=logP(X,Z∣θ)−logP(Z∣X,θ)=logQ(Z)P(X,Z∣θ)−logQ(Z)P(Z∣X,θ)
两边同时对于
Q
(
Z
)
Q(Z)
Q(Z) 求期望,我们可以得到:
左边:
∫
Z
Q
(
Z
)
log
P
(
X
∣
θ
)
d
Z
=
log
P
(
X
∣
θ
)
∫
Z
Q
(
Z
)
d
Z
=
log
P
(
X
∣
θ
)
⋅
1
=
log
P
(
X
∣
θ
)
\begin{aligned} \int_{Z} Q(Z) \log P(X | \theta) d Z &=\log P(X | \theta) \int_{Z} Q(Z) d Z \\ &=\log P(X | \theta) \cdot 1 \\ &=\log P(X | \theta) \end{aligned}
∫ZQ(Z)logP(X∣θ)dZ=logP(X∣θ)∫ZQ(Z)dZ=logP(X∣θ)⋅1=logP(X∣θ)
右边:
∫
Z
Q
(
Z
)
log
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
d
Z
⏟
E
L
B
O
−
∫
Z
Q
(
Z
)
log
P
(
Z
∣
X
,
θ
)
Q
(
Z
)
d
Z
⏟
K
L
\underbrace{\int_{Z} Q(Z) \log \frac{P(X, Z | \theta)}{Q(Z)} d Z}_{E L B O}-\underbrace{\int_{Z} Q(Z) \log \frac{P(Z | X, \theta)}{Q(Z)} d Z}_{K L}
ELBO
∫ZQ(Z)logQ(Z)P(X,Z∣θ)dZ−KL
∫ZQ(Z)logQ(Z)P(Z∣X,θ)dZ
Evidence Lower Bound(ELBO),是一个下界,所以,
log
P
(
X
∣
θ
)
=
E
L
B
O
+
K
L
(
Q
∣
∣
P
)
\log P(X | \theta)=ELBO+KL(Q||P)
logP(X∣θ)=ELBO+KL(Q∣∣P)。其中,
P
(
Z
∣
X
,
θ
)
P(Z|X,\theta)
P(Z∣X,θ)为后验分布(Posterior)。并
且,KL 散度的值一定是大于零的。所以,
E
L
B
O
≤
l
o
g
P
(
X
,
θ
)
ELBO \leq log P(X,\theta)
ELBO≤logP(X,θ),当且仅当
P
(
Z
∣
X
,
θ
)
=
Q
(
Z
)
P(Z|X,\theta)= Q(Z)
P(Z∣X,θ)=Q(Z) 时等号成立。
EM 算法的一个想法就是想让ELBO 不断的增加,从而使
l
o
g
P
(
X
∣
θ
)
log P(X|\theta)
logP(X∣θ)不断的变大的一种攀爬的迭代方法。
那么,我们对下界进行优化,使下界尽可能的变大,就可以使目标函数不断的上升,那么我们可以得到:
θ
^
=
arg
max
θ
E
L
B
O
=
arg
max
θ
∫
Q
(
Z
)
log
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
d
Z
\hat{\theta}=\arg \max _{\theta} E L B O=\arg \max _{\theta} \int Q(Z) \log \frac{P(X, Z | \theta)}{Q(Z)} d Z
θ^=argθmaxELBO=argθmax∫Q(Z)logQ(Z)P(X,Z∣θ)dZ
因此,实际上也就是用ELBO去逼近
l
o
g
P
(
X
,
θ
)
log P(X,\theta)
logP(X,θ),寻找最合适的Q,如果要使得
E
L
B
O
=
l
o
g
P
(
X
,
θ
t
)
ELBO= log P(X,\theta^t)
ELBO=logP(X,θt),则需要
P
(
Z
∣
X
,
θ
t
)
=
Q
(
Z
)
P(Z|X,\theta^t)= Q(Z)
P(Z∣X,θt)=Q(Z) ,如何求
Q
(
Z
)
Q(Z)
Q(Z)见变分推断。
下面使用图来帮助理解EM 算法的一个核心:
在某一时刻
θ
t
\theta^t
θt,我们可以的得到一个关于
θ
\theta
θ 的函数:
log
P
(
X
∣
θ
(
t
)
)
=
∫
Z
Q
(
Z
)
log
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
d
Z
−
∫
Z
Q
(
Z
)
log
P
(
Z
∣
X
,
θ
(
t
)
)
Q
(
Z
)
d
Z
\log P\left(X | \theta^{(t)}\right)=\int_{Z} Q(Z) \log \frac{P(X, Z | \theta)}{Q(Z)} d Z-\int_{Z} Q(Z) \log \frac{P\left(Z | X, \theta^{(t)}\right)}{Q(Z)} d Z
logP(X∣θ(t))=∫ZQ(Z)logQ(Z)P(X,Z∣θ)dZ−∫ZQ(Z)logQ(Z)P(Z∣X,θ(t))dZ
由于想让ELBO更大,此时
l
o
g
P
(
X
∣
θ
t
)
logP(X|\theta^t)
logP(X∣θt)是一个定值,那么也就是想让KL 散度的值越小。所以,我们想让KL 散度的值为零,也就是让
Q
(
Z
)
=
P
(
X
∣
Z
,
θ
t
)
Q(Z) = P(X|Z,\theta^t)
Q(Z)=P(X∣Z,θt)。这一步实际上就是求
Q
(
Z
)
Q(Z)
Q(Z)的过程,在图上表示就是上面两幅图,使得ELBO与
l
o
g
P
(
X
∣
θ
)
logP(X|\theta)
logP(X∣θ)相交。这样我们在固定了
θ
t
\theta^t
θt
之后就得到了一个ELBO 关于
θ
\theta
θ 的函数。然后我们找到这个函数令值最大的
θ
t
+
1
\theta^{t+1}
θt+1后开始进行下一步迭代。
实际上我们的目的就是在不断的优化ELBO,使ELBO 不断的变大,那么我们想要的结果自然也就变大了,这是一个间接优化的方法。整个迭代算法的流程如下图:
那么
θ
^
=
arg
max
θ
∫
Q
(
Z
)
log
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
d
Z
=
arg
max
θ
∫
P
(
X
,
Z
∣
θ
(
t
)
)
log
P
(
X
,
Z
∣
θ
)
P
(
X
,
Z
∣
θ
(
t
)
)
d
Z
=
arg
max
θ
∫
P
(
X
,
Z
∣
θ
(
t
)
)
log
P
(
X
,
Z
∣
θ
)
−
P
(
X
,
Z
∣
θ
(
t
)
)
P
(
X
,
Z
∣
θ
(
t
)
)
d
Z
\begin{aligned} \hat{\theta} &=\arg \max _{\theta} \int Q(Z) \log \frac{P(X, Z | \theta)}{Q(Z)} d Z \\ &=\arg \max _{\theta} \int P\left(X, Z | \theta^{(t)}\right) \log \frac{P(X, Z | \theta)}{P\left(X, Z | \theta^{(t)}\right)} d Z \\ &=\arg \max _{\theta} \int P\left(X, Z | \theta^{(t)}\right) \log P(X, Z | \theta)-P\left(X, Z | \theta^{(t)}\right) P\left(X, Z | \theta^{(t)}\right) d Z \end{aligned}
θ^=argθmax∫Q(Z)logQ(Z)P(X,Z∣θ)dZ=argθmax∫P(X,Z∣θ(t))logP(X,Z∣θ(t))P(X,Z∣θ)dZ=argθmax∫P(X,Z∣θ(t))logP(X,Z∣θ)−P(X,Z∣θ(t))P(X,Z∣θ(t))dZ
由于
P
(
X
,
Z
∣
θ
(
t
)
)
P
(
X
,
Z
∣
θ
(
t
)
)
P\left(X, Z | \theta^{(t)}\right) P\left(X, Z | \theta^{(t)}\right)
P(X,Z∣θ(t))P(X,Z∣θ(t))与
θ
\theta
θ的求解无关。所以我们可以直接省略掉。那么下一步的
θ
t
+
1
\theta^{t+1}
θt+1的表达自然也就是:
θ
(
t
+
1
)
=
arg
max
θ
∫
Z
P
(
X
,
Z
∣
θ
(
t
)
)
log
P
(
X
,
Z
∣
θ
)
d
Z
=
arg
max
θ
E
Z
∼
P
(
Z
∣
X
,
θ
(
t
)
)
[
log
P
(
X
,
Z
∣
θ
)
]
\begin{aligned} \theta^{(t+1)} &=\arg \max _{\theta} \int_{Z} P\left(X, Z | \theta^{(t)}\right) \log P(X, Z | \theta) d Z \\ &=\arg \max _{\theta} \mathbb{E}_{Z \sim P\left(Z | X, \theta^{(t)}\right)}[\log P(X, Z | \theta)] \end{aligned}
θ(t+1)=argθmax∫ZP(X,Z∣θ(t))logP(X,Z∣θ)dZ=argθmaxEZ∼P(Z∣X,θ(t))[logP(X,Z∣θ)]
整个EM算法流程:
2.2 从Jensen Inequality 的角度进行分析
首先,我们介绍一下什么是Jensen Inequality。实际上,进行过一些机器学习理论研究的同学,都应该听说过这个概念。在这里我们做一个简述。首先我们需要保证函数是一个凸函数,下面我们来画一个凸函数:
那么对于一个
t
∈
[
0
,
1
]
,
c
=
t
a
+
(
1
−
t
)
b
t \in [0,1],c = ta + (1-t)b
t∈[0,1],c=ta+(1−t)b,我们都可以得到:
f
(
c
)
=
f
[
t
a
+
(
1
−
t
)
b
]
≥
t
f
(
a
)
+
(
1
−
t
)
f
(
b
)
f(c) = f[ta + (1 - t)b] \geq tf (a) + (1- t)f(b)
f(c)=f[ta+(1−t)b]≥tf(a)+(1−t)f(b)
当t = 1/2 时,我们可以得到:
f
(
(
a
+
b
)
2
)
≥
1
2
[
f
(
a
)
+
f
(
b
)
]
f
[
E
]
≥
E
[
f
]
f\left(\frac{(a+b)}{2}\right) \geq \frac{1}{2}[f(a)+f(b)] \quad f[E] \geq E[f]
f(2(a+b))≥21[f(a)+f(b)]f[E]≥E[f]也就是均值的函数大于函数值的均值
所以,我们可以利用Jensen Inequality 进行推导:
log
P
(
X
∣
θ
)
=
log
∫
z
P
(
X
,
Z
∣
θ
)
d
Z
=
log
∫
z
Q
(
Z
)
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
d
Z
=
log
E
Z
∼
Q
(
Z
)
[
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
]
≥
E
Z
∼
Q
(
Z
)
[
log
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
]
\begin{aligned} \log P(X | \theta) &=\log \int_{z} P(X, Z | \theta) d Z \\ &=\log \int_{z} Q(Z) \frac{P(X, Z | \theta)}{Q(Z)} d Z \\ &=\log \mathbb{E}_{Z \sim Q(Z)}\left[\frac{P(X, Z | \theta)}{Q(Z)}\right] \\ & \geq \mathbb{E}_{Z \sim Q(Z)}\left[\log \frac{P(X, Z | \theta)}{Q(Z)}\right] \end{aligned}
logP(X∣θ)=log∫zP(X,Z∣θ)dZ=log∫zQ(Z)Q(Z)P(X,Z∣θ)dZ=logEZ∼Q(Z)[Q(Z)P(X,Z∣θ)]≥EZ∼Q(Z)[logQ(Z)P(X,Z∣θ)]
根据Jensen Inequality 的定义,当
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
=
C
\frac{P(X, Z | \theta)}{Q(Z)}=C
Q(Z)P(X,Z∣θ)=C时可以取得等号。毫无疑问,当我们取等时,可以达到最大。所以有,
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
=
C
Q
(
Z
)
=
1
C
P
(
X
,
Z
∣
θ
)
∫
Z
Q
(
Z
)
d
Z
=
1
C
∫
Z
P
(
X
,
Z
∣
θ
)
d
Z
1
=
1
C
P
(
X
∣
θ
)
\begin{array}{c} \frac{P(X, Z | \theta)}{Q(Z)}=C \\ \\ Q(Z)=\frac{1}{C} P(X, Z | \theta) \\ \\ \int_{Z} Q(Z) d Z=\frac{1}{C} \int_{Z} P(X, Z | \theta) d Z \\ \\ 1=\frac{1}{C} P(X | \theta) \end{array}
Q(Z)P(X,Z∣θ)=CQ(Z)=C1P(X,Z∣θ)∫ZQ(Z)dZ=C1∫ZP(X,Z∣θ)dZ1=C1P(X∣θ)
所以,我们就可以得到:
Q
(
Z
)
=
P
(
X
,
Z
∣
θ
)
P
(
X
∣
θ
)
=
P
(
Z
∣
X
,
θ
)
Q(Z)=\frac{P(X, Z | \theta)}{P(X|\theta)}=P(Z| X, \theta)
Q(Z)=P(X∣θ)P(X,Z∣θ)=P(Z∣X,θ)
所以,大家有没有惊奇的发现,这个Q(Z) 实际上就是Posterior。当时我们随便引入的一个分布Q(Z),没想到当它取等的时候就是后验分布。那么像不断去优化这个ELBO,从而使得
P
(
X
∣
θ
)
P(X|\theta)
P(X∣θ)的值不断的增加。由于,我们是迭代式的上升,这里的
P
(
Z
∣
X
,
θ
t
)
P(Z| X, \theta^t)
P(Z∣X,θt),而
θ
t
\theta^t
θt 是上一次迭代得到的,我们可以认为是一个常数。所以,
E
Z
∼
Q
(
Z
)
[
log
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
]
=
E
Z
∼
Q
(
Z
)
[
log
P
(
X
,
Z
∣
θ
)
P
(
Z
∣
X
,
θ
(
t
)
)
]
\begin{array}{c} \mathbb{E}_{Z \sim Q(Z)}\left[\log \frac{P(X, Z | \theta)}{Q(Z)}\right]=\mathbb{E}_{Z \sim Q(Z)}\left[\log \frac{P(X, Z | \theta)}{P\left(Z | X, \theta^{(t)}\right)}\right] \end{array}
EZ∼Q(Z)[logQ(Z)P(X,Z∣θ)]=EZ∼Q(Z)[logP(Z∣X,θ(t))P(X,Z∣θ)]
所以
θ
(
t
+
1
)
=
arg
max
θ
E
Z
∼
Q
(
Z
)
[
log
P
(
X
,
Z
∣
θ
)
P
(
Z
∣
X
,
θ
(
t
)
)
]
\begin{array}{c} \theta^{(t+1)}=\arg \max _{\theta} \mathbb{E}_{Z \sim Q(Z)}\left[\log \frac{P(X, Z | \theta)}{P\left(Z | X, \theta^{(t)}\right)}\right] \end{array}
θ(t+1)=argmaxθEZ∼Q(Z)[logP(Z∣X,θ(t))P(X,Z∣θ)]所以,从Jensen Inequality 的角度,我们仍然可以得到EM 算法的核心表达式。
2.3 小结
在最后,我们再来来梳理一下EM 算法的实现思想。我们的目标是想使 P ( X ∣ θ ) P(X|\theta) P(X∣θ)似然函数值最大。但是,很不幸,我们直接优化非常的难。所以,我们想到了一个优化下降的方法。对于,每一个 θ t \theta^t θt 时,我们可以计算得到下界为: E Z ∼ Q ( Z ) [ log P ( X , Z ∣ θ ) P ( Z ∣ X , θ ( t ) ) ] \mathbb{E}_{Z \sim Q(Z)}\left[\log \frac{P(X, Z | \theta)}{P\left(Z | X, \theta^{(t)}\right)}\right] EZ∼Q(Z)[logP(Z∣X,θ(t))P(X,Z∣θ)]。这个值最大我们就得到了,想要求得的 θ t + 1 \theta^{t+1} θt+1。然后,按这个思路,不断的进行迭代。
3 广义EM
本小节中,我们想要介绍三个方便的知识点。1. 从狭义的EM 算法推广到广义的EM 算法;2.狭义的EM 实际上只是广义的EM 的一个特例;3. 真正的开始介绍EM 算法。
X
:
X:
X: Observed Variable
⟶
X
=
{
x
i
}
i
=
1
N
\longrightarrow X=\left\{x_{i}\right\}_{i=1}^{N}
⟶X={xi}i=1N
Z
:
Z:
Z: Latent Variable
⟶
Z
=
{
Z
i
}
i
=
1
N
\longrightarrow Z=\left\{Z_{i}\right\}_{i=1}^{N}
⟶Z={Zi}i=1N
(
X
,
Z
)
:
(X, Z):
(X,Z): Complete Model
θ
:
\theta:
θ: Model Parameter
我们希望得到一个参数
θ
\theta
θ,可以来推导出X,也就是
P
(
X
∣
θ
)
P(X|\theta)
P(X∣θ)。而这个参数怎么求得呢?所以,这就是一个learning 的问题了。
3.1 极大似然估计
所以,根据极大似然估计法的思路,我们要求的最优化参数
θ
^
\hat{\theta}
θ^ 为:
θ
^
=
arg
max
θ
P
(
X
∣
θ
)
=
arg
max
θ
∏
i
=
1
N
P
(
x
i
∣
θ
)
=
arg
max
θ
∑
i
=
1
N
log
P
(
x
i
∣
θ
)
\begin{aligned} \hat{\theta} &=\arg \max _{\theta} P(X | \theta) \\ &=\arg \max _{\theta} \prod_{i=1}^{N} P\left(x_{i} | \theta\right) \\ &=\arg \max _{\theta} \sum_{i=1}^{N} \log P\left(x_{i} | \theta\right) \end{aligned}
θ^=argθmaxP(X∣θ)=argθmaxi=1∏NP(xi∣θ)=argθmaxi=1∑NlogP(xi∣θ)
好像,我们这样做就可以解决问题了呀。为什么要多此一举的来引入隐变量Z 呢?这是因为,我们实际观察的输入空间
X
\mathcal{X}
X 的分布
P
(
X
)
P(X)
P(X),是非常复杂的。可能什么规律都找不出来,这时我们就想到了一个很好的解决办法。我们引入了一个隐变量
Z
Z
Z,这个变量中包含了我们自己的一些归纳总结,引入了内部结构。而
P
(
X
)
=
∫
Z
P
(
X
,
Z
)
d
Z
P(X)=\int_{Z} P(X, Z) d Z
P(X)=∫ZP(X,Z)dZ,,实际上就是对X 进行了分解处理。
3.2 广义的EM 算法
EM 算法是为了解决参数估计问题,也就是learning 问题:
θ
^
=
arg
max
θ
P
(
X
∣
θ
)
\hat{\theta}=\arg \max _{\theta} P(X | \theta)
θ^=argθmaxP(X∣θ)
但是,
P
(
X
∣
θ
)
P(X | \theta)
P(X∣θ)可能会非常的复杂。那么,在生成模型的思路中,可以假设一个隐变量Z。有了这个生成模型的假设以后,我们就可以引入一些潜在归纳出的结构进去。通过
P
(
X
)
=
P
(
X
,
Z
)
P
(
Z
∣
X
)
P(X)=\frac{P(X, Z)}{P(Z | X)}
P(X)=P(Z∣X)P(X,Z),就可以把问题具体化了。
这里说明一下,我们习惯用的表达是
P
(
X
∣
θ
)
P(X | \theta)
P(X∣θ),但是也有的文献中使用
P
(
X
;
θ
)
P(X ; \theta)
P(X;θ)或者
P
θ
(
X
)
P_{ \theta}(X)
Pθ(X)。这三种表达方式代表的意义是等价的。
前面我们已经说过了,我们的目标是:
log
P
(
X
∣
θ
)
=
E
L
B
O
⏟
L
(
Q
,
θ
)
+
K
L
(
Q
∥
P
)
≥
L
(
Q
,
θ
)
{
E
L
B
O
=
∫
Z
Q
(
Z
)
log
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
d
Z
K
L
(
Q
∥
P
)
=
∫
Z
Q
(
Z
)
log
Q
(
Z
)
P
(
Z
∣
X
,
θ
)
d
Z
\begin{array}{l} \log P(X | \theta)=\underbrace{E L B O}_{L(Q, \theta)}+K L(Q \| P) \geq L(Q, \theta) \\ \left\{\begin{array}{l} E L B O=\int_{Z} Q(Z) \log \frac{P(X, Z | \theta)}{Q(Z)} d Z \\ K L(Q \| P)=\int_{Z} Q(Z) \log \frac{Q(Z)}{P(Z | X, \theta)} d Z \end{array}\right. \end{array}
logP(X∣θ)=L(Q,θ)
ELBO+KL(Q∥P)≥L(Q,θ){ELBO=∫ZQ(Z)logQ(Z)P(X,Z∣θ)dZKL(Q∥P)=∫ZQ(Z)logP(Z∣X,θ)Q(Z)dZ
但是,问题马上就上来了,那就是
P
(
X
∣
θ
)
P(X | \theta)
P(X∣θ)非常有可能求不出来。那么我们怎么来求解这个方程呢?也就是使下界变得更大。
首先第一步,我们把
θ
\theta
θ给固定住。那么,
P
(
Z
∣
X
,
θ
)
P(Z|X, \theta)
P(Z∣X,θ) 的结果就是一个定值。那么KL 越小,ELBO就会越大。由于,Q(Z) 是我们引入的一个中间变量,那么我们的第一步就是得到:
Q
^
(
Z
)
=
arg
min
Q
K
L
(
Q
∥
P
)
=
arg
max
Q
L
(
Q
,
θ
)
\hat{Q}(Z)=\arg \min _{Q} K L(Q \| P)=\arg \max _{Q} L(Q, \theta)
Q^(Z)=argQminKL(Q∥P)=argQmaxL(Q,θ)
当Q 被我们求出来以后,我们就可以将Q 固定了,再来求解
θ
\theta
θ:
θ
^
=
arg
max
θ
L
(
q
^
,
θ
)
\hat{\theta}=\arg \max _{\theta} L(\hat{q}, \theta)
θ^=argθmaxL(q^,θ)
那么,广义的EM 算法,就可以被我们定义为:
E
−
step
:
Q
(
t
+
1
)
=
arg
max
Q
L
(
Q
(
Z
)
,
θ
(
t
)
)
M
−
step
:
θ
(
t
+
1
)
=
arg
max
θ
L
(
Q
(
Z
)
(
t
+
1
)
,
θ
)
L
(
Q
,
θ
)
=
E
Q
[
log
P
(
X
,
Z
)
−
log
Q
]
=
E
Q
[
log
P
(
X
,
Z
)
]
−
E
Q
[
log
Q
]
\begin{array}{l} E-\text {step}: Q^{(t+1)}=\arg \max _{Q} L\left(Q(Z), \theta^{(t)}\right) \\ M-\text {step}: \quad \theta^{(t+1)}=\arg \max _{\theta} L\left(Q(Z)^{(t+1)}, \theta\right) \\ L(Q, \theta)=\mathbb{E}_{Q}[\log P(X, Z)-\log Q]=\mathbb{E}_{Q}[\log P(X, Z)]-\mathbb{E}_{Q}[\log Q] \end{array}
E−step:Q(t+1)=argmaxQL(Q(Z),θ(t))M−step:θ(t+1)=argmaxθL(Q(Z)(t+1),θ)L(Q,θ)=EQ[logP(X,Z)−logQ]=EQ[logP(X,Z)]−EQ[logQ]
看到这里,我估计大家已经可以理解上一小节中,为什么有的
θ
\theta
θ带(t) 有的不带。因为,首先第一步中是固定
θ
\theta
θ 求Q,这里的
θ
\theta
θ 就是来自于上一次迭代的
θ
t
+
1
\theta^{t+1}
θt+1。第二次,是将上一步求得的Q 固定,将
θ
\theta
θ 看成参数,来求最优的表达结果的
θ
t
+
1
\theta^{t+1}
θt+1。另一个方面,从上面的第三个公式,我们可以看出实际上:
E
L
B
O
=
E
Q
(
Z
)
[
log
P
(
X
,
Z
∣
θ
)
]
+
H
(
Q
(
Z
)
)
E L B O=\mathbb{E}_{Q(Z)}[\log P(X, Z | \theta)]+H(Q(Z))
ELBO=EQ(Z)[logP(X,Z∣θ)]+H(Q(Z))
我们对比一下上一节讲到的EM 算法,就会惊奇的发现,ELBO 中最后那个H(Q(Z)) (就是熵,
H
(
P
)
=
E
[
−
l
o
g
P
]
H(P)=E[-logP]
H(P)=E[−logP])竟然不见了。这是为什么呢?其实也很好理解的。因为在M-step 中,我们假定Q(Z) 已经是固定的了,那么显然H[Q(Z)] 就是一个定值了,并且与我们的优化目标
θ
\theta
θ之间并没有任何的关系,所以就被我们给省略掉了。
所以,本小节中引出了广义EM 算法,也说明了原来的EM 算法是广义EM 算法的一种特殊情况。
3.3 坐标上升法
EM 算法的整体描述如下所示:
{
E
−
step
:
Q
(
t
+
1
)
=
arg
max
Q
L
(
Q
(
Z
)
,
θ
(
t
)
)
M
−
step
:
θ
(
t
+
1
)
=
arg
max
θ
L
(
Q
(
Z
)
(
t
+
1
)
,
θ
)
\left\{\begin{array}{ll} E-\text {step}: & Q^{(t+1)}=\arg \max _{Q} L\left(Q(Z), \theta^{(t)}\right) \\ M-\text {step}: & \theta^{(t+1)}=\arg \max _{\theta} L\left(Q(Z)^{(t+1)}, \theta\right) \end{array}\right.
{E−step:M−step:Q(t+1)=argmaxQL(Q(Z),θ(t))θ(t+1)=argmaxθL(Q(Z)(t+1),θ)
这个坐标上升法(SMO) 是个什么东西呢?具体的描述,大家可以去网上找找资料看一看。两者都是迭代的思路,在这里我们将它和梯度下降法的优化思路放在一起,做一个小小的对比。大家就会发现有什么不一样的地方,
我们发现坐标上升法的优化方向基本是恒定不变的,而梯度下降法的优化方向是随着梯度方向而不断发生改变的。
讲到这里,好像一切都很完美,可以圆满的结束了。但是,很不幸的是,问题马上又来了。因为,现实生活中,并没有那么的容易,一切都没有我们想的那么的简单。实际上,有关
P
(
Z
∣
X
,
θ
)
P(Z|X,\theta)
P(Z∣X,θ) 的计算,有可能会非常的复杂。所以,我们将采用变分推断(Variable Inference) 或者马尔可夫蒙特卡罗采样
(Markov Chain Monte Carlo) 的方法来求解。结合起来以后就是VBEM/VEM 和MCEM。这里注意一下,Variable Inference 和Variable Bayes 实际上都是一种东西。
当然,虽然EM 算法看上去好像很厉害的样子。但是,没有一种算法可以一劳永逸的解决所有的问题。它一定存在优点,也一定有无法解决的问题。具体描述,大家可以去网上寻找相关的资料.