EM算法(Expectation-Maximization),就是用最大似然MLE来递推求模型的参数。顾明思议分为两步:第一步求隐变量的期望,第二步找到让隐变量期望最大化的参数。用公式来表示最终的目标就是:
L
(
θ
)
=
∑
i
l
o
g
(
p
(
x
i
;
θ
)
)
θ
=
arg max
θ
L
(
θ
)
L(\theta)=\sum_{i}log(p(x_i;\theta)) \\ \theta = \argmax_{\theta}L(\theta)
L(θ)=i∑log(p(xi;θ))θ=θargmaxL(θ)
而模型中有未知的隐变量z,那么
L
(
θ
)
=
∑
i
l
o
g
∑
z
(
p
(
x
i
,
z
;
θ
)
)
L(\theta)=\sum_{i}log\sum_z(p(x_i,z;\theta))
L(θ)=i∑logz∑(p(xi,z;θ))
里面的求和实际上是希望求z得期望,假设z服从某种分布,它的概率是
Q
i
(
z
)
Q_i(z)
Qi(z),它的取值分布是
g
(
z
)
g(z)
g(z),那么
L
(
θ
)
L(\theta)
L(θ)可以进一步变成:
L
(
θ
)
=
∑
i
l
o
g
E
(
z
)
L
(
θ
)
=
∑
i
l
o
g
∑
z
Q
i
(
z
)
g
(
z
)
L
(
θ
)
=
∑
i
l
o
g
∑
z
Q
i
(
z
)
p
(
x
i
,
z
;
θ
)
Q
i
(
z
)
L(\theta)=\sum_{i}logE(z) \\ L(\theta)=\sum_{i}log\sum_zQ_i(z)g(z) \\ L(\theta)=\sum_{i}log\sum_zQ_i(z)\frac{p(x_i,z;\theta)}{Q_i(z)}
L(θ)=i∑logE(z)L(θ)=i∑logz∑Qi(z)g(z)L(θ)=i∑logz∑Qi(z)Qi(z)p(xi,z;θ)
利用Jesson不等式,凸函数
f
(
E
(
z
)
)
>
=
E
(
f
(
z
)
)
f(E(z))>=E(f(z))
f(E(z))>=E(f(z)),相等的情况是
E
(
z
)
=
z
E(z)=z
E(z)=z,当
E
(
z
)
E(z)
E(z)是常数的时候。那么可以成功把log放进求和里面
L
(
θ
)
>
=
∑
i
∑
z
Q
i
(
z
)
l
o
g
p
(
x
i
,
z
;
θ
)
Q
i
(
z
)
=
J
(
z
,
θ
)
L(\theta)>=\sum_{i}\sum_zQ_i(z)log\frac{p(x_i,z;\theta)}{Q_i(z)}=J(z,\theta)
L(θ)>=i∑z∑Qi(z)logQi(z)p(xi,z;θ)=J(z,θ)
所以,整个极大似然的概率
L
(
θ
)
L(\theta)
L(θ)有下界
J
(
z
,
θ
)
J(z,\theta)
J(z,θ),我们每次优化可以提供下界
J
(
z
,
θ
)
J(z,\theta)
J(z,θ),来不断提高
L
(
θ
)
L(\theta)
L(θ),也就是说
L
(
θ
)
L(\theta)
L(θ)是不断递增的,同时
L
(
θ
)
L(\theta)
L(θ)不超过1,这就是算法能收敛的原因。
还剩下一个问题
Q
i
(
z
)
Q_i(z)
Qi(z)应该如何选择,如果Jesson不等式相等的条件就是
p
(
x
i
,
z
;
θ
)
Q
i
(
z
)
=
c
\frac{p(x_i,z;\theta)}{Q_i(z)}=c
Qi(z)p(xi,z;θ)=c
同时
∑
z
Q
i
(
z
)
=
1
\sum_{z}Q_i(z)=1
∑zQi(z)=1,c是一个常数,也就是说
∑
z
p
(
x
i
,
z
;
θ
)
\sum_z p(x_i,z;\theta)
∑zp(xi,z;θ)是和z无关的,写成公式就是
∑
z
p
(
x
i
,
z
;
θ
)
=
p
(
x
i
;
θ
)
\sum_z p(x_i,z;\theta)=p(x_i;\theta)
z∑p(xi,z;θ)=p(xi;θ)
那么
Q
i
(
z
)
=
p
(
x
i
,
z
;
θ
)
∑
z
p
(
x
i
,
z
;
θ
)
Q
i
(
z
)
=
p
(
x
i
,
z
;
θ
)
p
(
x
i
;
θ
)
Q
i
(
z
)
=
p
(
z
∣
x
i
;
θ
)
Q_i(z)=\frac{p(x_i,z;\theta)}{\sum_zp(x_i,z;\theta)} \\ Q_i(z)=\frac{p(x_i,z;\theta)}{p(x_i;\theta)} \\ Q_i(z)=p(z|x_i;\theta)
Qi(z)=∑zp(xi,z;θ)p(xi,z;θ)Qi(z)=p(xi;θ)p(xi,z;θ)Qi(z)=p(z∣xi;θ)
这也解决了
Q
i
(
z
)
Q_i(z)
Qi(z)如何选择的问题,刚好的已知参数和数据情况下的后验概率。
所以,EM算法用公式表达就是:
- E步:算隐含变量的期望,隐含变量的概率分布是
Q
i
(
z
)
=
p
(
z
∣
x
i
;
θ
)
Q_i(z)=p(z|x_i;\theta)
Qi(z)=p(z∣xi;θ)
而期望的下界是
J ( z , θ ) = ∑ i ∑ z Q i ( z ) l o g p ( x i , z ; θ ) Q i ( z ) J(z,\theta)=\sum_{i}\sum_zQ_i(z)log\frac{p(x_i,z;\theta)}{Q_i(z)} J(z,θ)=i∑z∑Qi(z)logQi(z)p(xi,z;θ) - M步:找到隐含变量期望最大化的
θ
\theta
θ进行下一轮迭代,期望下界最大化就是期望最大化
θ = arg max θ J ( z , θ ) \theta = \argmax_{\theta}J(z,\theta) θ=θargmaxJ(z,θ)