前言
网上对EM算法介绍已经很详尽,但是没看到比较详细的案例,理解起来有一些抽象。本文对EM的算法做一些总结,重点是介绍EM的案例,使得对该算法有一个直观的理解。
介绍
EM算法主要是针对存在隐变量的问题,即数据不完整的条件下去做参数估计。与之相反,当数据完整的时候,我们采用最大似然法就能解决问题。
似然函数
L
(
θ
)
=
∏
p
(
x
1
,
⋯
,
x
n
;
θ
)
)
θ
∗
=
a
r
g
m
a
x
θ
∈
Θ
L
(
θ
)
l
n
(
L
(
θ
)
)
=
∑
i
=
1
n
l
n
(
p
(
x
i
;
θ
)
)
∂
l
n
(
L
(
θ
)
)
∂
θ
=
0
L(\theta) = \prod p(x_1,\cdots,x_n;\theta))\\ \theta^* = \underset{\theta \in \Theta}{arg \ max}\ L(\theta)\\ ln(L(\theta) )=\sum_{i=1}^{n}ln(p(x_i;\theta))\\ \frac{\partial ln(L(\theta))}{\partial \theta} = 0
L(θ)=∏p(x1,⋯,xn;θ))θ∗=θ∈Θarg max L(θ)ln(L(θ))=i=1∑nln(p(xi;θ))∂θ∂ln(L(θ))=0
求似然函数的极大意义在于,找出参数的最佳估计值。直观的感觉是,给定的样本和参数
θ
\theta
θ越是符合,似然函数函数值自然越大。
Jensen不等式
这是一个容易理解的不等式。对于函数f,如果f满足,在其定义域内的所有实数x,满足
f
′
′
(
x
)
≥
0
f^{''}(x)\geq0
f′′(x)≥0,则f为凸函数,且有
E
(
f
(
X
)
)
≥
f
(
E
(
X
)
)
E(f(X))\geq f(E(X))
E(f(X))≥f(E(X))
由下图可以看到,f满足
(
f
(
a
)
+
f
(
b
)
)
/
2
≥
f
(
(
a
+
b
)
/
2
)
(f(a)+f(b))/2\geq f((a+b)/2)
(f(a)+f(b))/2≥f((a+b)/2)
用归纳法证明一下
E
(
f
(
X
)
)
≥
f
(
E
(
X
)
)
E(f(X))\geq f(E(X))
E(f(X))≥f(E(X))
显然,当k=1,2时,命题成立
假定k时,命题成立
E
(
X
)
=
∑
i
=
1
k
p
i
x
i
s
.
t
.
∑
i
=
1
k
p
i
=
1
E(X) = \sum_{i=1}^{k}p_ix_i \ s.t. \sum_{i=1}^{k}p_i=1\\
E(X)=i=1∑kpixi s.t.i=1∑kpi=1
现在求k+1时,命题是否成立
E
(
X
)
=
∑
i
=
1
k
+
1
p
i
x
i
s
.
t
.
∑
i
=
1
k
+
1
p
i
=
1
E(X) = \sum_{i=1}^{k+1}p_ix_i \ s.t. \sum_{i=1}^{k+1}p_i=1\\
E(X)=i=1∑k+1pixi s.t.i=1∑k+1pi=1
令
s
p
k
=
∑
i
=
1
k
p
k
⇒
E
(
X
)
=
p
k
+
1
x
k
+
1
+
s
p
k
∑
i
=
1
k
p
i
s
p
k
x
i
sp_k=\sum_{i=1}^{k}p_k \Rightarrow E(X) = p_{k+1}x_{k+1}+sp_k \sum_{i=1}^{k}\frac{p_i}{sp_k}x_i
spk=∑i=1kpk⇒E(X)=pk+1xk+1+spk∑i=1kspkpixi
令
X
k
=
∑
i
=
1
k
p
i
s
p
k
x
i
X_k=\sum_{i=1}^{k}\frac{p_i}{sp_k}x_i
Xk=∑i=1kspkpixi,代入上式得到
E
(
X
)
=
p
k
+
1
x
k
+
1
+
s
p
k
X
k
E(X) = p_{k+1}x_{k+1}+sp_kX_k
E(X)=pk+1xk+1+spkXk
由于
p
k
+
1
+
s
p
k
=
1
p_{k+1}+sp_k=1
pk+1+spk=1,则有
E
(
f
(
X
)
)
=
p
k
+
1
f
(
x
k
+
1
)
+
s
p
k
f
(
X
k
)
≥
f
(
p
k
+
1
x
k
+
1
+
s
p
k
X
k
)
=
f
(
E
(
X
)
)
E(f(X))=p_{k+1}f(x_{k+1})+sp_kf(X_k)\geq f(p_{k+1}x_{k+1}+sp_kX_k)=f(E(X))
E(f(X))=pk+1f(xk+1)+spkf(Xk)≥f(pk+1xk+1+spkXk)=f(E(X))
在f为严格凸函数时,上式只有在E(X)为常数时候才成立,即x是一个常数。
当f为凹函数时,上述不等式需要反号。我们知道最大似然函数ln函数是凹函数,所以上述需要取反。
EM 算法
假设完整数据为X ,Z
X
=
[
x
1
,
⋯
,
x
n
]
X = [{x_1,\cdots,x_n}]
X=[x1,⋯,xn]为观测数据
Z
=
[
z
1
,
⋯
,
z
n
]
Z = [{z_1,\cdots,z_n}]
Z=[z1,⋯,zn]为未观测的数据,即隐变量
则有
L
(
θ
)
=
∑
i
=
1
k
l
n
q
(
x
i
;
θ
)
=
∑
i
=
1
k
l
n
[
∑
z
q
(
x
i
,
z
i
;
θ
)
]
L(\theta) = \sum_{i=1}^{k}ln \ q(x_i;\theta)=\sum_{i=1}^{k}ln \ [\sum_zq(x_i,z_i;\theta)]
L(θ)=i=1∑kln q(xi;θ)=i=1∑kln [z∑q(xi,zi;θ)]
假设
Q
i
Q_i
Qi表示隐含变量Z的某种分布,
Q
i
Q_i
Qi满足
∑
z
Q
i
(
z
)
=
1
s
.
t
.
Q
i
≥
0
\sum_zQ_i(z) = 1 \ s.t. Q_i \ \geq 0
z∑Qi(z)=1 s.t.Qi ≥0
也就是说在
x
=
x
i
x=x_i
x=xi,条件下的Q_i(z)概率密度
q
(
z
i
∣
x
i
;
θ
)
q(z_i|x_i;\theta)
q(zi∣xi;θ)
L
(
θ
)
=
∑
i
=
1
k
l
n
[
∑
z
q
(
x
i
,
z
i
;
θ
)
]
=
∑
i
=
1
k
l
n
[
∑
z
Q
i
q
(
x
i
,
z
i
;
θ
)
Q
i
]
L(\theta) =\sum_{i=1}^{k}ln \ [\sum_zq(x_i,z_i;\theta)]=\sum_{i=1}^{k}ln \ [\sum_zQ_i\frac{q(x_i,z_i;\theta)}{Q_i}]
L(θ)=i=1∑kln [z∑q(xi,zi;θ)]=i=1∑kln [z∑QiQiq(xi,zi;θ)]
这里的函数f 为 ln, 凹函数。令有变量
X
X
=
q
(
x
i
,
z
i
;
θ
)
Q
i
XX = \frac{q(x_i,z_i;\theta)}{Q_i}
XX=Qiq(xi,zi;θ)
则有
E
(
X
X
)
=
∑
i
Q
i
X
X
E(XX) = \sum_iQ_iXX
E(XX)=∑iQiXX
由Jensen不等式可以得到
L
(
θ
)
=
∑
i
=
1
k
l
n
[
∑
z
Q
i
X
X
]
≥
∑
i
=
1
k
∑
z
Q
i
l
n
(
X
X
)
=
J
(
Z
,
Q
)
L(\theta) =\sum_{i=1}^{k}ln \ [\sum_zQ_iXX]\geq \sum_{i=1}^{k} \sum_zQ_iln(XX)=J(Z,Q)
L(θ)=i=1∑kln [z∑QiXX]≥i=1∑kz∑Qiln(XX)=J(Z,Q)
由于缺失了数据Z,
L
(
θ
)
L(\theta)
L(θ)本身并不存在一个解析解,直接用最大似然是做不到的。一切都只是为了得到一个比较合理的估计解。所以,利用Jensen不等式只是想求得一个更易于求解的下界表达式,再利用这个下界
J
(
Z
,
Q
)
J(Z,Q)
J(Z,Q)去逼近
L
(
θ
)
L(\theta)
L(θ),直到得到一个最优解。
要想上式成立,唯有XX为常数才能做到,因此,为了能求出解,需要假设
X
X
=
c
XX=c
XX=c,则有
X
X
=
q
(
x
i
,
z
i
;
θ
)
Q
i
=
C
⇒
∑
z
q
(
x
i
,
z
i
;
θ
)
=
q
(
x
i
;
θ
)
=
∑
i
=
1
k
Q
i
C
=
C
XX = \frac{q(x_i,z_i;\theta)}{Q_i}=C \Rightarrow \sum_z q(x_i,z_i;\theta) =q(x_i;\theta)=\sum_{i=1}^{k}Q_iC=C
XX=Qiq(xi,zi;θ)=C⇒z∑q(xi,zi;θ)=q(xi;θ)=i=1∑kQiC=C
EM算法是一种迭代逼近的算法,分为两步:
- E步,固定 θ \theta θ,计算 Q i ( z ) Q_i(z) Qi(z),建立 L ( θ ) L(\theta) L(θ)的下界。我们知道z是无法观测的,但是有了给定的 θ \theta θ就可以计算 Q i ( z ) Q_i(z) Qi(z)
- M步,得到
Q
i
(
z
)
Q_i(z)
Qi(z)后,求
θ
∗
=
a
r
g
m
a
x
θ
∈
Θ
∑
i
=
1
k
∑
z
Q
i
l
n
(
X
X
)
\theta^* = \underset{\theta \in \Theta}{arg \ max}\ \sum_{i=1}^{k} \sum_zQ_iln(XX)
θ∗=θ∈Θarg max ∑i=1k∑zQiln(XX)
不断重复1,2,直到 θ \theta θ收敛。根据不同初始值,结果并不相同,因此,起始点是比较重要的。
EM例子
这个例子用的是李航的统计学习方法中的三个硬币例子。文中只给出了结果,并未对过程做详细推导,大概是作者觉得过于简单不需要去赘述吧。
令
θ
=
{
π
,
p
,
q
}
\theta = \{ \pi ,p,q\}
θ={π,p,q},观测结果为y(同前面的x变量,为了和书本一致,这里使用y代替),则有
p
(
y
∣
θ
)
=
π
p
y
p
1
−
y
+
(
1
−
π
)
q
y
q
1
−
y
p(y|\theta)=\pi p^yp^{1-y}+(1-\pi)q^yq^{1-y}
p(y∣θ)=πpyp1−y+(1−π)qyq1−y
y的观测结果可能是来自硬币B,也可能来自硬币C,但是这一点我们是无法从y中获得的,因此,在这个问题中,我们将y的观测结果来源取决于A的投币结果,这个结果我们无法观测,因此作为隐变量。
Y
=
(
Y
1
,
Y
2
,
⋯
,
Y
n
)
T
,
Z
=
(
Z
1
,
Z
2
,
⋯
,
Z
n
)
T
P
(
Y
∣
θ
)
=
∑
z
P
(
Z
∣
θ
)
P
(
Y
∣
Z
,
θ
)
P
(
Y
∣
θ
)
=
∏
j
=
1
n
[
π
p
y
j
(
1
−
p
)
1
−
y
j
+
(
1
−
π
)
q
y
j
(
1
−
q
)
1
−
y
j
]
θ
=
(
π
,
p
,
q
)
θ
^
=
arg
max
θ
log
P
(
Y
∣
θ
)
Y=\left(Y_{1}, Y_{2}, \cdots, Y_{n}\right)^{T},Z=\left(Z_{1}, Z_{2}, \cdots, Z_{n}\right)^{T}\\ P(Y | \theta)=\sum_{z} P(Z | \theta) P(Y | Z, \theta)\\ P(Y | \theta)=\prod_{j=1}^{n}\left[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}\right]\\ \theta=(\pi, p, q)\\ \hat{\theta}=\arg \max _{\theta} \log P(Y | \theta)
Y=(Y1,Y2,⋯,Yn)T,Z=(Z1,Z2,⋯,Zn)TP(Y∣θ)=z∑P(Z∣θ)P(Y∣Z,θ)P(Y∣θ)=j=1∏n[πpyj(1−p)1−yj+(1−π)qyj(1−q)1−yj]θ=(π,p,q)θ^=argθmaxlogP(Y∣θ)
详细计算方法:
给定
θ
(
i
)
=
(
π
(
i
)
,
p
(
i
)
,
q
(
i
)
)
.
\theta^{(i)}=\left(\pi^{(i)}, p^{(i)}, q^{(i)}\right) .
θ(i)=(π(i),p(i),q(i)).
E步,计算
Q
i
Q_i
Qi
θ
\theta
θ已知,
Q
i
Q_i
Qi未知
前面提到过,
Q
i
(
z
i
)
=
q
(
z
i
∣
y
i
;
θ
)
=
q
(
y
i
,
z
i
;
θ
)
/
q
(
y
i
;
θ
)
Q_i(z_i) = q(z_i|y_i;\theta)=q(y_i,z_i;\theta)/q(y_i;\theta)
Qi(zi)=q(zi∣yi;θ)=q(yi,zi;θ)/q(yi;θ)
我们知道,前面的变量
X
X
=
q
(
y
i
,
z
i
;
θ
)
Q
i
=
q
(
y
i
,
θ
)
XX = \frac{q(y_i,z_i;\theta)}{Q_i}=q(y_i,\theta)
XX=Qiq(yi,zi;θ)=q(yi,θ),在给定
θ
\theta
θ下,显然,该变量是常数项,使得
L
(
θ
)
=
J
(
Z
,
Q
)
L(\theta) =J(Z,Q)
L(θ)=J(Z,Q)
求后验概率,发生y_i时,正面为A的机率,也就是观测结果来自B的机率
Q
i
1
(
z
i
=
z
1
(
A
正
面
)
)
Q_{i1}(z_i=z_1(A正面))
Qi1(zi=z1(A正面))即书中提到的下面的公式
μ
(
i
+
1
)
=
π
(
i
)
(
p
(
i
)
)
y
j
(
1
−
p
(
i
)
)
1
−
y
j
π
(
i
)
(
p
(
i
)
)
y
j
(
1
−
p
(
i
)
)
1
−
y
j
+
(
1
−
π
(
i
)
)
(
q
(
i
)
)
y
j
(
1
−
q
(
i
)
)
1
−
y
j
\mu^{(i+1)}=\frac{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}}{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}+\left(1-\pi^{(i)}\right)\left(q^{(i)}\right)^{y_{j}}\left(1-q^{(i)}\right)^{1-y_{j}}}
μ(i+1)=π(i)(p(i))yj(1−p(i))1−yj+(1−π(i))(q(i))yj(1−q(i))1−yjπ(i)(p(i))yj(1−p(i))1−yj
可以得到
Q
i
2
(
z
i
=
z
2
=
A
反
面
)
=
1
−
Q
i
1
(
z
i
=
z
1
)
=
1
−
μ
(
i
+
1
)
Q_{i2}(z_i=z_2=A反面)=1-Q_{i1}(z_i=z_1)=1-\mu^{(i+1)}
Qi2(zi=z2=A反面)=1−Qi1(zi=z1)=1−μ(i+1)
M步
θ
\theta
θ未知,
Q
i
Q_i
Qi已知
有了
Q
i
1
=
μ
i
,
Q
i
2
Q_{i1}=\mu_i,Q_{i2}
Qi1=μi,Qi2我们更新
J
(
Q
,
Z
)
=
S
c
o
r
e
=
∑
i
=
1
k
∑
z
Q
i
ln
(
X
X
)
=
∑
i
=
1
k
(
Q
i
1
l
n
[
(
q
(
y
i
,
z
1
;
θ
)
/
Q
i
1
)
]
+
Q
i
2
ln
(
q
(
y
i
,
z
2
;
θ
)
/
Q
i
2
)
)
∂
(
Q
i
1
l
n
[
(
q
(
y
i
,
z
1
;
θ
)
/
Q
i
1
)
]
∂
π
=
Q
i
1
q
′
(
y
i
,
z
1
;
θ
)
/
q
(
y
i
,
z
1
;
θ
)
=
Q
i
1
p
y
(
1
−
p
)
1
−
y
/
(
π
p
y
(
1
−
p
)
1
−
y
)
=
Q
i
1
/
π
∂
(
Q
i
2
l
n
[
(
q
(
y
i
,
z
2
;
θ
)
/
Q
i
2
)
]
∂
π
=
Q
i
2
q
′
(
y
i
,
z
2
;
θ
)
/
q
(
y
i
,
z
2
;
θ
)
=
−
Q
i
2
q
y
(
1
−
q
)
1
−
y
/
(
(
1
−
π
)
q
y
(
1
−
q
)
1
−
y
)
=
−
Q
i
2
/
(
1
−
π
)
∂
S
c
o
r
e
∂
π
=
∑
i
Q
i
1
/
π
−
Q
i
2
/
(
1
−
π
)
=
0
⇒
∑
i
[
(
1
−
π
)
Q
i
1
−
π
Q
i
2
]
=
∑
i
(
Q
i
1
−
π
)
⇒
π
(
i
+
1
)
=
1
n
∑
j
=
1
n
μ
j
(
i
)
⋅
1
J(Q,Z)=Score=\sum_{i=1}^{k} \sum_zQ_i\ln (XX)=\sum_{i=1}^{k} (Q_{i1}ln [(q(y_i,z_1;\theta)/Q_{i1})]+Q_{i2}\ln (q(y_i,z_2;\theta)/Q_{i2})) \\ \frac{\partial (Q_{i1}ln [(q(y_i,z_1;\theta)/Q_{i1})]}{\partial \pi}=Q_{i1}q'(y_i,z_1;\theta)/q(y_i,z_1;\theta)=\\ Q_{i1}p^y(1-p)^{1-y}/(\pi p^y(1-p)^{1-y})=Q_{i1}/\pi \\ \frac{\partial (Q_{i2}ln [(q(y_i,z_2;\theta)/Q_{i2})]}{\partial \pi}=Q_{i2}q'(y_i,z_2;\theta)/q(y_i,z_2;\theta)=\\ -Q_{i2}q^y(1-q)^{1-y}/((1-\pi) q^y(1-q)^{1-y})=-Q_{i2}/(1-\pi) \\ \frac{\partial Score}{\partial \pi}=\sum_iQ_{i1}/\pi-Q_{i2}/(1-\pi)=0 \Rightarrow \\ \sum_i [(1-\pi)Q_{i1}-\pi Q_{i2}]=\sum_i (Q_{i1}-\pi)\Rightarrow \\ \\{\pi^{(i+1)}=\frac{1}{n} \sum_{j=1}^{n} \mu_{j}^{(i) \cdot 1}}
J(Q,Z)=Score=i=1∑kz∑Qiln(XX)=i=1∑k(Qi1ln[(q(yi,z1;θ)/Qi1)]+Qi2ln(q(yi,z2;θ)/Qi2))∂π∂(Qi1ln[(q(yi,z1;θ)/Qi1)]=Qi1q′(yi,z1;θ)/q(yi,z1;θ)=Qi1py(1−p)1−y/(πpy(1−p)1−y)=Qi1/π∂π∂(Qi2ln[(q(yi,z2;θ)/Qi2)]=Qi2q′(yi,z2;θ)/q(yi,z2;θ)=−Qi2qy(1−q)1−y/((1−π)qy(1−q)1−y)=−Qi2/(1−π)∂π∂Score=i∑Qi1/π−Qi2/(1−π)=0⇒i∑[(1−π)Qi1−πQi2]=i∑(Qi1−π)⇒π(i+1)=n1j=1∑nμj(i)⋅1
同理可以得到
p
(
i
+
1
)
=
∑
j
=
1
n
μ
j
(
i
+
1
)
y
j
∑
j
=
1
n
μ
j
(
i
+
1
)
q
(
i
+
1
)
=
∑
j
=
1
n
(
1
−
μ
j
(
i
+
1
)
)
y
j
∑
j
=
1
n
(
1
−
μ
j
(
i
+
1
)
)
\begin{array}{l} {p^{(i+1)}=\frac{\sum_{j=1}^{n} \mu_{j}^{(i+1)} y_{j}}{\sum_{j=1}^{n} \mu_{j}^{(i+1)}}} \\ {q^{(i+1)}=\frac{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right) y_{j}}{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right)}} \end{array}
p(i+1)=∑j=1nμj(i+1)∑j=1nμj(i+1)yjq(i+1)=∑j=1n(1−μj(i+1))∑j=1n(1−μj(i+1))yj
总结
用一张图总结EM的迭代是怎么工作的
通过前t-1次迭代,得到了
θ
t
\theta^t
θt,这时,
J
(
Z
,
Q
)
J(Z,Q)
J(Z,Q)对应的曲线如绿色曲线所式,这时候,E步构造新的
Q
i
Q_i
Qi参数,得到新的
J
(
Z
,
Q
)
J(Z,Q)
J(Z,Q)曲线(蓝色),使得在
θ
t
\theta^t
θt位置,
J
(
Z
,
Q
)
=
L
(
θ
)
J(Z,Q)=L(\theta)
J(Z,Q)=L(θ)。M步,对
J
(
Z
,
Q
)
J(Z,Q)
J(Z,Q)求导,求该曲线的极值位置作为
θ
t
+
1
\theta^{t+1}
θt+1,直到收敛。从图可以直观得看到,EM过程肯定是收敛得,因为极值保证了,新的J(Z,Q)一定大于等于老的J(Z,Q)。但是初始值若给的不合适,最终的结果未必理想。
参考文献
- https://wenku.baidu.com/view/3396bb4d6294dd88d0d26bee.html
- https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html