斯坦福大学机器学习——EM算法求解高斯混合模型
2014-11-17 16:57
381 查看
EM算法(Expection-Maximizationalgorithm,EM)是一种迭代算法,通过E步和M步两大迭代步骤,每次迭代都使极大似然函数增加。但是,由于初始值的不同,可能会使似然函数陷入局部最优。辜丽川老师和其夫人发表的论文:基于分裂EM算法的GMM参数估计(提取码:77c0)改进了这一缺陷。下面来谈谈EM算法以及其在求解高斯混合模型中的作用。
一、 高斯混合模型(Gaussian MixtureModel, GMM)
之前写过高斯判别分析模型,利用参数估计的方法用于解决二分类问题。下面介绍GMM,它是对高斯判别模型的一个推广,也能借此引入EM算法。
假设样本集为
![](http://latex.codecogs.com/gif.latex?\{x^{(1)},x^{(2)},...,x^{(m)}\})
并且样本和标签满足联合分布
![](http://latex.codecogs.com/gif.latex?p(x^{(i)},z^{(i)})=p(x^{(i)}|z^{(i)})p(z^{(i)}))
。这里:
![](http://latex.codecogs.com/gif.latex?z^{(i)})
服从多项式分布,即
![](http://latex.codecogs.com/gif.latex?z^{(i)}\sim&space;Multinomial(\phi))
(
![](http://latex.codecogs.com/gif.latex?\phi_{j}=p(z^{(i)}=j))
,
![](http://latex.codecogs.com/gif.latex?\phi_{j}\ge&space;0)
,
![](http://latex.codecogs.com/gif.latex?\underset{j=1}{\overset{k}{\sum}}\phi_{j}=1)
),且
![](http://latex.codecogs.com/gif.latex?z\in\{1,2,...,k\})
;在
![](http://latex.codecogs.com/gif.latex?z^{(i)})
给定的情况下,
![](http://latex.codecogs.com/gif.latex?x^{(i)})
服从正态分布,即
![](http://latex.codecogs.com/gif.latex?x^{(i)}|z^{(i)}=j\sim&space;N(\mu_{j},\Sigma_{j}))
。这样的模型称为高斯混合模型。
该模型的似然函数为:
![](http://latex.codecogs.com/gif.latex?\begin{aligned}l(\phi,\mu,\Sigma)&=\underset{i=1}{\overset{m}{\sum}}log\;&space;p(x^{(i)};\phi,\mu,\Sigma)\\&space;&=&space;\underset{i=1}{\overset{m}{\sum}}log&space;\underset{z^{(i)}=1}{\overset{k}{\sum}}p(x^{(i)}|z^{(i)};\mu,\Sigma)p(z^{(i)};\phi)&space;\end{aligned})
如果直接令
![](http://latex.codecogs.com/gif.latex?l(\phi,\mu,\Sigma))
的各变量偏导为0,试图分别求出各参数,我们会发现根本无法求解。但如果变量
![](http://latex.codecogs.com/gif.latex?z^{(i)})
是已知的,求解便容易许多,上面的似然函数可以表示为:
![](http://latex.codecogs.com/gif.latex?l(\phi,\mu,\Sigma)=\underset{i=1}{\overset{m}{\sum}}log\;p(x^{(i)}|z^{(i)};\mu,\Sigma)+log\;p(z^{(i)};\phi))
利用偏导求解上述式,可分别得到参数
![](http://latex.codecogs.com/gif.latex?\phi,\mu,\Sigma)
的值:
![](http://latex.codecogs.com/gif.latex?\phi_{j}=\frac{1}{m}\underset{i=1}{\overset{m}{\sum}}\&hash;\{z^{(i)}=j\})
![](http://latex.codecogs.com/gif.latex?\mu_{j}=\frac{\underset{i=1}{\overset{m}{\sum}}\&hash;\{z^{(i)}=j\}x^{(i)}}{\underset{i=1}{\overset{m}{\sum}}\&hash;\{z^{(i)}=j\}})
![](http://latex.codecogs.com/gif.latex?\Sigma_{j}=\frac{\underset{i=1}{\overset{m}{\sum}}\&hash;\{z^{(i)}=j\}(x^{(i)}-\mu_{j})(x^{(i)}-\mu_{j})^T}{\underset{i=1}{\overset{m}{\sum}}\&hash;\{z^{(i)}=j\}})
其中,#{ }为指示函数,表示满足括号内条件的数目。
那么,变量
![](http://latex.codecogs.com/gif.latex?z^{(i)})
无法通过观察直接得到,
![](http://latex.codecogs.com/gif.latex?z^{(i)})
就称为隐变量,就需要通过EM算法,求解GMM了。下面从Jensen不等式开始,介绍下EM算法:
二、 Jensen不等式(Jensen’s inequality)
引理:如果函数f的定义域为整个实数集,并且对于任意x或
![](http://latex.codecogs.com/gif.latex?\overset{\rightarrow}{x})
存在
![](http://latex.codecogs.com/gif.latex?f''(x)\ge&space;0)
或函数的Hessian矩阵
![](http://latex.codecogs.com/gif.latex?H\ge0)
,那么函数f称为凹函数。
![](http://latex.codecogs.com/gif.latex?f''(x)>&space;0)
或函数的Hessian矩阵H>0,那么函数f为严格凹函数。
(存在
![](http://latex.codecogs.com/gif.latex?f''(x)\le&space;0)
或函数的Hessian矩阵
![](http://latex.codecogs.com/gif.latex?H\le0)
,那么函数f称为凸函数;如果
![](http://latex.codecogs.com/gif.latex?f''(x)<&space;0)
或函数的Hessian矩阵
H<0,那么函数f为严格凸函数。)
定理:如果函数f是凹函数,X为随机变量,那么:
\ge&space;f(EX)]
![](http://latex.codecogs.com/gif.latex?E[f(x)]\ge&space;f(EX))
不幸的是很多人都会讲Jensen不等式记混,我们可以通过图形的方式帮助记忆。下图中,横纵坐标轴分别为X和f(X),f(x)为一个凹函数,a、b分别为变量X的定义域,E[X]为定义域X的期望。图中清楚的看到各个量的位置和他们间的大小关系。反之,如果函数f是凸函数,X为随机变量,那么:
\le&space;f(EX)]
![](http://latex.codecogs.com/gif.latex?E[f(x)]\le&space;f(EX))
Jensen不等式等号成立的条件为:=X]
![](http://latex.codecogs.com/gif.latex?E[X]=X)
,即X为一常数。
![](http://img.blog.csdn.net/20141118092552825?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlua2luMTAwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
三、 EM算法
假设训练集
![](http://latex.codecogs.com/gif.latex?\{x^{(1)},x^{(2)},...,x^{(m)}\})
是由m个独立的样本构成。我们的目的是要对
![](http://latex.codecogs.com/gif.latex?p(x,z))
概率密度函数进行参数估计。它的似然函数为:
![](http://latex.codecogs.com/gif.latex?\begin&space;{aligned}l(\theta)&=\underset{i=1}{\overset{m}{\sum}}log\;p(x,\theta)\\&space;&=\underset{i=1}{\overset{m}{\sum}}log\underset{z}{\sum}p(x,z;\theta)&space;\end{aligned})
然而仅仅凭借似然函数,无法对参数进行求解。因为这里的随机变量
![](http://latex.codecogs.com/gif.latex?z^{(i)})
是未知的。
EM算法提供了一种巧妙的方式,可以通过逐步迭代逼近最大似然值。下面就来介绍下EM算法:
假设对于所有i,
![](http://latex.codecogs.com/gif.latex?Q_{i})
皆为随机变量
![](http://latex.codecogs.com/gif.latex?z^{(i)})
的分布函数。即:
![](http://latex.codecogs.com/gif.latex?\sum_{Z}Q_{i}(z)=1,Q_{i}(z)\ge0)
。那么:
![](http://latex.codecogs.com/gif.latex?\begin{aligned}l(\theta)&=\underset{i}{\sum}log&space;\;&space;p(x^{(i)};\theta)\\&space;&=\underset{i}{\sum}log\underset{z^{(i)}}{\sum}p(x^{(i)},z^{(i)};\theta)\quad\quad\quad\quad&space;&(1)\\&=\underset{i}{\sum}log\underset{z^{(i)}}{\sum}Q_{i}(z^{(i)})\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})}&(2)\\&space;&\ge&space;\underset{i}{\sum}\underset{z^{(i)}}{\sum}Q_{i}(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})}&(3)&space;\end{aligned})
其中第(2)步至第(3)步的推导就使用了Jensen不等式。其中:f(x)=log x,
![](http://latex.codecogs.com/gif.latex?f''(x)=-\frac{1}{x^{2}}<0)
,因此为凸函数;
![](http://latex.codecogs.com/gif.latex?\underset{z^{(i)}}{\sum}Q_{i}(z^{(i)})\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})
表示随机变量为
![](http://latex.codecogs.com/gif.latex?Q_{i}(z^{(i)}))
概率分布函数为
![](http://latex.codecogs.com/gif.latex?\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})
的期望。因此有:
)\ge&space;\underset{z^{(i)}\sim&space;Q_{i}}{E}[f(\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})]]
![](http://latex.codecogs.com/gif.latex?f(\underset{z^{(i)}\sim&space;Q_{i}}{E}[\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})}])\ge&space;\underset{z^{(i)}\sim&space;Q_{i}}{E}[f(\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})])
这样,对于任意分布
![](http://latex.codecogs.com/gif.latex?Q_{i})
,(3)都给出了
![](http://latex.codecogs.com/gif.latex?l(\theta))
的一个下界。如果我们现在通过猜测初始化了一个
![](http://latex.codecogs.com/gif.latex?\theta)
的值,我们希望得到在这个特定的
![](http://latex.codecogs.com/gif.latex?\theta)
下,更紧密的下界,也就是使等号成立。根据Jensen不等式等号成立的条件,当
![](http://latex.codecogs.com/gif.latex?\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})
为一常数时,等号成立。即:
![](http://latex.codecogs.com/gif.latex?\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})}&space;=c)
由上式可得
![](http://latex.codecogs.com/gif.latex?p(x^{(i)},z^{(i)};\theta)=cQ_{i}(z^{(i)}))
,又
![](http://latex.codecogs.com/gif.latex?\sum_{Z}Q_{i}(z)=1)
,因此
![](http://latex.codecogs.com/gif.latex?p(x^{(i)},z^{(i)};\theta)=c)
。再由上式可得:
![](http://latex.codecogs.com/gif.latex?\begin&space;{aligned}Q_{i}(z^{(i)})&=\frac{p(x^{(i)},z^{(i)};\theta)}{\sum_{z}{p(x^{(i)},z;\theta)}}\\&=\frac{p(x^{(i)},z^{(i)};\theta)}{{p(x^{(i)};\theta)}}\\&=p(z^{(i)}|x^{(i)};\theta)&space;\end{aligned})
上述等式最后一步使用了贝叶斯公示。
EM算法有两个步骤:
(1)通过设置初始化
![](http://latex.codecogs.com/gif.latex?\theta)
值,求出使似然方程最大的
![](http://latex.codecogs.com/gif.latex?Q_{i})
值,此步骤称为E-步(E-step)
(2)利用求出的
![](http://latex.codecogs.com/gif.latex?Q_{i})
值,更新
![](http://latex.codecogs.com/gif.latex?\theta)
。此步骤称为M-步(M-step)。过程如下:
repeat until convergence{
(E-step) for each i, set
![](http://latex.codecogs.com/gif.latex?Q_{i}(z^{(i)}):=p(z^{(i)}|x^{(i)};\theta))
![](http://latex.codecogs.com/gif.latex?Q_{i}(z^{(i)})=p(z^{(i)}|x^{(i)};\theta))
(M-step) set
![](http://latex.codecogs.com/gif.latex?\theta:=arg\,\underset{\theta}{max}\underset{i}{\sum}\underset{z^{(i)}}{\sum}Q_{i}(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})
}
那么,如何保证EM算法是收敛的呢?下面给予证明:
假设
![](http://latex.codecogs.com/gif.latex?\theta^{(t)})
和
![](http://latex.codecogs.com/gif.latex?\theta^{(t+1)})
是EM算法第t次和第t+1次迭代所得到的参数
![](http://latex.codecogs.com/gif.latex?\theta)
的值,如果有
![](http://latex.codecogs.com/gif.latex?l(\theta^{(t)})\le&space;l(\theta^{(t+1)}))
,即每次迭代后似然方程的值都会增大,通过逐步迭代,最终达到最大值。以下是证明:
![](http://latex.codecogs.com/gif.latex?\begin{aligned}&space;l(\theta^{(t+1)})&space;&\ge&space;\underset{i}{\sum}\underset{z^{(i)}}{\sum}Q_{i}^{(t)}(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\theta^{(t+1)})}{Q_{i}^{(t)}(z^{(i)})}\quad\quad&(4)\\&space;&\ge&space;\underset{i}{\sum}\underset{z^{(i)}}{\sum}Q_{i}^{(t)}(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\theta^{(t)})}{Q_{i}^{(t)}(z^{(i)})}&(5)\\&space;&=l(\theta^{(t)})&(6)&space;\end&space;{aligned})
不等式(4)是由不等式(3)得到,对于任意
![](http://latex.codecogs.com/gif.latex?Q_{i})
和
![](http://latex.codecogs.com/gif.latex?\theta)
值都成立;得到不等式(5)是因为我们需要选择特定的
![](http://latex.codecogs.com/gif.latex?\theta^{(t+1)})
使得方程
![](http://latex.codecogs.com/gif.latex?arg\,\underset{\theta}{max}\underset{i}{\sum}\underset{z^{(i)}}{\sum}Q_{i}(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})
在
![](http://latex.codecogs.com/gif.latex?\theta^{(t+1)})
处的值大于在
![](http://latex.codecogs.com/gif.latex?\theta^{(t)})
处的值;等式(6)是找到特定的
![](http://latex.codecogs.com/gif.latex?\theta^{(t)})
的值,使得等号成立。
最后我们通过图形的方式再更加深入细致的理解EM算法的特点:
![](http://latex.codecogs.com/gif.latex?J(Q,\theta)=\underset{i}{\sum}\underset{z^{(i)}}{\sum}Q_{i}(z^{(i)})log\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})
由上文我们知道有这样的关系:
![](http://latex.codecogs.com/gif.latex?l(\theta)\ge&space;J(Q,\theta))
,EM算法就是不断最大化这个下界,逐步得到似然函数的最大值。如下图所示:
首先,初始化
![](http://latex.codecogs.com/gif.latex?\theta^{(0)})
,调整
![](http://latex.codecogs.com/gif.latex?Q(z))
使得
![](http://latex.codecogs.com/gif.latex?J(Q,\theta^{(0)}))
与
![](http://latex.codecogs.com/gif.latex?l(\theta^{(0)}))
相等,然后求出
![](http://latex.codecogs.com/gif.latex?J(Q,\theta^{(0)}))
使得到最大值的
![](http://latex.codecogs.com/gif.latex?\theta^{(1)})
;固定
![](http://latex.codecogs.com/gif.latex?\theta^{(1)})
,调整
![](http://latex.codecogs.com/gif.latex?Q(z))
,使得
![](http://latex.codecogs.com/gif.latex?J(Q,\theta^{(1)}))
与
![](http://latex.codecogs.com/gif.latex?l(\theta^{(1)}))
相等,然后求出使
![](http://latex.codecogs.com/gif.latex?J(Q,\theta^{(1)}))
得到最大值的
![](http://latex.codecogs.com/gif.latex?\theta^{(2)})
;……;如此循环,使得
![](http://latex.codecogs.com/gif.latex?l(\theta))
的值不断上升,直到k次循环后,求出了
![](http://latex.codecogs.com/gif.latex?l(\theta))
的最大值
![](http://latex.codecogs.com/gif.latex?l(\theta^{(k)}))
。
![](http://img.blog.csdn.net/20141118092612434?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlua2luMTAwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
四、 EM算法应用于混合高斯模型(GMM)
再回到GMM:上文提到由于隐变量
![](http://latex.codecogs.com/gif.latex?z^{(i)})
的存在,无法直接求解参数,但可以通过EM算法进行求解:
E-Step:
![](http://latex.codecogs.com/gif.latex?\omega_{j}^{(i)}=Q_{i}(z^{(i)}=j)&space;=P(z^{(i)}=j|x^{(i)};\phi,\mu,\Sigma))
M-Step:
![](http://latex.codecogs.com/gif.latex?\begin{aligned}&space;&\underset{i=1}{\overset{m}{\sum}}\underset{z^{(i)}}{\sum}Q_{i}(z^{(i)})log&space;\frac{p(x^{(i)},z^{(i)};\phi,\mu,\Sigma)}{Q_{i}(z^{(i)})}\\&space;=&space;&\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{k}{\sum}}Q_{i}(z^{(i)})log&space;\frac{p(x^{(i)}|z^{(i)}=j;\mu,\Sigma)p(z^{(i)}=j;\phi)}{Q_{i}(z^{(i)})}\\&space;=&space;&\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{k}{\sum}}\omega_{j}^{(i)}log\frac{\frac{1}{(2\pi)^{\frac{n}{2}}\left|\Sigma_{j}\right|^\frac{1}{2}}exp(-\frac{1}{2}(x^{(i)}-\mu_{j})^{T}\Sigma_{j}^{-1}(x^{(i)}-\mu_{j}))\cdot\phi_{j}}{\omega_{j}^{(i)}}&space;\end&space;{aligned})
(1)参数
![](http://latex.codecogs.com/gif.latex?\mu)
对期望
![](http://latex.codecogs.com/gif.latex?\mu)
的每个分量
![](http://latex.codecogs.com/gif.latex?\mu_{l})
求偏导:
![](http://latex.codecogs.com/gif.latex?\begin{aligned}&\triangledown_{\mu_{l}}\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{k}{\sum}}\omega_{j}^{(i)}log\frac{\frac{1}{(2\pi)^{\frac{n}{2}}\left|\Sigma_{j}\right|^\frac{1}{2}}exp(-\frac{1}{2}(x^{(i)}-\mu_{j})^{T}\Sigma_{j}^{-1}(x^{(i)}-\mu_{j}))\cdot\phi_{j}}{\omega_{j}^{(i)}}\\&space;=&-\triangledown_{\mu_{l}}\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{k}{\sum}}\omega_{j}^{(i)}\frac{1}{2}(x^{(i)}-\mu_{j})^{T}\Sigma_{j}^{-1}(x^{(i)}-\mu_{j})\\=&space;&\frac{1}{2}\underset{i=1}{\overset{m}{\sum}}\omega_{l}^{(i)}\Delta_{\mu_{l}}(2\mu_{l}^{T}\Sigma_{l}^{-1}x^{(i)}-\mu_{l}^{T}\Sigma_{l}^{-1}\mu_{l})\\=&\underset{i=1}{\overset{m}{\sum}}\omega_{l}^{(i)}\Sigma_{l}^{-1}(x^{(i)}-\mu_{l})&space;\end{aligned})
令上式为0,得:
![](http://latex.codecogs.com/gif.latex?\mu_{l}:=\frac{\sum_{i=1}^{m}\omega_{l}^{(i)}x^{(i)}}{\sum_{i=1}^{m}{\omega_{l}^{(i)}}})
(2)参数
观察M-Step,可以看到,跟
![](http://latex.codecogs.com/gif.latex?\phi_{i})
相关的变量仅仅有
![](http://latex.codecogs.com/gif.latex?\omega_{j}^{(i)})
。因此,我们仅仅需要最大化下面的目标函数:
![](http://latex.codecogs.com/gif.latex?max\,\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{k}{\sum}}\omega_{j}^{(i)}log\phi_{j})
又由于
![](http://latex.codecogs.com/gif.latex?\sum_{j=1}^{k}\phi_{j}=1)
,为约束条件。因此,可以构造拉格朗日算子求目标函数:
![](http://latex.codecogs.com/gif.latex?\mathcal&space;L(\phi)=\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{k}{\sum}}\omega_{j}^{(i)}log\phi_{j}+\beta(\underset{j=1}{\overset{k}{\sum}}\phi_{j}-1))
求偏导:
![](http://latex.codecogs.com/gif.latex?\frac{\partial}{\partial&space;\phi_{j}}&space;\mathcal&space;L(\phi)=\underset{i=1}{\overset{m}{\sum}}\frac{\omega_{j}{(i)}}{\phi_{j}}+1)
令
![](http://latex.codecogs.com/gif.latex?\frac{\partial}{\partial&space;\phi_{j}}&space;\mathcal&space;L(\phi)=0)
得:
![](http://latex.codecogs.com/gif.latex?\phi_{j}:=\frac{\underset{i=1}{\overset{m}{\sum}}\omega_{j}^{(i)}}{-\beta})
将
![](http://latex.codecogs.com/gif.latex?\sum_{j=1}^{k}\phi_{j}=1)
带入上式得:
![](http://latex.codecogs.com/gif.latex?\begin{aligned}&space;-\beta=\sum_{i=1}^{m}\sum_{j=1}^{k}\omega_{j}^{(i)}&space;&=&space;\sum_{i=1}^{m}1&space;&=m\end{aligned})
最后将
![](http://latex.codecogs.com/gif.latex?\beta=-m)
带入得:
![](http://latex.codecogs.com/gif.latex?\phi_{j}:=\frac{\underset{i=1}{\overset{m}{\sum}}\omega_{j}^{(i)}}{m})
(3)参数
![](http://latex.codecogs.com/gif.latex?\Sigma)
\\=&\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{m}{\sum}}\omega_{j}^{(i)}\frac{1}{2}\Sigma_{j}^{-T}+\frac{1}{2}(x^{(i)}-\mu_{j})^{T}\Sigma^{-2}(x^{(i)}-\mu_{j})&space;\end{aligned}]
![](http://latex.codecogs.com/gif.latex?\begin{aligned}&\triangledown&space;_{\Sigma_{j}}&space;\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{k}{\sum}}\omega_{j}^{(i)}log\frac{\frac{1}{(2\pi)^{\frac{n}{2}}\left|\Sigma_{j}\right|^\frac{1}{2}}exp(-\frac{1}{2}(x^{(i)}-\mu_{j})^{T}\Sigma_{j}^{-1}(x^{(i)}-\mu_{j}))\cdot\phi_{j}}{\omega_{j}^{(i)}}\\&space;=&\triangledown_{\Sigma_{j}}\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{k}{\sum}}&space;\omega_{j}^{(i)}[-\frac{n}{2}log2\pi-\frac{1}{2}log\left|\Sigma_{j}\right|-\frac{1}{2}(x^{(i)}-\mu_{j})^{T}\Sigma_{j}^{-1}(x^{(i)}-\mu_{j})+log\phi_{j}-log\omega_{j}^{(i)}]\\=&\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{m}{\sum}}\omega_{j}^{(i)}\frac{1}{2}\Sigma_{j}^{-T}+\frac{1}{2}(x^{(i)}-\mu_{j})^{T}\Sigma^{-2}(x^{(i)}-\mu_{j})&space;\end{aligned})
令上式为零,解得:
![](http://latex.codecogs.com/gif.latex?\Sigma_{j}:=\frac{\sum_{i=1}^{m}\omega_{j}^{(i)}&space;(x^{(i)}-\mu_{j})(x^{(i)}-\mu_{j})^{T}&space;}{&space;\sum_{i=1}^{m}\omega_{j}^{(i)}&space;})
五、 总结
EM算法利用不完全的数据,进行极大似然估计。通过两步迭代,逐渐逼近最大似然值。而GMM可以利用EM算法进行参数估计。
最后提下辜老师论文的思路:EM模型容易收敛到局部最大值,并且严重依赖初试值。传统的方法即上文中使用的方法是每次迭代过程中,同时更新高斯分布中所有参数,而辜老师的方法是把K个高斯分布中的一个分量,利用奇异值分解的方法将其分裂为两个高斯分布,并保持其他分量不变的情况下,对共这K+1个高斯分布的权值进行更新,直到符合一定的收敛条件。这样一来,虽然算法复杂度没有降低,但每轮只需要更新两个参数,大大降低了每轮迭代的计算量。
一、 高斯混合模型(Gaussian MixtureModel, GMM)
之前写过高斯判别分析模型,利用参数估计的方法用于解决二分类问题。下面介绍GMM,它是对高斯判别模型的一个推广,也能借此引入EM算法。
假设样本集为
并且样本和标签满足联合分布
。这里:
服从多项式分布,即
(
,
,
),且
;在
给定的情况下,
服从正态分布,即
。这样的模型称为高斯混合模型。
该模型的似然函数为:
如果直接令
的各变量偏导为0,试图分别求出各参数,我们会发现根本无法求解。但如果变量
是已知的,求解便容易许多,上面的似然函数可以表示为:
利用偏导求解上述式,可分别得到参数
的值:
其中,#{ }为指示函数,表示满足括号内条件的数目。
那么,变量
无法通过观察直接得到,
就称为隐变量,就需要通过EM算法,求解GMM了。下面从Jensen不等式开始,介绍下EM算法:
二、 Jensen不等式(Jensen’s inequality)
引理:如果函数f的定义域为整个实数集,并且对于任意x或
存在
或函数的Hessian矩阵
,那么函数f称为凹函数。
或函数的Hessian矩阵H>0,那么函数f为严格凹函数。
(存在
或函数的Hessian矩阵
,那么函数f称为凸函数;如果
或函数的Hessian矩阵
H<0,那么函数f为严格凸函数。)
定理:如果函数f是凹函数,X为随机变量,那么:
\ge&space;f(EX)]
不幸的是很多人都会讲Jensen不等式记混,我们可以通过图形的方式帮助记忆。下图中,横纵坐标轴分别为X和f(X),f(x)为一个凹函数,a、b分别为变量X的定义域,E[X]为定义域X的期望。图中清楚的看到各个量的位置和他们间的大小关系。反之,如果函数f是凸函数,X为随机变量,那么:
\le&space;f(EX)]
Jensen不等式等号成立的条件为:=X]
,即X为一常数。
三、 EM算法
假设训练集
是由m个独立的样本构成。我们的目的是要对
概率密度函数进行参数估计。它的似然函数为:
然而仅仅凭借似然函数,无法对参数进行求解。因为这里的随机变量
是未知的。
EM算法提供了一种巧妙的方式,可以通过逐步迭代逼近最大似然值。下面就来介绍下EM算法:
假设对于所有i,
皆为随机变量
的分布函数。即:
。那么:
其中第(2)步至第(3)步的推导就使用了Jensen不等式。其中:f(x)=log x,
,因此为凸函数;
表示随机变量为
概率分布函数为
的期望。因此有:
)\ge&space;\underset{z^{(i)}\sim&space;Q_{i}}{E}[f(\frac{p(x^{(i)},z^{(i)};\theta)}{Q_{i}(z^{(i)})})]]
这样,对于任意分布
,(3)都给出了
的一个下界。如果我们现在通过猜测初始化了一个
的值,我们希望得到在这个特定的
下,更紧密的下界,也就是使等号成立。根据Jensen不等式等号成立的条件,当
为一常数时,等号成立。即:
由上式可得
,又
,因此
。再由上式可得:
上述等式最后一步使用了贝叶斯公示。
EM算法有两个步骤:
(1)通过设置初始化
值,求出使似然方程最大的
值,此步骤称为E-步(E-step)
(2)利用求出的
值,更新
。此步骤称为M-步(M-step)。过程如下:
repeat until convergence{
(E-step) for each i, set
(M-step) set
}
那么,如何保证EM算法是收敛的呢?下面给予证明:
假设
和
是EM算法第t次和第t+1次迭代所得到的参数
的值,如果有
,即每次迭代后似然方程的值都会增大,通过逐步迭代,最终达到最大值。以下是证明:
不等式(4)是由不等式(3)得到,对于任意
和
值都成立;得到不等式(5)是因为我们需要选择特定的
使得方程
在
处的值大于在
处的值;等式(6)是找到特定的
的值,使得等号成立。
最后我们通过图形的方式再更加深入细致的理解EM算法的特点:
由上文我们知道有这样的关系:
,EM算法就是不断最大化这个下界,逐步得到似然函数的最大值。如下图所示:
首先,初始化
,调整
使得
与
相等,然后求出
使得到最大值的
;固定
,调整
,使得
与
相等,然后求出使
得到最大值的
;……;如此循环,使得
的值不断上升,直到k次循环后,求出了
的最大值
。
四、 EM算法应用于混合高斯模型(GMM)
再回到GMM:上文提到由于隐变量
的存在,无法直接求解参数,但可以通过EM算法进行求解:
E-Step:
M-Step:
(1)参数
对期望
的每个分量
求偏导:
令上式为0,得:
(2)参数
观察M-Step,可以看到,跟
相关的变量仅仅有
。因此,我们仅仅需要最大化下面的目标函数:
又由于
,为约束条件。因此,可以构造拉格朗日算子求目标函数:
求偏导:
令
得:
将
带入上式得:
最后将
带入得:
(3)参数
\\=&\underset{i=1}{\overset{m}{\sum}}\underset{j=1}{\overset{m}{\sum}}\omega_{j}^{(i)}\frac{1}{2}\Sigma_{j}^{-T}+\frac{1}{2}(x^{(i)}-\mu_{j})^{T}\Sigma^{-2}(x^{(i)}-\mu_{j})&space;\end{aligned}]
令上式为零,解得:
五、 总结
EM算法利用不完全的数据,进行极大似然估计。通过两步迭代,逐渐逼近最大似然值。而GMM可以利用EM算法进行参数估计。
最后提下辜老师论文的思路:EM模型容易收敛到局部最大值,并且严重依赖初试值。传统的方法即上文中使用的方法是每次迭代过程中,同时更新高斯分布中所有参数,而辜老师的方法是把K个高斯分布中的一个分量,利用奇异值分解的方法将其分裂为两个高斯分布,并保持其他分量不变的情况下,对共这K+1个高斯分布的权值进行更新,直到符合一定的收敛条件。这样一来,虽然算法复杂度没有降低,但每轮只需要更新两个参数,大大降低了每轮迭代的计算量。
相关文章推荐
- 斯坦福大学机器学习——EM算法求解高斯混合模型
- 斯坦福大学机器学习——EM算法求解高斯混合模型
- 机器学习--EM算法求解高斯混合模型
- 机器学习高斯混合模型(后篇):GMM求解完整代码实现
- 机器学习高斯混合模型(后篇):GMM求解完整代码实现
- 用EM算法求解高斯混合模型
- EM算法求解高斯混合模型
- GMM高斯混合模型学习笔记(EM算法求解)
- 【机器学习系列】EM算法求解三硬币问题(python版本)
- 【机器学习】高斯混合模型GMM和EM算法
- 机器学习高斯混合模型(中篇):聚类求解
- 机器学习 - 高斯混合模型参数估计的EM算法
- 机器学习 : 高斯混合模型及EM算法
- 高斯混合模型和EM算法
- 机器学习(4) EM算法
- 机器学习系列之EM算法
- EM算法 - 2 - EM算法在高斯混合模型学习中的应用
- 斯坦福大学Andrew Ng教授主讲的《机器学习》公开课观后感
- 斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降
- 斯坦福大学机器学习笔记(1)