EM算法,即最大期望算法(Expectation-maximization algorithm),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型 依赖于无法观测的隐性变量

最大期望算法经过两个步骤交替进行计算,
第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;
第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。
多数情况下我们是根据已知条件来推算结果,而最大似然估计是已经知道了结果,然后寻求使该结果出现的可能性最大的条件,以此作为估计值。似然描述的是结果已知的情况下,该事件在不同条件下发生的可能性,似然函数的值越大说明该事件在对应的条件下发生的可能性越大。

算法推导

对于$m$个样本观察数据${x^{(1)},x^{(2)},x^{(3)}…,x^{(m)}}$,找出样本的模型参数$θ$, 极大化模型分布的对数似然函数如下
$$
\begin{aligned}
θ={\arg\max}_θ \sum_i \log⁡ {P(x^i;θ)}
\end{aligned}
$$
如果我们得到的观察数据有未观察到的隐含数据$z={z^{(1)},z^{(2)},z^{(3)}…,z^{(m)}}$,此时我们的极大化模型分布的对数似然函数如下:
$$
θ={\arg\max}_θ \sum_i \log {P(x^i;\theta)}={\arg\max}_θ \sum_i \log \sum_z {p(x^i,z^i;\theta)}
$$
第一步是对极大似然取对数,第二步是对每个样例的每个可能类别$z$求联合分布概率和。
首先,我们把分子分母同乘以一个相等的函数(即隐变量$Z$的概率分布$Q_i {(z^{(i)})}$,其概率之和等于1,即$\sum_z Q_i {(z^{(i)})}=1$。其次,利用Jensen不等式(即,在凸函数中,有函数的期望大于等于期望的函数,即$E[f(X)]>=f(E[X])$;当$f$是(严格)凹函数当且仅当$-f$是(严格)凸函数,不等号方向反向),我们将上式进行缩放,可得:
$$
\begin{aligned}
\sum_i \log p(x^{(i)};\theta)=\sum_t \log \sum_{z^{(i)}} p(x^{(i)},z^{(i)};\theta) \\
=\sum_i \log \sum_{z^{(i)}} Q_i {(z^{(i)})} \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i {(z^{(i)})}} \\
\geq \sum_i \sum_{z^{(i)}} Q_i {(z^{(i)})} \log \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i {(z^{(i)})}}
\end{aligned}
$$
其中$\sum_{z^{(i)}} Q_i {(z^{(i)})} \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i {(z^{(i)})}}$就是$\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i {(z^{(i)})}}$的期望,$log$函数为凹函数(其二次导数为$\frac{−1}{x^2}<0$)。
此时如果要满足Jensen不等式的等号,则有:
$$
\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i {(z^{(i)})}}=c,c为常数
$$
对该式做个变换,并对所有的z求和,得到
$$
\sum_z p(x^{(i)},z^{(i)};\theta)=\sum_z Q_i {(z^{(i)})}c
$$
由于$Q_i {(z^{(i)})}$是一个分布,所以满足$\sum_z Q_i {(z^{(i)})}=1 $
可得:
$$
\sum_z p(x^{(i)},z^{(i)};\theta) = c \\
Q_i {(z^{(i)})}=\frac{p(x^{(i)},z^{(i)};\theta)}{c}=
\frac{p(x^{(i)},z^{(i)};\theta)}{\sum_z p(x^{(i)},z^{(i)};\theta)}=\frac{p(x^{(i)},z^{(i)};\theta)}{p(x^{(i)};\theta)} = p(z^{(i)}|x^{(i)};\theta)
$$
至此,我们推出了在固定参数$θ$后,使下界拉升的$Q_i {(z^{(i)})}$的计算公式就是条件概率,解决了$Q_i {(z^{(i)})}$如何选择的问题。这一步就是E步,建立$L(θ)$的下界。接下来的M步,就是在给定$Q_i {(z^{(i)})}$后,调整$θ$:
$$
\begin{aligned}
{\arg\max}_θ \sum_i \sum_{z^{(i)}} Q_i {(z^{(i)})} \log
\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i {(z^{(i)})}}
\end{aligned}
$$
去掉上式中为常数的部分,则我们需要极大化的对数似然下界为:
$$
\begin{aligned}
{\arg\max}_θ \sum_i \sum_{z^{(i)}} Q_i {(z^{(i)})} \log
{p(x^{(i)},z^{(i)};\theta)}
\end{aligned}
$$
上式也就是我们的EM算法的M步。

EM算法能保证收敛吗?如果收敛,那么能保证收敛到全局最大值吗?

要证明EM算法收敛,则我们需要证明我们的 对数似然函数的值在迭代的过程中一直在增大。
$$
\sum_{i=1}^m \log {P(x^i;\theta^{j+1})} \geq \sum_{i=1}^m \log {P(x^i;\theta^{j})}
$$
由于:
$$
L(\theta;\theta^{j})=\sum_{i=1}^m \sum_{z^i} P(z^{(i)}|x^i;\theta^j) \log P(x^{(i)},z^{(i)};\theta)
$$
令:
$$
H(\theta;\theta^{j})=\sum_{i=1}^m \sum_{z^i} P(z^{(i)}|x^i;\theta^j) \log P(z^{(i)}|x^i;\theta^j)
$$
上两式相减得到:
$$
\sum_{i=1}^m \log P(x^i;\theta)=L(\theta;\theta^{j})-H(\theta;\theta^{j})
$$
在上式中分别取$θ$为$θ^j$和$θ^(j+1)$,并相减得到
$$
\sum_{i=1}^m \log P(x^i;\theta^{j+1})-\sum_{i=1}^m \log P(x^i;\theta^{j})=[L(\theta^{j+1};\theta^{j})-L(\theta^{j};\theta^{j})]-[H(\theta^{j+1};\theta^{j})-H(\theta^{j};\theta^{j})]
$$
要证明EM算法的收敛性,我们只需要证明上式的右边是非负的即可。
由于$θ^{j+1}$使得$ L(θ,θ^j )$极大,因此有:
$$
L(\theta^{j+1};\theta^{j})-L(\theta^{j};\theta^{j}) \geq 0
$$
而对于第二部分,我们有:
$$
\begin{aligned}
H(\theta^{j+1};\theta^{j})-H(\theta^{j};\theta^{j})=& \sum_{i=1}^m \sum_{z^i} P(z^{(i)}|x^i;\theta^j) \log \frac {P(z^{(i)}|x^i;\theta^{j+1}) }{P(z^{(i)}|x^i;\theta^{j}) } \\
\leq &\sum_{i=1}^m \log (\sum_{z^i} P(z^{(i)}|x^i;\theta^{j}) \frac{P(z^{(i)}|x^i;\theta^{j+1})}{P(z^{(i)}|x^i;\theta^{j})}) \\
=& \sum_{i=1}^m \log (\sum_{z^i} P(z^{(i)}|x^i;\theta^{j+1}))=0
\end{aligned}
$$
其中第2式用到了Jensen不等式,只不过和之前使用相反而已,第3式用到了概率分布累积为1的性质。
至此,我们得到了
$$
\sum_{i=1}^m \log {P(x^i;\theta^{j+1})} - \sum_{i=1}^m \log {P(x^i;\theta^{j})} \geq 0
$$
证明了EM算法的收敛性。从上面的推导可以看出,EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标$L(θ,θ^j)$是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。比较下其他的机器学习算法,其实很多算法都有类似的思想。比如SMO算法,坐标轴下降法(Lasso回归算法), 都使用了类似的思想来求解问题。