概述
EM算法常常用于解决含有隐变量问题的参数估计。由于隐变量是无法观测的,因此在进行参数估计时只能通过似然函数 P(X|θ)的大小来对参数进行估计。借助于隐变量和观测变量对似然函数进行建模。
Jensen不等式求下界
由于EM算法本身是对参数进行估计,所以我们能够得到模型:
P ( X ∣ Z , θ ) P(X\mid Z , \theta) P(X∣Z,θ) 以及 P ( Z ∣ θ ) P(Z\mid\theta) P(Z∣θ)
自然能够得出下列 关于 θ \theta θ 的似然函数。
l
o
g
P
(
X
∣
θ
)
=
l
o
g
∑
Z
P
(
X
,
Z
∣
θ
)
logP(X\mid\theta) = log\displaystyle\sum_{Z}P(X,Z\mid\theta)
logP(X∣θ)=logZ∑P(X,Z∣θ)
由于有着Z的存在(无法被观测),所以无法直接优化上式,因此我们想到可以优化下界(谁想到的,太厉害了)
那如何求下界呢,这时候我们引入Jensen不等式,Jensen不等式的概率表示形式为:
- 对于凸函数,有: E [ f ( x ) ] ≥ f ( E [ x ] ) E[f(x)] \ge f(E[x]) E[f(x)]≥f(E[x])
- 对于凹函数,有: f ( E [ x ] ) ≥ E [ f ( x ) ] f(E[x]) \ge E[f(x)] f(E[x])≥E[f(x)]
由于Log函数是凹函数,因此有第二个式子成立。那么如何构造第二个式子呢?
我们知道,对于离散分布求期望其实就是对随机变量的值进行加权平均,因此我们可以引入一个权重,其求和为1。我们设这个权重为
Q
(
Z
)
Q(Z)
Q(Z)
这样一来就得到了:
l o g ∑ Z Q ( Z ) P ( X ∣ θ ) = log ∑ Z Q ( Z ) P ( X , Z ∣ θ ) log\displaystyle\sum_{Z}Q(Z)P(X\mid\theta) = \log\displaystyle\sum_{Z}Q(Z)P(X,Z\mid\theta) logZ∑Q(Z)P(X∣θ)=logZ∑Q(Z)P(X,Z∣θ)
由于 P ( X ∣ θ ) P(X\mid\theta) P(X∣θ)和Z无关,所以等式左边的求和还是等于本身。即:
log P ( X ∣ θ ) = log ∑ Z Q ( Z ) P ( X , Z ∣ θ ) Q ( Z ) \log P(X\mid\theta) = \log\displaystyle\sum_{Z}Q(Z)\frac {P(X,Z\mid\theta)} {Q(Z)} logP(X∣θ)=logZ∑Q(Z)Q(Z)P(X,Z∣θ)
根据Jensen不等式,可以把 Q ( Z ) Q(Z) Q(Z)从Log里面拿出来。这样的话又有:
log
P
(
X
∣
θ
)
≥
∑
Z
Q
(
Z
)
l
o
g
P
(
X
,
Z
∣
θ
)
Q
(
Z
)
\log P(X\mid\theta) \ge \displaystyle\sum_{Z}Q(Z)log\frac {P(X,Z\mid\theta)} {Q(Z)}
logP(X∣θ)≥Z∑Q(Z)logQ(Z)P(X,Z∣θ)
这样我们就得到了对数似然函数的下界。
对下界进行优化
EM算法的核心思想就是一个迭代式优化的过程,巧妙地利用了Jensen不等式的下界的思想,先是使本次迭代中,下界等于自身,然后再去优化自身,从而得到下一次迭代的参数的下界。
那么我们就首先要找到使下界等于似然函数本身的
Q
(
Z
)
Q(Z)
Q(Z)。 根据Jensen不等式,显然有当
f
(
x
)
=
C
f(x) = C
f(x)=C 的时候有等号成立。
所以我们要使 l o g ( ) log() log()中为常量,同时由于 ∑ Z Q ( Z ) = 1 \displaystyle\sum_{Z}Q(Z)=1 Z∑Q(Z)=1。
可以令 Q ( Z ) = P ( Z ∣ X , θ ) Q(Z)=P(Z\mid X,\theta) Q(Z)=P(Z∣X,θ).
这样log中就变为了: P ( X , Z ∣ θ ) P ( Z ∣ X , θ ) = P ( X ∣ θ ) \displaystyle\frac {P(X,Z\mid\theta)} {P(Z\mid X,\theta)}=P(X\mid\theta) P(Z∣X,θ)P(X,Z∣θ)=P(X∣θ)
log中是与Z无关的量,因此等式成立。
所以有:
l o g P ( X ∣ θ ) = ∑ Z P ( Z ∣ X , θ ) log P ( X , Z ∣ θ ) P ( Z ∣ X , θ ) logP(X\mid\theta) = \displaystyle\sum_{Z}P(Z\mid X,\theta)\log\frac {P(X,Z\mid\theta)} {P(Z\mid X,\theta)} logP(X∣θ)=Z∑P(Z∣X,θ)logP(Z∣X,θ)P(X,Z∣θ)
接下来就可以利用EM算法的迭代式求解思想来进行参数估计了。
首先我们设置初始参数
θ
0
\theta_0
θ0。
这时候的似然函数就变为:
l o g P ( X ∣ θ 0 ) = ∑ Z P ( Z ∣ X , θ 0 ) log P ( X , Z ∣ θ 0 ) P ( Z ∣ X , θ 0 ) logP(X\mid\theta_0) = \displaystyle\sum_{Z}P(Z\mid X,\theta_0)\log\frac {P(X,Z\mid\theta_0)} {P(Z\mid X,\theta_0)} logP(X∣θ0)=Z∑P(Z∣X,θ0)logP(Z∣X,θ0)P(X,Z∣θ0)
如果不是天选之子的话,显然这个时候的似然函数值不是最优的,因此我们就要对等式右端进行优化。那么怎么才能得到更优的值呢?
要是固定
P
(
X
,
Z
∣
θ
0
)
P(X,Z\mid \theta_0)
P(X,Z∣θ0) 的话,无论怎么优化
P
(
Z
∣
X
,
θ
0
)
P(Z\mid X,\theta_0)
P(Z∣X,θ0)(也就是
Q
(
Z
)
Q(Z)
Q(Z)),由于Jensen不等式的特性,以及
Q
(
Z
)
Q(Z)
Q(Z)需要满足
∑
Z
Q
(
Z
)
=
1
\displaystyle\sum_{Z}Q(Z)=1
Z∑Q(Z)=1。
这样优化得到的似然函数值依旧是
l
o
g
P
(
X
∣
θ
0
)
logP(X\mid\theta_0)
logP(X∣θ0) 的下界,所以根本无法实现对参数的优化。
因此我们要先固定 Q ( Z ) Q(Z) Q(Z),对 P ( X , Z ∣ θ 0 ) P(X,Z\mid \theta_0) P(X,Z∣θ0)进行优化。(也就是通过改变 P ( X , Z ∣ θ 0 ) P(X,Z\mid \theta_0) P(X,Z∣θ0)中 θ \theta θ的值来使似然函数变得更大)
公式为: θ 1 = arg max θ ∑ Z P ( Z ∣ X , θ 0 ) log P ( X , Z ∣ θ ) P ( Z ∣ X , θ 0 ) \theta_1 = \argmax_\theta\displaystyle\sum_{Z}P(Z\mid X,\theta_0)\log\frac {P(X,Z\mid\theta)} {P(Z\mid X,\theta_0)} θ1=θargmaxZ∑P(Z∣X,θ0)logP(Z∣X,θ0)P(X,Z∣θ)
这样就得到了新参数 θ 1 \theta_1 θ1,因为这个参数是我们经过了优化上式得到的。那么有:
∑ Z P ( Z ∣ X , θ 0 ) l o g P ( X , Z ∣ θ 1 ) P ( Z ∣ X , θ 0 ) ≥ ∑ Z P ( Z ∣ X , θ 0 ) l o g P ( X , Z ∣ θ 0 ) P ( Z ∣ X , θ 0 ) \displaystyle\sum_{Z}P(Z\mid X,\theta_0)log\frac {P(X,Z\mid\theta_1)} {P(Z\mid X,\theta_0)} \ge \displaystyle\sum_{Z}P(Z\mid X,\theta_0)log\frac {P(X,Z\mid\theta_0)} {P(Z\mid X,\theta_0)} Z∑P(Z∣X,θ0)logP(Z∣X,θ0)P(X,Z∣θ1)≥Z∑P(Z∣X,θ0)logP(Z∣X,θ0)P(X,Z∣θ0)
等价于:
∑ Z P ( Z ∣ X , θ 0 ) l o g P ( X , Z ∣ θ 1 ) P ( Z ∣ X , θ 0 ) ≥ log P ( X ∣ θ 0 ) \displaystyle\sum_{Z}P(Z\mid X,\theta_0)log\frac {P(X,Z\mid\theta_1)} {P(Z\mid X,\theta_0)} \ge \log P(X\mid\theta_0) Z∑P(Z∣X,θ0)logP(Z∣X,θ0)P(X,Z∣θ1)≥logP(X∣θ0)
我们可以把 P ( Z ∣ X , θ 0 ) P(Z\mid X,\theta_0) P(Z∣X,θ0)写成 Q ( Z 0 ) Q(Z_0) Q(Z0)。这样上式的左边就变成了:
∑ Z Q ( Z 0 ) l o g P ( X , Z ∣ θ 1 ) Q ( Z 0 ) \displaystyle\sum_{Z}Q(Z_0)log\frac {P(X,Z\mid\theta_1)} {Q(Z_0)} Z∑Q(Z0)logQ(Z0)P(X,Z∣θ1)且满足 ∑ Z Q ( Z 0 ) = 1 \displaystyle\sum_ZQ(Z_0)=1 Z∑Q(Z0)=1
这时候我们发现,这个形式不是正好是对数似然函数
log
P
(
X
∣
θ
1
)
\log P(X\mid \theta_1)
logP(X∣θ1)的下界吗?
那么显然:
既然我
θ
1
\theta_1
θ1的似然函数的下界都要比你
θ
0
\theta_0
θ0的似然函数要大了。自然就实现了优化的目的,即:
log P ( X ∣ θ 1 ) ≥ log P ( X ∣ θ 0 ) \log P(X\mid \theta_1) \ge \log P(X \mid \theta_0) logP(X∣θ1)≥logP(X∣θ0)
这也就实现了从
θ
0
→
θ
1
\theta_0 \rightarrow \theta_1
θ0→θ1
而想要进一步优化,实现从
θ
1
→
θ
2
\theta_1 \rightarrow \theta_2
θ1→θ2。
就要按照原来的步骤依次进行迭代优化。
总结
总结起来,EM算法的步骤就是:
- 计算
Q
(
Z
i
)
=
P
(
Z
∣
X
,
θ
i
)
Q(Z_i)=P(Z\mid X,\theta_i)
Q(Zi)=P(Z∣X,θi)。
由于 arg max θ ∑ Z P ( Z ∣ X , θ i ) log P ( X , Z ∣ θ ) P ( Z ∣ X , θ i ) = arg max θ ∑ Z P ( Z ∣ X , θ i ) log P ( X , Z ∣ θ ) \argmax_\theta\displaystyle\sum_{Z}P(Z\mid X,\theta_i)\log\frac {P(X,Z\mid\theta)} {P(Z\mid X,\theta_i)}=\argmax_\theta\displaystyle\sum_{Z}P(Z\mid X,\theta_i)\log P(X,Z\mid\theta) θargmaxZ∑P(Z∣X,θi)logP(Z∣X,θi)P(X,Z∣θ)=θargmaxZ∑P(Z∣X,θi)logP(X,Z∣θ)。 所以只需要计算 ∑ Z P ( Z ∣ X , θ i ) log P ( X , Z ∣ θ ) \displaystyle\sum_{Z}P(Z\mid X,\theta_i)\log P(X,Z\mid\theta) Z∑P(Z∣X,θi)logP(X,Z∣θ) 即可。
这也相当于求 log P ( X , Z ∣ θ ) \log P(X,Z\mid \theta) logP(X,Z∣θ)关于 P ( Z ∣ X , θ i ) P(Z\mid X,\theta_i) P(Z∣X,θi)的期望,所以也叫作E步骤。 - 对上式求的期望进行关于
θ
\theta
θ的优化。即:
θ i + 1 = arg max θ ∑ Z P ( Z ∣ X , θ i ) log P ( X , Z ∣ θ ) \theta_{i+1} = \argmax_\theta\displaystyle\sum_{Z}P(Z\mid X,\theta_i)\log P(X,Z\mid\theta) θi+1=θargmaxZ∑P(Z∣X,θi)logP(X,Z∣θ) 也就是M步骤。
同样,从白板推导大佬那里学到了EM算法的KL散度解释,等到有空的时候会再更新。
再留个坑,就是关于EM算法的实际计算。