EM 算法,全称 Expectation Maximization Algorithm。期望最大算法是一种迭代算法,用于含有隐变量(Hidden Variable)的概率参数模型的最大似然估计或极大后验概率估计。
我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。
怎么办呢?这就是EM算法可以派上用场的地方了。
从上面的描述可以看出,EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。
当然,K-Means算法是比较简单的,实际中的问题往往没有这么简单。接下来我们需要用数学的语言精准描述。

对于
M
M
M个样本数据
X
=
{
x
1
,
x
2
,
x
3
,
.
.
.
x
M
}
X = \{ x_1, x_2, x_3,... \ x_M \}
X={x1,x2,x3,... xM},找出样本的模型参数
θ
\theta
θ,极大化模型分布的对数似然函数如下:
θ
∗
=
arg
max
θ
∑
i
=
1
M
log
P
θ
(
x
i
)
θ∗=argmaxθM∑i=1logPθ(xi)
假设我们得到的观察数据,含有有未观察到的隐含数据:
C
=
{
c
1
,
c
2
,
c
3
,
.
.
.
z
K
}
C = \{ c_1, c_2, c_3,... \ z_K \}
C={c1,c2,c3,... zK},此时我们的极大化模型分布的对数似然函数如下:
θ
∗
=
arg
max
θ
∑
i
=
1
M
log
P
θ
(
x
i
)
=
arg
max
θ
∑
i
=
1
M
log
∑
k
=
1
K
P
θ
(
x
i
,
c
k
)
θ∗=argmaxθM∑i=1logPθ(xi)=argmaxθM∑i=1logK∑k=1Pθ(xi,ck)
上面这个式子是没有 办法直接求出
θ
\theta
θ 的。因此需要一些特殊的技巧,我们首先对这个式子进行缩放如下:
∑
i
=
1
M
log
∑
k
=
1
K
P
θ
(
x
i
,
c
k
)
=
∑
i
=
1
M
log
∑
k
=
1
K
Q
(
c
k
)
P
θ
(
x
i
,
c
k
)
Q
(
c
k
)
≥
∑
i
=
1
M
∑
k
=
1
K
Q
(
c
k
)
log
P
θ
(
x
i
,
c
k
)
Q
(
c
k
)
M∑i=1logK∑k=1Pθ(xi,ck)=M∑i=1logK∑k=1Q(ck)Pθ(xi,ck)Q(ck)≥M∑i=1K∑k=1Q(ck)logPθ(xi,ck)Q(ck)
上面 (3) 式引入了一个未知的新的分布,
Q
(
c
)
Q(c)
Q(c),(4)式用到了Jensen不等式:
log
∑
j
q
j
x
j
≥
∑
j
q
j
log
x
j
log∑jqjxj≥∑jqjlogxj
具体来说,由于对数函数是凹函数,所以有:
f
(
E
(
x
)
)
≥
E
(
f
(
x
)
)
,如果
f
(
x
)
是凹函数(如果是凸函数,则:
≤
)
f(E(x))≥E(f(x)),如果 f(x) 是凹函数(如果是凸函数,则:≤)
此时如果要满足Jensen不等式的等号,则有:
P
θ
(
x
i
,
c
k
)
Q
(
c
k
)
=
t
,
t
为常数
Pθ(xi,ck)Q(ck)=t,t为常数
由于
Q
(
c
)
Q(c)
Q(c)是一个分布,所以:
∑
k
=
1
K
Q
(
c
k
)
=
1
K∑k=1Q(ck)=1
从上面两式,我们可以得到:
Q
(
c
k
)
=
P
θ
(
x
i
,
c
k
)
∑
k
=
1
K
P
θ
(
x
i
,
c
k
)
=
P
θ
(
x
i
,
c
k
)
P
θ
(
x
i
)
=
P
θ
(
c
k
∣
x
i
)
Q(ck)=Pθ(xi,ck)∑Kk=1Pθ(xi,ck)=Pθ(xi,ck)Pθ(xi)=Pθ(ck|xi)
因此,如果
Q
(
c
k
)
=
P
θ
(
c
k
∣
x
i
)
Q(c_k) = P_{\theta}(c_k|x_i)
Q(ck)=Pθ(ck∣xi),则 (4)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,也就意味着可以极大化我们的对数似然。即我们需要最大化下式:
arg max
θ
∑
i
=
1
M
∑
k
=
1
K
Q
(
c
k
)
log
P
θ
(
x
i
,
c
k
)
Q
(
c
k
)
\argmaxθM∑i=1K∑k=1Q(ck)logPθ(xi,ck)Q(ck)
去掉上式中为常数的部分,由于上式中
0
≤
Q
(
c
k
)
≤
1
0 \leq Q(c_k) \leq 1
0≤Q(ck)≤1,则我们需要极大化的对数似然下界为,
arg max
θ
∑
i
=
1
M
∑
k
=
1
K
Q
(
c
k
)
log
P
θ
(
x
i
,
c
k
)
\argmaxθM∑i=1K∑k=1Q(ck)logPθ(xi,ck)
上式也就是我们的EM算法的M步,那E步呢?注意到上式中
Q
(
c
k
)
Q(c_k)
Q(ck) 是一个分布,因此
∑
k
=
1
K
Q
(
c
k
)
log
P
θ
(
x
i
,
c
k
)
\sum_{k=1}^{K} Q(c_k) \log P_{\theta}(x_i, c_k)
∑k=1KQ(ck)logPθ(xi,ck) 可以理解为
log
P
θ
(
x
i
,
c
k
)
\log P_{\theta}(x_i, c_k)
logPθ(xi,ck) 基于条件概率分布
Q
(
c
k
)
Q(c_k)
Q(ck) 的一个期望。
至此,我们理解了EM算法中E步和M步的具体数学含义。
要证明EM算法收敛,则我们需要证明我们的对数似然函数的值在迭代的过程中一直在增大。即:
log
P
θ
s
+
1
(
x
i
)
≥
log
P
θ
s
(
x
i
)
logPθs+1(xi)≥logPθs(xi)
由于,
L
(
θ
,
θ
s
)
=
∑
i
=
1
M
∑
k
=
1
K
P
θ
s
(
c
k
∣
x
i
)
log
P
θ
(
x
i
,
c
k
)
…
…
注:
Q
(
c
k
)
=
P
θ
s
(
c
k
∣
x
i
)
L(θ,θs)=M∑i=1K∑k=1Pθs(ck|xi)logPθ(xi,ck)……注:Q(ck)=Pθs(ck|xi)
令:
H
(
θ
,
θ
s
)
=
∑
i
=
1
M
∑
k
=
1
K
P
θ
s
(
c
k
∣
x
i
)
log
P
θ
(
c
k
∣
x
i
)
H(θ,θs)=M∑i=1K∑k=1Pθs(ck|xi)logPθ(ck|xi)
上两式相减得到:
L
(
θ
,
θ
s
)
−
H
(
θ
,
θ
s
)
=
∑
i
=
1
M
∑
k
=
1
K
P
θ
s
(
c
k
∣
x
i
)
log
P
θ
(
x
i
,
c
k
)
P
θ
(
c
k
∣
x
i
)
=
∑
i
=
1
M
∑
k
=
1
K
P
θ
s
(
c
k
∣
x
i
)
log
P
θ
(
x
i
)
…
…
P
θ
s
(
c
k
∣
x
i
)
已知,且和为
1
=
∑
i
=
1
M
log
P
θ
(
x
i
)
L(θ,θs)−H(θ,θs)=M∑i=1K∑k=1Pθs(ck|xi)logPθ(xi,ck)Pθ(ck|xi)=M∑i=1K∑k=1Pθs(ck|xi)logPθ(xi)……Pθs(ck|xi)已知,且和为1=M∑i=1logPθ(xi)
在上式最后得到式子中,
θ
\theta
θ 分别取
θ
s
\theta^{s}
θs 和
θ
s
+
1
\theta^{s+1}
θs+1,并相减得到:
∑
i
=
1
M
log
P
θ
s
+
1
(
x
i
)
−
∑
i
=
1
M
log
P
θ
s
(
x
i
)
=
[
L
(
θ
s
+
1
,
θ
s
)
−
L
(
θ
s
,
θ
s
)
]
−
[
H
(
θ
s
+
1
,
θ
s
)
−
H
(
θ
s
,
θ
s
)
]
M∑i=1logPθs+1(xi)−M∑i=1logPθs(xi)=[L(θs+1,θs)−L(θs,θs)]−[H(θs+1,θs)−H(θs,θs)]
要证明EM算法的收敛性,我们只需要证明上式的右边是非负的即可。由于
θ
s
+
1
\theta^{s+1}
θs+1 使
L
(
θ
,
θ
s
)
L(\theta, \theta^s)
L(θ,θs) 极大,因此有:
L
(
θ
s
+
1
,
θ
s
)
−
L
(
θ
s
,
θ
s
)
≥
0
L(θs+1,θs)−L(θs,θs)≥0
而对于第二部分,我们有:
H
(
θ
s
+
1
,
θ
s
)
−
H
(
θ
s
,
θ
s
)
=
∑
i
=
1
M
∑
k
=
1
K
P
θ
s
(
c
k
∣
x
i
)
log
P
θ
s
+
1
(
c
k
∣
x
i
)
P
θ
s
(
c
k
∣
x
i
)
≤
∑
i
=
1
M
log
∑
k
=
1
K
P
θ
s
(
c
k
∣
x
i
)
P
θ
s
+
1
(
c
k
∣
x
i
)
P
θ
s
(
c
k
∣
x
i
)
=
∑
i
=
1
M
log
∑
k
=
1
K
P
θ
s
+
1
(
c
k
∣
x
i
)
=
0
H(θs+1,θs)−H(θs,θs)=M∑i=1K∑k=1Pθs(ck|xi)logPθs+1(ck|xi)Pθs(ck|xi)≤M∑i=1logK∑k=1Pθs(ck|xi)Pθs+1(ck|xi)Pθs(ck|xi)=M∑i=1logK∑k=1Pθs+1(ck|xi)=0
其中(25)式用到了Jensen不等式,只不过和第二节的使用相反而已,第(26)式用到了概率分布累积为1的性质。至此,我们便得到了:
log
P
θ
s
+
1
(
x
i
)
−
log
P
θ
s
(
x
i
)
≥
0
logPθs+1(xi)−logPθs(xi)≥0
进而证明了EM算法的收敛性。
从上面的推导不难看出,EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标 L ( θ , θ s ) L(\theta, \theta^s) L(θ,θs) 是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。
如果我们从算法思想的角度来思考EM算法,我们可以发现:
比较下其他的机器学习算法,其实很多算法都有类似的思想。比如SMO算法(支持向量机原理(四)SMO算法原理),坐标轴下降法(Lasso回归算法: 坐标轴下降法与最小角回归法小结),都使用了类似的思想来求解问题。
【1】http://www.cnblogs.com/pinard/p/6912636.html