EM算法原理总结

EM算法作为非监督学习的一种特有优化算法,可以解决最大似然问题当中隐变量不可观测而难以优化的问题。下面我们对EM算法做一下总结。

1. 引子--高斯混合模型(GMM)

假设我们有m个数据 需要聚类(这些数据的类别 未知)。我们尝试给数据建立概率模型, 数据服从联合概率分布:$ p(x^{(i)}, z^{(i)}) = p(x^{(i)} | z^{(i)}) \cdot p(z^{(i)})$。这里 $ z^{(i)} $服从多项式分布,而 $ x^{(i)} | z^{(i)} $ 服从多元高斯分布。也即有z^{(i)} \sim Multinomial(\phi ) 和 x^{(i)} | z^{(i)}=j \sim N(u_j, \Sigma_j)。我们假设数据可能有 k 个分类,如此,我们可以这样理解该模型:首选以多项式概率分布随机从 1...k 中选出 z,之后x基于z服从k个多元高斯分布中的一个。以上模型,我们把它叫做高斯混合模型(the Mixture of Gaussian model)。

概率模型建立好之后,之后最大似然概率模型的建立就比较简单了。现在我们有未知参数 \phi, \mu, \Sigma, 最大似然概率可以写成如下格式:

                                               \L(\phi, \mu, \Sigma) \\ &= \sum_{i=1}^mlog(p(x^{(i)})) \\ &= \sum_{i=1}^mlog\sum_{z^{(i)}}p(x^{(i)}, z^{(i)}) \\ &= \sum_{i=1}^mlog\sum_{\phi=1}^kp(x^{(i)}| z^{(i)}=\phi)\cdot p(z^{(i)}=\phi)

注意公式的第二行,不同于监督学习的最大似然公式中概率为条件概率,这里由于z是隐变量观测不到的,我们只使用p(x)。如果将多元高斯以及多项式分布公式代入上式,我们可以发现对上式求导并使导数为0,是很难求得参数变量的(求导可以,但让其等于0再解方程是比较困难的)。另外为什么工程上不使用梯度下降法,这点我并没有取查证,应该也不会是方便的途径。

2. EM算法

现实当中的例子还有很多是具有隐变量的,往往也有最大似然函数不易求导或者不易算出解析解。那么是否有一个妥当的方法可以解决这个优化问题呢?

我们考虑更为宽泛的应用场景,依然有m个数据 需要聚类,z是不可观测数据,模型参数为\theta,最大似然概率为:

                                                     \L(\theta) \\ &= \sum_{i=1}^mlog(p(x^{(i)}); \theta) \\ &= \sum_{i=1}^mlog\sum_{z}p(x^{(i)}, z; \theta)

在这种情况下,显式地求解该优化问题可能有困难,但是我们可以使用另外一种策略:重复求取\L(\theta)的下界的极大值来慢慢逼近\L(\theta)的极大值,而该下界求极值相对来说是易于实现的

首先我们来确定\L(\theta)的下界,假设z服从于某个分布Q:z^{(i)} \sim Q_i 。                

                                                \L(\theta) &=\sum_{i=1}^mlog\sum_{z{(i)}}p(x{(i)}, z{(i)}) \\ &=\sum_{i=1}^mlog\sum_{z{(i)}} Q_i(z{(i)}) \cdot p(x{(i)}, z{(i)}) / Q_i(z{(i)})

上式中,p(x{(i)}, z{(i)}) / Q_i(z{(i)})可以看作是关于z{(i)}的随机变量Y_i,而Q_iz{(i)}的概率分布,依据期望的定义,\sum_{z{(i)}} Q_i(z{(i)}) \cdot p(x{(i)}, z{(i)}) / Q_i(z{(i)})可看作E[Y_i]

                                               \L(\theta)=\sum_{i=1}^m log \cdot E[Y_i]

由Jensen不等式,我们知道对于凹函数f以及随机变量X有:f(E[X]) >= E[f(X)],所以有

                                             \L(\theta)&=\sum_{i=1}^m log \cdot E[Y_i] \\ >= \sum_{i=1}^m E[log(Y_i)] \\ &= \sum_{i=1}^m\sum_{z(i)} Q_i(z(i)) \cdot log(p(x(i), z(i)) / Q_i(z(i)))

这样,下界就找到了;但是我们希望下界尽可能地接近原函数,最好是紧的,也就是当Yi是常量(Jensen不等式等号成立)的时候。再因\sum_{z(i)}Q_i(z(i)) = 1,我们可以设

                                       Q_i(z(i)) = p(x(i), z(i)) / \sum_{z(i)} p(x(i), z(i)) \\ &= p(x(i), z(i)) / p(x(i)) \\ &= p(z(i)|x(i))

这样,当Q(z)等于上述式子的时候,一个紧的下界就找到了(当然,p(z|x)不一定容易求取,所以可以借助使用变分推断等方法),而上式就是EM算法里的 E-STEP。有了zi的分布,再求\L(\theta)的极大值以及其对应的参数就相对容易了

                                    \theta = argmax_{\theta} \sum_i \sum_{z(i)} Q_i(z(i))log(p(x(i), z(i)) / Q_i(z(i)))

上式为EM算法中的 M-STEP

事实上,如果从算法步骤的角度理解EM算法,E步相当于固定住模型参数而优化对应的不可观测数据分布,而M步相当于固定不可观测数据的分布之后优化相关模型参数,如此交替进行。从这个角度讲EM算法和SMO或者坐标轴下降法是很相似的

3. EM算法的收敛性

下面我们来推导该算法的收敛性。要证明该算法收敛,只要证明第 t+1 个迭代的参数对应似然函数 \L (\theta^{t+1}) 恒大于等于 第 t 个迭代的参数对应似然函数  \L (\theta^{t})

由Jensen不等式,我们一定可以得到:

                             \L (\theta^{t+1}) \geqslant \sum_i \sum_{z(i)} Q_i(z(i))log(p(x(i), z(i); \theta^{t+1}) / Q_i(z(i)))

上式对于任意的分布Q成立,当然也对Q_i^{(t)}(z(i))所以:

                            \L (\theta^{t+1}) \geqslant \sum_i \sum_{z(i)} Q_i^{(t)}(z(i))log(p(x(i), z(i); \theta^{t+1}) / Q_i^{(t)}(z(i)))

再由

                          \theta^{(t+1)} = argmax_{\theta} \sum_i \sum_{z(i)} Q_i^{(t)}(z(i))log(p(x(i), z(i);\theta) / Q_i^{(t)}(z(i)))

                      \L (\theta^{t+1}) \geqslant \sum_i \sum_{z(i)} Q_i^{(t)}(z(i))log(p(x(i), z(i); \theta^{(t+1)}) / Q_i^{(t)}(z(i))) \\ \geqslant \sum_i \sum_{z(i)} Q_i^{(t)}(z(i))log(p(x(i), z(i); \theta^{(t)}) / Q_i^{(t)}(z(i))) \\ &= \L (\theta^{t})

证毕。

4. 对GMM使用EM算法

现在已经证明了通用EM算法的合理性,GMM作为一个特殊应用场景,它的E-STEP和M-STEP具体是什么这里就不作详细表述,有兴趣的同学可以查看吴恩达老师CS229课程的讲义, 我们这里给出结论:

E-STEP,对于每一个 i(对应样本标签)和 j(对应类别标签),我们计算参数w:

M-STEP, 更新参数:

5. EM算法的特点

基于EM算法的GMM模型具有以下特点。

1. 相比较于K-means把数据“硬性”地分到某一个类别,EM除了也能做到分类,对于每一个数据都可以得出其属于某一个类别的可能性,它更像是一个“软性”的分类

2. EM算法对于初始参数的设置是敏感的,因为它有可能收敛到局部极小值。所以在实际应用当中,我们可以多试几个初始点。另外EM算法的初始参数也不像K-means那样数量较少,一个可行的方法是,先用K-means算法计算出每个类别数据大致的簇心,将其作为\mu_j使用之后再使用EM算法继续计算。

参考文献:

[1] 吴恩达 cs229 课堂笔记及视频

[2] https://www.cnblogs.com/jiangxinyang/p/9278608.html

[3] EM算法原理总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值