EM算法基本思想
最大期望算法(Expectation-Maximization),是一类通过迭代进行极大似然估计的优化算法,通常作为牛顿迭代法的替代,用于对包含隐变量或缺失数据的概率模型进行参数估计.
一般是两个步骤交替进行计算:
- 第一步是计算期望(E),利用对隐变量的现有估计值,计算其最大似然估计值
- 第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值.
- M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行.
EM算法推导
对于
m
m
m 个样本观察数据
x
=
(
x
1
,
x
2
,
.
.
.
,
x
m
)
x=(x^{1},x^{2},...,x^{m})
x=(x1,x2,...,xm) ,现在想找出样本的模型参数
θ
\theta
θ ,其极大
化模型分布的对数似然函数为:
如果得到的观察数据有未观察到的隐含数据
z
=
(
z
(
1
)
,
z
(
2
)
,
.
.
.
z
(
m
)
)
z=(z^{(1)},z^{(2)},...z^{(m)})
z=(z(1),z(2),...z(m)) ,极大化模型分布的对数似然函数则为:
由于上式不能直接求出
θ
\theta
θ ,采用缩放技巧:
上式用到了 Jensen 不等式:
并且引入了一个未知的新分布
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)) 。
此时,如果需要满足 Jensen 不等式中的等号,所以有:
由于
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(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);θ) 则第 (1) 式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要最大化下式:
简化得:(去掉分母中不含参数
θ
\theta
θ的部分)
以上即为 EM 算法的 M 步,
∑
z
(
i
)
Q
i
(
z
(
i
)
)
l
o
g
P
(
x
(
i
)
,
z
(
i
)
;
θ
)
\sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)}, z^{(i)};\theta)}
z(i)∑Qi(z(i))logP(x(i),z(i);θ) 可理解为
l
o
g
P
(
x
(
i
)
,
z
(
i
)
;
θ
)
logP(x^{(i)}, z^{(i)};\theta)
logP(x(i),z(i);θ) 基于条件概率分布
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)) 的期望.以上即为 EM 算法中 E 步和 M 步的具体数学含义。
图解EM算法
考虑上一节中的( a )式,表达式中存在隐变量,直接找到参数估计比较困难,通过 EM 算法迭代求解
下界的最大值到收敛为止。
图片中的紫色部分是我们的目标模型
p
(
x
∣
θ
)
p(x|\theta)
p(x∣θ) ,该模型复杂,难以求解析解,为了消除隐变量的影响,我们可以选择一个不包含
z
(
i
)
z^{(i)}
z(i) 的模型
r
(
x
∣
θ
)
r(x|\theta)
r(x∣θ) ,使其满足条件
r
(
x
∣
θ
)
⩽
p
(
x
∣
θ
)
r(x|\theta)\leqslant p(x|\theta)
r(x∣θ)⩽p(x∣θ)
求解步骤如下:
- 选取 θ 1 \theta_1 θ1 ,使得 r ( x ∣ θ 1 ) = p ( x ∣ θ 1 ) r(x|\theta_1) = p(x|\theta_1) r(x∣θ1)=p(x∣θ1) ,然后对此时的 r r r 求取最大值,得到极值点 θ 2 \theta_2 θ2 ,实现参数的更新。
- 重复以上过程到收敛为止,在更新过程中始终满足 r ⩽ p r \leqslant p r⩽p.
EM算法流程
输入:观察数据 x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) x=(x^{(1)},x^{(2)},...x^{(m)}) x=(x(1),x(2),...x(m)) ,联合分布 p ( x , z ; θ ) p(x,z ;\theta) p(x,z;θ) ,条件分布 p ( z ∣ x ; θ ) p(z|x; \theta) p(z∣x;θ) ,最大迭代次数 J J J
- 随机初始化模型参数 θ \theta θ 的初值 θ 0 \theta^0 θ0 。
-
f
o
r
j
f
r
o
m
1
t
o
j
for \ j \ from \ 1 \ to \ j
for j from 1 to j :
- a) E 步。计算联合分布的条件概率期望:
- b) M 步。极大化
L
(
θ
,
θ
j
)
L(\theta, \theta^{j})
L(θ,θj) ,得到
θ
j
+
1
\theta^{j+1}
θj+1:
- 如果 θ j + 1 \theta^{j+1} θj+1 收敛,则算法结束。否则继续回到步骤 a )进行 E 步迭代。
- a) E 步。计算联合分布的条件概率期望:
输出:模型参数 θ \theta θ 。
Jensen不等式
定义
设 f 是定义域为实数的函数,如果对所有的实数 x ,f(x) 的二阶导数都大于0,那么 f 是凸函数。
Jensen不等式定义如下:
如果 f 是凸函数,X是随机变量,那么:
E
[
f
(
X
)
]
≥
f
(
E
[
X
]
)
E[f(X)] \geq f(E[X])
E[f(X)]≥f(E[X]) 。当且仅当 X 是常量时,该式取等号。其中,E(X)表示X的数学期望。
注:Jensen不等式应用于凹函数时,不等号方向反向。当且仅当 x 是常量时,该不等式取等号。
实线f表示凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。X的期望值就是a和b的中值,从图中可以看到
E
[
f
(
X
)
]
≥
f
(
E
[
X
]
)
E[f(X)] \geq f(E[X])
E[f(X)]≥f(E[X]) 成立。
EM算法是否一定收敛?
结论:EM算法可以保证收敛到一个稳定点,即EM算法是一定收敛的。
证明参考
如果EM算法收敛,能否保证收敛到全局最大值?
结论:EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。
对EM算法总结
EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。
一个最直观了解EM算法思路的是K-Means算法。在K-Means聚类时,每个聚类簇的质心是隐含数据。我们会假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。当然,K-Means算法是比较简单的,高斯混合模型(GMM)也是EM算法的一个应用。