“种一棵树最好的时间是十年前,其次是现在”
EM算法,Expectation-Maximization,期望最大算法。EM算法用于解决包含隐变量的参数估计问题。
1 Jensen不等式
设f是定义域为实数的函数,如果对于所有的实数x, f ′ ′ ( x ) ≥ 0 f^{''}(x) \geq 0 f′′(x)≥0,那么f是凸函数。当x是向量时,如果其Hessian矩阵H是半正定的( H ≥ 0 H \geq 0 H≥0),那么f是凸函数。如果 f ′ ′ ( x ) > 0 f^{''}(x) > 0 f′′(x)>0或 H > 0 H > 0 H>0,那么称f是严格的凸函数。
Jensen不等式如下表述:
如果f是凸函数,X是随机变量,那么
E
(
f
(
x
)
)
≥
f
(
E
(
X
)
)
E(f(x)) \geq f(E(X))
E(f(x))≥f(E(X))
特别地,如果f是严格凸函数,那么
E
(
f
(
X
)
)
=
f
(
E
(
X
)
)
E(f(X)) = f(E(X))
E(f(X))=f(E(X))当且仅当
p
(
x
=
E
(
x
)
)
=
1
p(x = E(x)) = 1
p(x=E(x))=1,也就是x是常量。
当f是(严格)凸函数当且仅当-f是(严格)凸函数。
当Jensen不等式应用于凹函数时,不等式反号,即
E
[
f
(
X
)
]
≤
f
(
E
[
X
]
)
E[f(X)] \leq f(E[X])
E[f(X)]≤f(E[X])。
2 EM算法
给定训练样本集
{
x
1
,
x
2
,
⋯
 
,
x
m
}
\{x_1,x_2,\cdots,x_m\}
{x1,x2,⋯,xm},样例间相互独立,我们的目的是找到每个样例的隐含类别z,从而能够使得
p
(
x
,
z
)
p(x,z)
p(x,z)最大。p(x,z)的最大似然估计为:
l
(
θ
)
=
∑
i
=
1
m
log
p
(
x
;
θ
)
=
∑
i
=
1
m
log
∑
z
p
(
x
,
z
;
θ
)
l(\theta) = \sum_{i=1}^{m} \log p(x;\theta) \\ =\sum_{i=1}^{m}\log \sum_z p(x,z;\theta)
l(θ)=i=1∑mlogp(x;θ)=i=1∑mlogz∑p(x,z;θ)
第一步是对极大似然求对数,第二步是对每个样例的每个可能类别z求联合概率分布。但是因为有隐变量z的存在,直接求解参数
θ
\theta
θ一般比较困难。在确定了隐变量z之后,求解参数
θ
\theta
θ就比较容易了。
EM算法是一种解决存在隐含变量的优化问题的有效方法。既然不能直接最大化 l ( θ ) l(\theta) l(θ),那么我们可以不断的建立函数l的下界(E步),然后在M步中不断的优化该下界。
对于每一个样例i,我们假设分布 Q i Q_i Qi表示样例隐含的类别的分布,那么有 Q i ( z ) ≥ 0 , ∑ z Q i ( z ) = 1 Q_i (z)\geq 0,\sum_zQ_i(z) = 1 Qi(z)≥0,∑zQi(z)=1。
对于上面介绍的最大似然估计,有:
(1)
∑
i
log
p
(
x
(
i
)
;
θ
)
=
∑
i
log
∑
z
(
i
)
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
=
∑
i
log
∑
z
(
i
)
Q
i
(
z
(
i
)
)
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
≥
∑
i
∑
z
(
i
)
Q
i
(
z
(
i
)
)
log
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
\sum_i \log p(x^{(i)};\theta) = \sum_i \log \sum_{z^{(i)}} p(x^{(i)},z^{(i)};\theta) \\ = \sum_i \log \sum_{z^{(i)}} Q_i(z^{(i)})\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \\ \geq \sum_i\sum_{z^{(i)}}Q_i(z^{(i)})\log \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \tag{1}
i∑logp(x(i);θ)=i∑logz(i)∑p(x(i),z(i);θ)=i∑logz(i)∑Qi(z(i))Qi(z(i))p(x(i),z(i);θ)≥i∑z(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)(1)
上式的最后一个不等号式子是利用了Jensen不等式,因为log函数的二阶导数恒小于0,为凹函数。而且 ∑ z ( i ) Q i ( z ( i ) ) p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) \sum_{z^{(i)}} Q_i(z^{(i)})\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} ∑z(i)Qi(z(i))Qi(z(i))p(x(i),z(i);θ)为 p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} Qi(z(i))p(x(i),z(i);θ)的期望。基于Jensen不等式可得最后一个式子。
补充知识:
X为离散型随机变量,它的分布律
P
(
X
=
x
k
)
=
p
k
,
k
=
1
,
2
,
⋯
P(X = x_k) = p_k,k=1,2,\cdots
P(X=xk)=pk,k=1,2,⋯。若
∑
k
=
1
∞
g
(
x
k
)
p
k
\sum_{k=1}^{\infty}g(x_k)p_k
∑k=1∞g(xk)pk绝对收敛,则有
E
(
Y
)
=
E
[
g
(
X
)
]
=
∑
k
=
1
∞
g
(
x
k
)
p
k
E(Y) = E[g(X)] = \sum_{k=1}^{\infty}g(x_k)p_k
E(Y)=E[g(X)]=k=1∑∞g(xk)pk
上述等式(1)可以看作是对 l ( θ ) l(\theta) l(θ)求了下界。对于 Q i Q_i Qi的选择,有多种可能,哪个更好呢?假设 θ \theta θ已经给定,那么 l ( θ ) l(\theta) l(θ)的值就取决于 Q i ( z ( i ) ) 和 p ( x ( i ) , z ( i ) ) Q_i(z^{(i)})和p(x^{(i)},z^{(i)}) Qi(z(i))和p(x(i),z(i)),我们可以通过调整这两个概率值使得下界不断上升,以逼近 l ( θ ) l(\theta) l(θ)的最大值,那么什么时候算是调整好了呢?结果就是使得式子(1)中的不等式变成等号的时候。那么在什么时候等式成立呢,按照第一部分对Jensen不等式的阐述可知,只有在变量为常数的时候等号才成立。即 p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) = c \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} = c Qi(z(i))p(x(i),z(i);θ)=c。
由于
∑
z
Q
i
(
z
(
i
)
)
=
1
\sum_zQ_i(z^{(i)}) = 1
∑zQi(z(i))=1,那么也就有
∑
z
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
=
c
\sum_zp(x^{(i)},z^{(i)};\theta) = c
∑zp(x(i),z(i);θ)=c(因为多个分子分母相加不变,那么认为每个样例的两个概率比值都是c),因此有:
Q
i
(
z
(
i
)
)
=
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
∑
z
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
=
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
p
(
x
(
i
)
;
θ
)
=
p
(
z
(
i
)
∣
x
(
i
)
;
θ
)
Q_i(z^{(i)}) = \frac{p(x^{(i)},z^{(i)};\theta)}{\sum_z p(x^{(i)},z^{(i)};\theta)} \\= \frac{p(x^{(i)},z^{(i)};\theta)}{p(x^{(i)};\theta)} \\ = p(z^{(i)}|x^{(i)};\theta)
Qi(z(i))=∑zp(x(i),z(i);θ)p(x(i),z(i);θ)=p(x(i);θ)p(x(i),z(i);θ)=p(z(i)∣x(i);θ)
至此,我们推导出了,在固定其他参数的情况下, Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))的计算公式就是后验概率,解决了 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))如何选择的问题。这一步就是E步,建立似然函数 l ( θ ) l(\theta) l(θ)的下界。接下来就是M步,就是在给定 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))后,调整 θ \theta θ,去极大化 l ( θ ) l(\theta) l(θ)的下界。
一般EM算法的步骤如下:
循环直至收敛{
(E步)对于每一个样本i,计算:
Q
i
(
z
(
i
)
)
:
=
p
(
z
(
i
)
∣
x
(
i
)
;
θ
)
Q_i(z^{(i)}) := p(z^{(i)}|x^{(i)};\theta)
Qi(z(i)):=p(z(i)∣x(i);θ)
(M步)计算
θ
:
=
a
r
g
m
a
x
θ
∑
i
∑
z
(
i
)
Q
i
(
z
(
i
)
)
log
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
\theta := arg~max_{\theta}\sum_i\sum_{z^{(i)}}Q_i(z^{(i)})\log \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}
θ:=arg maxθi∑z(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)
}
EM算法收敛性证明:
上面已经说明了EM算法的E步是建立似然函数
l
(
θ
)
l(\theta)
l(θ)的下界,M步是调整参数去极大化
l
(
θ
)
l(\theta)
l(θ)的下界。那么我们该如何保证EM算法一定可以收敛呢?
假定 θ ( t ) \theta^{(t)} θ(t)和 θ ( t + 1 ) \theta^{(t+1)} θ(t+1)是EM算法第t次和第t+1次迭代后的结果,如果能够证明 l ( θ ( t ) ) ≤ l ( θ ( t + 1 ) ) l(\theta^{(t)}) \leq l(\theta^{(t+1)}) l(θ(t))≤l(θ(t+1)),那么就证明了似然函数可以单调增加,那么经过多轮迭代后一定可以得到最大似然估计的最大值。
下面进行证明过程:
选定参数
θ
(
t
)
\theta^{(t)}
θ(t)后,我们就得到了E步:
Q
i
(
z
(
i
)
)
:
=
p
(
z
(
i
)
∣
x
(
i
)
;
θ
(
t
)
)
Q_i(z^{(i)}) := p(z^{(i)}|x^{(i)};\theta^{(t)})
Qi(z(i)):=p(z(i)∣x(i);θ(t))
这一步保证了在给定了
θ
(
t
)
\theta^{(t)}
θ(t)时,Jensen不等式的等号成立,即
l
(
θ
(
t
)
)
=
∑
i
∑
z
(
i
)
Q
i
(
z
(
i
)
)
log
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
l(\theta^{(t)}) = \sum_i\sum_{z^{(i)}}Q_i(z^{(i)})\log \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}
l(θ(t))=∑i∑z(i)Qi(z(i))logQi(z(i))p(x(i),z(i);θ)
然后进行M步,固定
Q
i
(
t
)
(
z
(
i
)
)
Q_i^{(t)}(z^{(i)})
Qi(t)(z(i)),上式
l
(
θ
(
t
)
)
l(\theta^{(t)})
l(θ(t))对
θ
(
t
)
\theta^{(t)}
θ(t)进行求导,再进行一些求导后,可得:
l
(
θ
(
t
+
1
)
)
≥
∑
i
∑
z
(
i
)
Q
i
(
t
)
(
z
(
i
)
)
log
p
(
x
(
i
)
,
z
(
i
)
;
θ
(
t
+
1
)
)
Q
i
(
t
)
(
z
(
i
)
)
≥
∑
i
∑
z
(
i
)
Q
i
(
t
)
(
z
(
i
)
)
log
p
(
x
(
i
)
,
z
(
i
)
;
θ
(
t
)
)
Q
i
(
t
)
(
z
(
i
)
)
=
l
(
θ
(
t
)
)
l(\theta^{(t+1)}) \geq \sum_i\sum_{z^{(i)}}Q_i^{(t)}(z^{(i)})\log\frac{p(x^{(i)},z^{(i)};\theta^{(t+1)})}{Q_i^{(t)}(z^{(i)})} \\ \geq \sum_i\sum_{z^{(i)}}Q_i^{(t)}(z^{(i)})\log\frac{p(x^{(i)},z^{(i)};\theta^{(t)})}{Q_i^{(t)}(z^{(i)})} \\ =l(\theta^{(t)})
l(θ(t+1))≥i∑z(i)∑Qi(t)(z(i))logQi(t)(z(i))p(x(i),z(i);θ(t+1))≥i∑z(i)∑Qi(t)(z(i))logQi(t)(z(i))p(x(i),z(i);θ(t))=l(θ(t))
上面推导的第一步是因为得到
θ
(
t
+
1
)
\theta^{(t+1)}
θ(t+1)时,只是最大化
l
(
θ
(
t
)
)
l(\theta^{(t)})
l(θ(t)),也就是
l
(
θ
(
t
+
1
)
)
l(\theta^{(t+1)})
l(θ(t+1))的下界,而并没有使得等号成立,等式成立只有在固定
θ
\theta
θ,并按照E步得到
Q
i
Q_i
Qi时才成立。
第二步利用了M步的定义, M步是将
θ
(
t
)
\theta^{(t)}
θ(t)调整到了
θ
(
t
+
1
)
\theta^{(t+1)}
θ(t+1),使得
l
(
θ
(
t
)
)
l(\theta^{(t)})
l(θ(t))最大化。
上面的证明过程说明了 l ( θ ) l(\theta) l(θ)函数会单调增加,因此经过多轮迭代后,会收敛到 l ( θ ) l(\theta) l(θ)的极大值。
3 总结
如果将样本看做是观察值,潜在的样本类别看做是隐含变量,那么聚类问题就是参数估计问题,只不过聚类问题中参数分为隐含类别变量和其他参数。在两类参数都未知时,无法直接求导求解参数,但在固定类别参数时,可以对其他参数进行求导求解。对应到EM算法上,E步是固定其他参数估计隐含的类别参数,方法是求解后验概率;M步是固定隐含的类别参数求解其他参数。依次迭代,将极值推导最大。
混合高斯聚类相比于k-means聚类算法,类别指定是“软”指定,即计算样本属于各类的概率,这样理论上更为合理,但计算量也更大。
参考
CS229
才疏学浅,欢迎批评指正!