问题描述
最大期望算法(Expectation-Maximization Algorithm, EM),或 Dempster-Laird-Rubin 算法,是一类通过迭代进行极大似然估计的优化算法,通常用于对包含隐变量(latent variable)或缺失数据(incomplete-data)的概率模型进行参数估计。来自百度百科。
具体就不说了,看了李航《统计学习方法》讲的 EM 算法,讲得很棒,但对抛硬币的例子迷茫了好久,书中只给了答案,没有具体的推导过程。然而,看完 “9.1.2 EM算法的导出” 后,我依然不能写出迭代更新公式是怎么来的? π ( i + 1 ) = 1 n ∑ j = 1 n μ j ( i + 1 ) \pi^{(i+1)} = \frac{1}{n}\sum_{j=1}^{n}\mu_j^{(i+1)} π(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 ) p^{(i+1)} = \frac{\sum_{j=1}^{n} \mu_j^{(i+1)} y_j} {\sum_{j=1}^{n} \mu_j^{(i+1)}} p(i+1)=∑j=1nμj(i+1)∑j=1nμj(i+1)yj q ( i + 1 ) = ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) y j ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) q^{(i+1)} = \frac{\sum_{j=1}^{n} (1 - \mu_j^{(i+1)}) y_j} {\sum_{j=1}^{n} (1-\mu_j^{(i+1)})} q(i+1)=∑j=1n(1−μj(i+1))∑j=1n(1−μj(i+1))yj 其中 μ ( 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)} (p^{(i)})^{(y_j)} (1-p^{(i)})^{(1-y_j)}} {\pi^{(i)} (p^{(i)})^{(y_j)} (1-p^{(i)})^{(1-y_j)} + (1-\pi^{(i)}) (q^{(i)})^{(y_j)} (1-q^{(i)})^{(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)。
“9.1.2 EM算法的导出” 一节对 EM 算法的由来讲得很详细。后来,琢磨抛硬币的计算时,却陷入苦恼,“你写不出来,就是没理解!” 先写出书中的公式 (9.17): θ ( i + 1 ) = a r g m a x θ ( ∑ Z P ( Z ∣ Y , θ ( i ) ) l o g [ P ( Y ∣ Z , θ ) P ( Z ∣ θ ) ] ) \theta^{(i+1)} = arg\ \underset {\theta} {max} \left (\sum_Z P(Z|Y,\theta^{(i)})\ log \left [ P(Y|Z,\theta) P(Z|\theta) \right ] \right ) θ(i+1)=arg θmax(Z∑P(Z∣Y,θ(i)) log[P(Y∣Z,θ)P(Z∣θ)]) 我觉得写到这就好了,更方便理解。
主要是两个问题:(1) μ j ( i + 1 ) \mu_j^{(i+1)} μj(i+1) 是啥?(2)长长的 n n n 次抛币,怎么表达其似然公式?
先看 (1),之所以不知 μ j ( i + 1 ) \mu_j^{(i+1)} μj(i+1),是因为没理解公式中 P ( Z ∣ Y , θ ( i ) ) P(Z|Y,\theta^{(i)}) P(Z∣Y,θ(i)) 是啥,它就是:已知了一个临时模型 θ ( i ) \theta^{(i)} θ(i) 和观察 Y Y Y,求隐变量的条件(后验)概率分布,那对应到抛硬币的隐变量 “A 朝上” 的后验概率 μ j ( i + 1 ) \mu_j^{(i+1)} μj(i+1),“A 朝下” 为 1 − μ j ( i + 1 ) 1 - \mu_j^{(i+1)} 1−μj(i+1)。
所以,现在代入 (9.17),就是 θ ( i + 1 ) = a r g m a x θ ( μ j ( i + 1 ) l o g [ π p ( y j ) ( 1 − p ) ( 1 − y j ) ] + ( 1 − μ j ( i + 1 ) ) l o g [ ( 1 − π ) q ( y j ) ( 1 − q ) ( 1 − y j ) ] ) \theta^{(i+1)} = arg\ \underset {\theta} {max} \left (\mu_j^{(i+1)} log[ \pi p^{(y_j)} (1-p)^{(1-y_j)}] + (1-\mu_j^{(i+1)}) log[(1-\pi) q^{(y_j)} (1-q)^{(1-y_j)}] \right ) θ(i+1)=arg θmax(μj(i+1)log[πp(yj)(1−p)(1−yj)]+(1−μj(i+1))log[(1−π)q(yj)(1−q)(1−yj)]) 但是,这里面带着 j j j,说明这只是一次实验,那 n n n 次实验的表达式如何写?
现在看第二个问题 (2)。可以从两个角度去理解:公式角度和直观角度。
公式角度:(9.17)是关于一次实验的,现在重写它
θ
(
i
+
1
)
=
a
r
g
m
a
x
θ
(
∑
Z
P
(
Z
∣
Y
,
θ
(
i
)
)
l
o
g
[
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
]
)
=
a
r
g
m
a
x
θ
(
∑
Z
l
o
g
[
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
]
P
(
Z
∣
Y
,
θ
(
i
)
)
)
=
a
r
g
m
a
x
θ
(
∏
Z
[
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
]
P
(
Z
∣
Y
,
θ
(
i
)
)
)
\begin{aligned} \theta^{(i+1)} &= arg\ \underset {\theta} {max} \left (\sum_Z P(Z|Y,\theta^{(i)})\ log \left [ P(Y|Z,\theta) P(Z|\theta) \right ] \right ) \\ &= arg\ \underset {\theta} {max} \left (\sum_Z log \left [ P(Y|Z,\theta) P(Z|\theta) \right ]^{P(Z|Y,\theta^{(i)})} \right ) \\ &= arg\ \underset {\theta} {max} \left (\prod_{Z} \left [ P(Y|Z,\theta) P(Z|\theta) \right ]^{P(Z|Y,\theta^{(i)})} \right ) \end{aligned}
θ(i+1)=arg θmax(Z∑P(Z∣Y,θ(i)) log[P(Y∣Z,θ)P(Z∣θ)])=arg θmax(Z∑log[P(Y∣Z,θ)P(Z∣θ)]P(Z∣Y,θ(i)))=arg θmax(Z∏[P(Y∣Z,θ)P(Z∣θ)]P(Z∣Y,θ(i))) 由于各次实验没有关联,故多次实验的最大化似然可以累乘:
θ
(
i
+
1
)
=
a
r
g
m
a
x
θ
(
∏
j
=
1
n
∏
Z
[
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
]
P
(
Z
∣
Y
,
θ
(
i
)
)
)
\begin{aligned} \theta^{(i+1)} = arg\ \underset {\theta} {max} \left (\prod_{j=1}^{n}\prod_{Z} \left [ P(Y|Z,\theta) P(Z|\theta) \right ]^{P(Z|Y,\theta^{(i)})} \right ) \end{aligned}
θ(i+1)=arg θmax(j=1∏nZ∏[P(Y∣Z,θ)P(Z∣θ)]P(Z∣Y,θ(i))) 反映到最终的公式上就是外面套了个累加
∑
j
=
1
n
\sum_{j=1}^{n}
∑j=1n,再求最大化即可。
直观角度:各次实验独立,那么我们只需要将所有的实验都最大化,合起来也是累加。