EM算法

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回归算法), 都使用了类似的思想来求解问题。

posted @ 2019-05-22 17:11  Jamest  阅读(323)  评论(0编辑  收藏  举报