Task3 EM算法

简介

EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,其最主要的思想有两步:

  • E:求期望,
  • M: 求极大
    EM算法采用的是启发式的迭代方法,就是当我们无法直接求出模型的参数分布的时候,我们先猜想隐含的数据,根据猜测的隐含数据和观察数据,求对数似然的最大值。然后根据当前模型的参数,继续猜测隐含数据,然后再求极大化似然函数,以此类推迭代下去,直到模型参数的分布基本不变化,那么当前模型的参数,认为是得到极大似然的最好模型参数。

其实K-Means就是这种思想。求质心的过程其实就是E,计算每个样本最近的质心,就是M步。

数学推导


输入:观测数据X,模型参数为θ。极大化模型分布的对数似然为:

对于得到的观察数据有未观察到的隐含数据Z,极大化模型分布的对数似然可以变成:

通过Jensen不等式:

极大化模型分布的对数似然可以变成:
\begin{align} \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta) & = \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} \\ & \geq \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} \end{align}
其中是一个未知的新的分布。

或者说由于对数函数是凹函数,所以有:
f(E(x))≥E(f(x))如果f(x)是凹函数
    此时如果要满足Jensen不等式的等号,则有:
P(x(i),z(i);θ)Qi(z(i))=c,c为常数
    由于Qi(z(i))是一个分布,所以满足:
∑zQi(z(i))=1
    从上面两式,我们可以得到:
Qi(z(i))=P(x(i),z(i);θ)∑zP(x(i),z(i);θ)=P(x(i),z(i);θ)P(x(i);θ)=P(z(i)|x(i);θ))
    如果Qi(z(i))=P(z(i)|x(i);θ)), 则第(2)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要最大化下式:
argmaxθ∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i);θ)Qi(z(i))
    去掉上式中为常数的部分,则我们需要极大化的对数似然下界为:
argmaxθ∑i=1m∑z(i)Qi(z(i))logP(x(i),z(i);θ)
    上式也就是我们的EM算法的M步,那E步呢?注意到上式中Qi(z(i))是一个分布,因此∑z(i)Qi(z(i))logP(x(i),z(i);θ)可以理解为logP(x(i),z(i);θ)基于条件概率分布Qi(z(i))的期望。

至此,我们理解了EM算法中E步和M步的具体数学含义。

EM算法流程

输入: 观察数据x=\left(x^{(1)}, x^{(2)}, \ldots x^{(m)}\right) ,联合分布p(x, z | \theta) ,条件分布p(z | x, \theta) ,极大迭代次数J

  1. 随机初始化模型参数\thetaθ的初值\theta^{0}

  2. from j from 1 to J:
    - E步:计算联合分布的条件概率期望:
    \left.Q_{i}\left(z{(i)}\right):=P\left(z{(i)} | x^{(i)}, \quad \theta\right)\right)

     - M步:极大化L(\theta)L(θ),得到\thetaθ:
    

\theta:=\arg \max {\theta} \sum{i=1}^{m} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log P\left(x^{(i)}, z^{(i)} | \theta\right)
- E,M步骤直到\thetaθ收敛。
- 输出:模型参数\thetaθ

EM算法收敛性的思考

  • 具体的推导参考这个吧 https://www.cnblogs.com/pinard/p/6912636.html
  • EM 算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,如果我们的优化目标是凸的,则EM算法可以保证收敛到全局极大值,这点和梯度下降法这样的迭代算法相同。

EM算法应用

如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。EM的应用包括:
- 支持向量机的SMO算法
- 混合高斯模型
- K-means
- 隐马尔可夫模型

参考资料:


  • 参考资料1:如何通俗理解EM算法

  • 参考资料2:EM算法原理总结

你可能感兴趣的:(Task3 EM算法)