本文是自己的学习笔记,很多内容与参考文献相同,如有侵权即刻删除
EM算法基本思想
首先根据己经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。
EM算法问题描述
有100个男生和100个女生的身高,但是不知道这200个数据中哪个是男生的身高,哪个是女生的身高,即抽取得到的每个样本都不知道是从哪个分布中抽取的。这时候需要估计样本的分布和模型的参数。
EM算法流程
(1)初始化参数:先初始化男生身高的正态分布的参数
(2)计算每一个人更可能属于男生分布或者女生分布;
(3)通过分为男生的n个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布。
(4)这时候两个分布的概率也变了,然后重复步骤(1)至(3),直到参数不发生变化为止。
当样本分布已知时,求样本的模型参数θ, 极大化模型分布的对数似然函数如下:
θ
^
=
a
r
g
m
a
x
∑
i
=
1
n
l
o
g
p
(
x
i
;
θ
)
\widehat{\theta}=argmax\sum_{i=1}^n{log{p(x_i;\theta)}}
θ
=argmaxi=1∑nlogp(xi;θ)其中
x
=
(
x
1
,
x
2
,
.
.
.
x
n
)
x=(x_1,x_2,...x_n)
x=(x1,x2,...xn)为n个样本的观测数据
当样本分布未知时即可认为在原分布上存在一些未知分布的观测样本,此时目标函数变为:
θ
^
=
a
r
g
m
a
x
∑
i
=
1
n
l
o
g
p
(
x
i
;
θ
)
=
a
r
g
m
a
x
∑
i
=
1
n
l
o
g
∑
z
i
p
(
x
i
;
z
i
;
θ
)
\widehat{\theta}=argmax\sum_{i=1}^n{log{p(x_i;\theta)}}=argmax\sum_{i=1}^n{log{\sum_{z_i}}p(x_i;z_i;\theta)}
θ
=argmaxi=1∑nlogp(xi;θ)=argmaxi=1∑nlogzi∑p(xi;zi;θ)
其中
z
=
(
z
1
,
z
2
,
.
.
.
z
n
)
z=(z_1,z_2,...z_n)
z=(z1,z2,...zn)为未观察到的隐含数据。
由于上式无法直接计算,因此使用Jensen不等式进行缩放:
先简述Jensen不等式的定义:
如果函数f是凸函数,X是随机变量,那么
E
[
f
(
x
)
]
≥
f
(
E
[
x
]
)
E[f(x)]\geq f(E[x])
E[f(x)]≥f(E[x])。当且仅当X是常量时,该式取等号。当函数f是凹函数时,
E
[
f
(
x
)
]
≤
f
(
E
[
x
]
)
E[f(x)] \leq f(E[x])
E[f(x)]≤f(E[x])。当且仅当X是常量时,该式取等号。
引入一个未知的新的分布
Q
i
(
z
i
)
Q_i(z_i)
Qi(zi)
∑
i
=
1
n
l
o
g
∑
z
i
p
(
x
i
;
z
i
;
θ
)
=
∑
i
=
1
n
l
o
g
∑
z
i
Q
i
(
z
i
)
p
(
x
i
;
z
i
;
θ
)
Q
i
(
z
i
)
\sum_{i=1}^n{log{\sum_{z_i}}p(x_i;z_i;\theta)}=\sum_{i=1}^n{log{\sum_{z_i}}Q_i(z_i)\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}}
i=1∑nlogzi∑p(xi;zi;θ)=i=1∑nlogzi∑Qi(zi)Qi(zi)p(xi;zi;θ)
由于
p
(
x
i
;
z
i
;
θ
)
Q
i
(
z
i
)
\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}
Qi(zi)p(xi;zi;θ)的期望为
∑
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)}
∑ziQi(zi)Qi(zi)p(xi;zi;θ),则原式变为
∑
i
=
1
n
l
o
g
(
E
(
p
(
x
i
;
z
i
;
θ
)
Q
i
(
z
i
)
)
)
\sum_{i=1}^{n}{log(E(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}))}
∑i=1nlog(E(Qi(zi)p(xi;zi;θ))),由于
l
o
g
(
.
)
log(.)
log(.)的二阶导数小于0,为凹函数,则根据Jensen不等式可得:
∑
i
=
1
n
l
o
g
(
E
(
p
(
x
i
;
z
i
;
θ
)
Q
i
(
z
i
)
)
)
≥
∑
i
=
1
n
E
(
l
o
g
(
p
(
x
i
;
z
i
;
θ
)
Q
i
(
z
i
)
)
)
=
∑
i
=
1
n
∑
z
i
Q
i
(
z
i
)
l
o
g
(
p
(
x
i
;
z
i
;
θ
)
Q
i
(
z
i
)
)
\sum_{i=1}^{n}{log(E(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}))} \geq \sum_{i=1}^{n}{E(log(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}))}=\sum_{i=1}^{n}{\sum_{z_i}Q_i(z_i)log(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)})}
i=1∑nlog(E(Qi(zi)p(xi;zi;θ)))≥i=1∑nE(log(Qi(zi)p(xi;zi;θ)))=i=1∑nzi∑Qi(zi)log(Qi(zi)p(xi;zi;θ))
当Jensen不等式取等号时,有
p
(
x
i
;
z
i
;
θ
)
Q
i
(
z
i
)
=
c
\frac{p(x_i;z_i;\theta)}{Q_i(z_i)}=c
Qi(zi)p(xi;zi;θ)=c,
c
c
c为常数。又因为
Q
i
(
z
i
)
Q_i(z_i)
Qi(zi)是一个分布,所以
∑
z
i
Q
i
(
z
i
)
=
1
\sum_{z_i}{Q_i(z_i)}=1
∑ziQi(zi)=1可得
p
(
x
i
;
z
i
;
θ
)
=
c
×
Q
i
(
z
i
)
p(x_i;z_i;\theta)=c \times Q_i(z_i)
p(xi;zi;θ)=c×Qi(zi)
两边同时对变量z求和得
∑
z
i
p
(
x
i
;
z
i
;
θ
)
=
c
∑
z
i
Q
i
(
z
i
)
=
c
\sum_{z_i}{p(x_i;z_i;\theta)}=c\sum_{z_i}{Q_i(z_i)}=c
zi∑p(xi;zi;θ)=czi∑Qi(zi)=c
Q
i
(
z
i
)
=
p
(
x
i
;
z
i
;
θ
)
∑
z
i
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_i}{p(x_i;z_i;\theta)}}=\frac{p(x_i;z_i;\theta)}{p(x_i;\theta)}=p(z_i|x_i;\theta)
Qi(zi)=∑zip(xi;zi;θ)p(xi;zi;θ)=p(xi;θ)p(xi;zi;θ)=p(zi∣xi;θ)
要使Jensen不等式等号成立(使函数的下界最大)则有
Q
i
(
z
i
)
=
p
(
z
i
∣
x
i
;
θ
)
Q_i(z_i)=p(z_i|x_i;\theta)
Qi(zi)=p(zi∣xi;θ)。当
θ
\theta
θ已知时,
Q
i
(
z
i
)
Q_i(z_i)
Qi(zi)就变成求一个后验概率。得出
Q
i
(
z
i
)
Q_i(z_i)
Qi(zi)后就可以重新计算其下界:
∑
i
=
1
n
∑
z
i
Q
i
(
z
i
)
l
o
g
(
p
(
x
i
;
z
i
;
θ
)
Q
i
(
z
i
)
)
\sum_{i=1}^{n}{\sum_{z_i}Q_i(z_i)log(\frac{p(x_i;z_i;\theta)}{Q_i(z_i)})}
i=1∑nzi∑Qi(zi)log(Qi(zi)p(xi;zi;θ))
从而更新参数
θ
\theta
θ,如此迭代直到收敛。
最后插一个例子助于理解EM
-如何感性地理解EM算法
参考文献:
-EM算法详解
-EM算法原理总结
-EM算法学习(Expectation Maximization Algorithm)