EM(Expectation Maximization)算法原理小结
适用问题:概率模型参数估计
模型特点:含有隐变量的概率模型
模型类型:-
损失函数:对数似然损失
学习策略:极大似然估计,最大后验概率估计
学习算法:迭代算法
1. EM 算法
EM算法是一种 迭代算法
,用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计。EM算法的每次迭代分2步:
- E步:求期望
- M步:求极大
1.2 为什么需要EM算法?
通常求解概率模型参数时,是采用极大似然估计的方法求解,即目标是极大化观测数据(设为 Y Y Y)关于参数 θ \theta θ的对数似然函数,即极大化 L ( θ ) = l o g P θ ( Y ) L(\theta)=log P_{\theta}(Y) L(θ)=logPθ(Y)或写成 L ( θ ) = l o g P ( Y ∣ θ ) L(\theta)=log P(Y|\theta) L(θ)=logP(Y∣θ)。
当概率模型还含有隐变量
Z
Z
Z时,则
L ( θ ) = l o g P θ ( Y ) = l o g ∑ Z P θ ( Y , Z ) = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) L(\theta)=log P_{\theta}(Y)=log \sum\limits_ZP_{\theta}(Y,Z)=log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z) L(θ)=logPθ(Y)=logZ∑Pθ(Y,Z)=logZ∑Pθ(Y∣Z)Pθ(Z)
此时对数似然函数中
l
o
g
log
log 里含有求和(或者叫积分),很难得到解析解,即无法使用求偏导令其等于0的方式求解,此时则可采用求解
近似最优解
(工程上),那么EM算法就是一种通过迭代,逐步逼近
L
(
θ
)
L(\theta)
L(θ)极大值的方法
。
EM 算法的基本思想:假设在第n次迭代后 θ \theta θ的估计值为 θ n \theta_n θn,则我们希望新的估计值 θ \theta θ能使得 L ( θ ) L(\theta) L(θ)增加,即有 L ( θ ) > L ( θ n ) L(\theta)>L(\theta_n) L(θ)>L(θn),并逐步达到极大值。也就是说,当此时 θ n \theta_n θn为已知,我们的目标就转化为,只要使得: L ( θ ) > L ( θ n ) L(\theta)>L(\theta_n) L(θ)>L(θn),即迭代得到的 θ \theta θ 在不断使得似然变大,那么就可以通过迭代,逐步求得近似最优解(最优解就是似然最大时的解)。
1.2 EM 算法推导
假设当迭代 n 次后,得到参数 θ n \theta_n θn,即此时 θ n \theta_n θn为已知,则
L ( θ ) − L ( θ n ) = l o g P θ ( Y ) − l o g P θ n ( Y ) = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) − l o g P θ n ( Y ) = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) ⏟ I 1 − l o g P θ n ( Y ) ⏟ I 2 \begin{aligned}L(\theta)-L(\theta_n)&=log P_{\theta}(Y)-log P_{\theta_n}(Y)\\&=log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z)-log P_{\theta_n}(Y)\\&= \underbrace{log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z)}_{I_1}-\underbrace{ log P_{\theta_n}(Y)}_{I_2}\end{aligned} L(θ)−L(θn)=logPθ(Y)−logPθn(Y)=logZ∑Pθ(Y∣Z)Pθ(Z)−logPθn(Y)=I1 logZ∑Pθ(Y∣Z)Pθ(Z)−I2 logPθn(Y)
I 1 = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) ⋅ P θ n ( Z ∣ Y ) P θ n ( Z ∣ Y ) = l o g ∑ Z P θ n ( Z ∣ Y ) P θ ( Y ∣ Z ) P θ ( Z ) P θ n ( Z ∣ Y ) ⩾ ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z ) P θ ( Z ) P θ n ( Z ∣ Y ) \begin{aligned}I_1&=log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z)\\&=log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z)\cdot \frac{P_{\theta_n}(Z|Y)}{P_{\theta_n}(Z|Y)}\\&=log \sum\limits_Z P_{\theta_n}(Z|Y) \frac{P_{\theta}(Y|Z)\;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)}\\&\geqslant \sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z)\;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)}\end{aligned} I1=logZ∑Pθ(Y∣Z)Pθ(Z)=logZ∑Pθ(Y∣Z)Pθ(Z)⋅Pθn(Z∣Y)Pθn(Z∣Y)=logZ∑Pθn(Z∣Y)Pθn(Z∣Y)Pθ(Y∣Z)Pθ(Z)⩾Z∑Pθn(Z∣Y)logPθn(Z∣Y)Pθ(Y∣Z)Pθ(Z)
上面
I
1
I_1
I1利用了“琴生不等式”
,即把
P
θ
n
(
Z
∣
Y
)
P_{\theta_n}(Z|Y)
Pθn(Z∣Y)看成权重/系数,且满足
P
θ
n
(
Z
∣
Y
)
⩾
0
P_{\theta_n}(Z|Y)\geqslant0
Pθn(Z∣Y)⩾0以及
∑
Z
P
θ
n
(
Z
∣
Y
)
=
1
\sum\limits_Z P_{\theta_n}(Z|Y)=1
Z∑Pθn(Z∣Y)=1,则可以使用“琴生不等式”
。
【补充】:琴生(Jensen)不等式
当为凸函数时,有 f ( x 1 + x 2 2 ) ⩾ 1 2 [ f ( x 1 ) + f ( x 2 ) ] f(\frac{x_1+x_2}{2})\geqslant \frac{1}{2}[f(x_1)+f(x_2)] f(2x1+x2)⩾21[f(x1)+f(x2)]
推广有: f ( ∑ w i x i ) ⩾ ∑ w i f ( x i ) f(\sum w_i x_i)\geqslant \sum w_i f(x_i) f(∑wixi)⩾∑wif(xi),当 ∑ w i = 1 \sum w_i=1 ∑wi=1 , w i > 0 w_i>0 wi>0 为正数
推广有: f ( E ( X ) ) ⩾ E ( f ( X ) ) f(E(X))\geqslant E(f(X)) f(E(X))⩾E(f(X))
I 2 = l o g P θ n ( Y ) = l o g P θ n ( Y ) ⋅ 1 = l o g P θ n ( Y ) ⋅ ∑ Z P θ n ( Z ∣ Y ) = ∑ Z P θ n ( Z ∣ Y ) l n P θ n ( Y ) \begin{aligned}I_2 & =log P_{\theta_n}(Y)\\&=log P_{\theta_n}(Y) \cdot 1\\&=log P_{\theta_n}(Y) \cdot \sum\limits_Z P_{\theta_n}(Z|Y)\\& =\sum\limits_Z P_{\theta_n}(Z|Y) lnP_{\theta_n}(Y)\end{aligned} I2=logPθn(Y)=logPθn(Y)⋅1=logPθn(Y)⋅Z∑Pθn(Z∣Y)=Z∑Pθn(Z∣Y)lnPθn(Y)
则有:
L ( θ ) − L ( θ n ) = I 1 − I 2 ⩾ ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z ) P θ ( Z ) P θ n ( Z ∣ Y ) − ∑ Z P θ n ( Z ∣ Y ) l o g P θ n ( Y ) = ∑ Z P θ n ( Z ∣ Y ) [ l o g P θ ( Y ∣ Z ) P θ ( Z ) P θ n ( Z ∣ Y ) − l o g P θ n ( Y ) ] = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z ) P θ ( Z ) P θ n ( Z ∣ Y ) P θ n ( Y ) \begin{aligned}L(\theta)-L(\theta_n)=I_1-I_2 &\geqslant \sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z)\;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)}-\sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta_n}(Y)\\&=\sum\limits_Z P_{\theta_n}(Z|Y) \big[ log \frac{P_{\theta}(Y|Z)\;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)}-log P_{\theta_n}(Y)\big]\\&=\sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z) \;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}\end{aligned} L(θ)−L(θn)=I1−I2⩾Z∑Pθn(Z∣Y)logPθn(Z∣Y)Pθ(Y∣Z)Pθ(Z)−Z∑Pθn(Z∣Y)logPθn(Y)=Z∑Pθn(Z∣Y)[logPθn(Z∣Y)Pθ(Y∣Z)Pθ(Z)−logPθn(Y)]=Z∑Pθn(Z∣Y)logPθn(Z∣Y)Pθn(Y)Pθ(Y∣Z)Pθ(Z)
EM算法关键:下边界函数
令 B ( θ ∣ θ n ) = L ( θ n ) + ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z ) P θ ( Z ) P θ n ( Z ∣ Y ) P θ n ( Y ) B(\theta|\theta_n)=L(\theta_n)+\sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z) \;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)} B(θ∣θn)=L(θn)+Z∑Pθn(Z∣Y)logPθn(Z∣Y)Pθn(Y)Pθ(Y∣Z)Pθ(Z),则有:
L ( θ ) ⩾ B ( θ ∣ θ n ) L(\theta) \geqslant B(\theta|\theta_n) L(θ)⩾B(θ∣θn)
称
B
(
θ
∣
θ
n
)
B(\theta|\theta_n)
B(θ∣θn)为
L
(
θ
)
L(\theta)
L(θ)的 下边界函数(这是EM算法的关键)
。
并且此下边界函数还有个特点
:
B
(
θ
n
∣
θ
n
)
=
L
(
θ
n
)
B(\theta_n|\theta_n)=L(\theta_n)
B(θn∣θn)=L(θn)
因为当
θ
=
θ
n
\theta=\theta_n
θ=θn时,
l
o
g
P
θ
(
Y
∣
Z
)
P
θ
(
Z
)
P
θ
n
(
Z
∣
Y
)
P
θ
n
(
Y
)
=
l
o
g
P
θ
n
(
Y
∣
Z
)
P
θ
n
(
Z
)
P
θ
n
(
Z
∣
Y
)
P
θ
n
(
Y
)
=
l
o
g
P
θ
n
(
Y
,
Z
)
P
θ
n
(
Y
,
Z
)
=
l
o
g
1
=
0
log \frac{P_{\theta}(Y|Z) \;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}=log \frac{P_{\theta_n}(Y|Z) \;P_{\theta_n}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}=log\frac{P_{\theta_n}(Y,Z)}{P_{\theta_n}(Y,Z)}=log1=0
logPθn(Z∣Y)Pθn(Y)Pθ(Y∣Z)Pθ(Z)=logPθn(Z∣Y)Pθn(Y)Pθn(Y∣Z)Pθn(Z)=logPθn(Y,Z)Pθn(Y,Z)=log1=0
即有 B ( θ n ∣ θ n ) = L ( θ n ) + 0 B(\theta_n|\theta_n)=L(\theta_n)+0 B(θn∣θn)=L(θn)+0。
因为有 L ( θ ) ⩾ B ( θ ∣ θ n ) L(\theta)\geqslant B(\theta|\theta_n) L(θ)⩾B(θ∣θn)且 L ( θ n ) = B ( θ n ∣ θ n ) L(\theta_n)=B(\theta_n|\theta_n) L(θn)=B(θn∣θn),也就是说任何使得 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θ∣θn)增大的 θ \theta θ,也可以使得 L ( θ ) L(\theta) L(θ)增大,而为了使 L ( θ ) L(\theta) L(θ)有尽可能大的增长,则选择 θ n + 1 \theta_{n+1} θn+1时就选能使 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θ∣θn)达到极大值的 θ \theta θ,即 θ n + 1 = arg max θ B ( θ ∣ θ n ) \theta_{n+1}=\arg \max\limits_{\theta}B(\theta|\theta_n) θn+1=argθmaxB(θ∣θn),即求下边界函数的max,其对应的 θ \theta θ就为 θ n + 1 \theta_{n+1} θn+1。
EM算法解释
通过上图来看一下是如何迭代求解最终的 θ ∗ \theta^* θ∗ 的:
- 当在 θ n \theta_n θn这一点时, L ( θ ) L(\theta) L(θ)与此时的下边界函数 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θ∣θn)(橘色曲线)相切,即有 L ( θ n ) = B ( θ n ∣ θ n ) L(\theta_n)=B(\theta_n|\theta_n) L(θn)=B(θn∣θn),然后求得 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θ∣θn)的max 对应的 θ \theta θ即为 θ n + 1 \theta_{n+1} θn+1,即 θ n + 1 = arg max θ B ( θ ∣ θ n ) \theta_{n+1}=\arg \max\limits_{\theta}B(\theta|\theta_n) θn+1=argθmaxB(θ∣θn)。
- 当在 θ n + 1 \theta_{n+1} θn+1这一点时,此时定有 L ( θ n + 1 ) > L ( θ n ) L(\theta_{n+1})>L(\theta_n) L(θn+1)>L(θn)(因为其下边界在这一点处取得max),此时其对应的下边界函数为 B ( θ ∣ θ n + 1 ) B(\theta|\theta_{n+1}) B(θ∣θn+1)(红色曲线),与 L ( θ ) L(\theta) L(θ)在 θ n + 1 \theta_{n+1} θn+1这点相切。即有 L ( θ n + 1 ) = B ( θ n + 1 ∣ θ n + 1 ) L(\theta_{n+1})=B(\theta_{n+1}|\theta_{n+1}) L(θn+1)=B(θn+1∣θn+1),然后求得 B ( θ ∣ θ n + 1 ) B(\theta|\theta_{n+1}) B(θ∣θn+1)的max 对应的 θ \theta θ即为 θ n + 2 \theta_{n+2} θn+2,即 θ n + 2 = arg max θ B ( θ ∣ θ n + 1 ) \theta_{n+2}=\arg \max\limits_{\theta}B(\theta|\theta_{n+1}) θn+2=argθmaxB(θ∣θn+1)。
- 当在 θ n + 2 \theta_{n+2} θn+2这一点时,此时定有 L ( θ n + 2 ) > L ( θ n + 1 ) L(\theta_{n+2})>L(\theta_{n+1}) L(θn+2)>L(θn+1)(因为其下边界在这一点处取得max),此时其对应的下边界函数为 B ( θ ∣ θ n + 2 ) B(\theta|\theta_{n+2}) B(θ∣θn+2)…
下边界函数也一直在随着迭代变化,即每一步迭代,就会得到新的下边界函数,通过求解新的下边界函数的max去得到新的 θ \theta θ,而新的 L ( θ ) L(\theta) L(θ)一定是在不断增大的,如此迭代下去,不断逼近似然函数的max,以及相对应的参数 θ \theta θ,满足迭代停止条件(例如 ∥ θ n + 1 − θ n ∥ < ϵ \|\theta_{n+1}-\theta_n\|\lt\epsilon ∥θn+1−θn∥<ϵ)时,那么此时得到的 θ \theta θ就可以认为是最优解的近似值,即 θ ∗ \theta^* θ∗,此时对应的似然 L ( θ ∗ ) L(\theta^*) L(θ∗)也近似达到最大值。
迭代逼近优化思想:
总结来说,就是因为前面的对数似然函数的log里有加和项,不能直接通过求偏导令其等于0的方式求解,即求不到解析解,所以就通过这种迭代逼近的方法去得到近似解。
具体实现就是:
求下边界函数 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θ∣θn)的最大值对应的 θ \theta θ,然后通过不断地迭代,其对数似然 L ( θ ) L(\theta) L(θ)也在不断增大,直至找到最优解的近似解。
继续看下边界函数:
B ( θ ∣ θ n ) = L ( θ n ) + ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z ) P θ ( Z ) P θ n ( Z ∣ Y ) P θ n ( Y ) = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z ) P θ ( Z ) + L ( θ n ) − ∑ Z P θ n ( Z ∣ Y ) l o g P θ n ( Z ∣ Y ) P θ n ( Y ) ⏟ 对 θ 来 说 是 常 数 项 = Q ( θ ∣ θ n ) + C ( θ n ) \begin{aligned}B(\theta|\theta_n)&=L(\theta_n)+\sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z) \;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}\\&= \sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y|Z) \;P_{\theta}(Z)+\underbrace{L(\theta_n)- \sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}_{对\theta来说是常数项}\\&=Q(\theta|\theta_n)+C(\theta_n)\end{aligned} B(θ∣θn)=L(θn)+Z∑Pθn(Z∣Y)logPθn(Z∣Y)Pθn(Y)Pθ(Y∣Z)Pθ(Z)=Z∑Pθn(Z∣Y)logPθ(Y∣Z)Pθ(Z)+对θ来说是常数项 L(θn)−Z∑Pθn(Z∣Y)logPθn(Z∣Y)Pθn(Y)=Q(θ∣θn)+C(θn)
即令 Q ( θ ∣ θ n ) = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z ) P θ ( Z ) Q(\theta|\theta_n)=\sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y|Z) \;P_{\theta}(Z) Q(θ∣θn)=Z∑Pθn(Z∣Y)logPθ(Y∣Z)Pθ(Z)。
对下边界函数求偏导,后面常数项求导后就会为0。
Q
Q
Q函数可以看成是下边界函数
B
B
B函数的简化版
。来看一下
Q
Q
Q函数是什么?
Q ( θ ∣ θ n ) = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z ) P θ ( Z ) = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y , Z ) Q(\theta|\theta_n)=\sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y|Z) \;P_{\theta}(Z)= \sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y,Z) Q(θ∣θn)=Z∑Pθn(Z∣Y)logPθ(Y∣Z)Pθ(Z)=Z∑Pθn(Z∣Y)logPθ(Y,Z)
其中
∑
Z
P
θ
n
(
Z
∣
Y
)
l
o
g
P
θ
(
Y
,
Z
)
\sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y,Z)
Z∑Pθn(Z∣Y)logPθ(Y,Z) 可以看成是
l
o
g
P
θ
(
Y
,
Z
)
log P_{\theta}(Y,Z)
logPθ(Y,Z) 以条件概率
P
θ
n
(
Z
∣
Y
)
P_{\theta_n}(Z|Y)
Pθn(Z∣Y) 为概率 求期望
,
即 Expectation w.r.t.
P
θ
n
(
Z
∣
Y
)
P_{\theta_n}(Z|Y)
Pθn(Z∣Y) ,即
E
Z
∣
Y
[
l
o
g
P
θ
(
Y
,
Z
)
]
E_{Z|Y}\big[log P_{\theta}(Y,Z)\big]
EZ∣Y[logPθ(Y,Z)],这个期望就是
Q
Q
Q函数。
Q Q Q函数的定义
完全数据的对数似然函数 log P θ ( Y , Z ) \log P_\theta(Y, Z ) logPθ(Y,Z)关于在给定观测数据 Y Y Y和当前参数 θ n \theta_{n} θn下对未观测数据 Z Z Z的条件概率分布 P θ n ( Z ∣ Y ) P_{\theta_n}\left(Z \mid Y\right) Pθn(Z∣Y)的期望称为Q函数:
Q ( θ ∣ θ n ) = E Z ∣ Y , θ n [ l o g P θ ( Y , Z ) ] Q(\theta|\theta_n)=E_{Z|Y,\theta_n}\big[log P_{\theta}(Y,Z)\big] Q(θ∣θn)=EZ∣Y,θn[logPθ(Y,Z)]
EM算法
1.3 算法总结
最大似然因为含有隐变量不好求解,则通过EM方法,求取似然函数的下边界函数,通过迭代的方法,得到最优解的近似解 θ ∗ \theta^* θ∗。
对下边界函数 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θ∣θn)(或者说 Q ( θ ∣ θ n ) Q(\theta|\theta_n) Q(θ∣θn))求偏导,即令 ∂ Q ( θ ∣ θ n ) ∂ θ = 0 \frac{\partial Q(\theta|\theta_n)}{\partial \theta}=0 ∂θ∂Q(θ∣θn)=0,得到的最优值 θ n + 1 \theta_{n+1} θn+1变成了第n+1次迭代的参数值,再把参数值带回去,构造出下一次的下边界函数 B ( θ ∣ θ n + 1 ) B(\theta|\theta_{n+1}) B(θ∣θn+1)(或者说 Q ( θ ∣ θ n + 1 ) Q(\theta|\theta_{n+1}) Q(θ∣θn+1))…无限逼近真实似然的情况(似然的最大值)。
EM算法是很多机器学习领域算法的基础,比如高斯混合模型参数估计、隐式马尔科夫算法(HMM)等等。
最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~
参考
[1] 统计学习方法(第2版) 李航