EM算法与高斯混合模型学习总结

       

          我们现在考虑一类具有隐变量的统计推断问题,用数学的语言就是说:

         1) 我们的总体样本空间$mathcal{S}inmathbb{R}^{M} imesmathbb{R}^{L}$, 其分布的概率密度函数是$P(x,ymid heta)$,其中$xinmathbb{R}^{M},yinmathbb{R}^{L}$, $ heta$是未知的参数。

         2) 我们在抽样的时候,由于条件限制,对每一个样本$(x,y)$,$xinmathbb{R}^{M},yinmathbb{R}^{L}$,后L个变量无法观测到,也就是向量$y$无法获悉,只能观测到$x$。我们称前M个变量为可观测变量,x为可观测向量,后L个变量为不可观测变量,y为不可观测向量。

     问题1

         我们有数据集合$D=lbrace x_{1},...,x_{N} brace$, 其中$x_{i}inmathbb{R}^{M}$为第i个样本可观测向量,样本之间相互独立,试推断可能的参数$ heta$。 

EM原算法:

     

     为了方便起见,我们记大写字母$X=(x_{1},...,x_{N})$表示所有的样本的可观测向量的总体,而$Y=(y_{1},...,y_{N})$表示所有的样本的不可观测向量的总体, 我们自然地将概率密度表示为紧凑的形式: 

                   $$P(X,Ymid heta) riangleq P((x_{1},y_{1}),...,(x_{N},y_{N})mid heta)=prod_{i=1}^{N}P((x_{1},y_{1}),...,(x_{N},y_{N})mid heta)$$

        这个时候自然的,我们的似然函数就是:

                     egin{equation}P(Xmid heta)=int P(X,Ymid heta)dYend{equation}

 当$Y$各个分量连续,或者是:

                    egin{equation}P(Xmid heta)=sum_{Y}P(X,Ymid heta)end{equation}

当$Y$各个分量离散,或者是还有混合的情形,Y部分分量离散部分连续。为了记号方便起见我们假定Y各个分量均离散,其实各种情形下计算过程基本无差异。

        现在我们的目标是使得似然函数$P(Xmid heta)$尽量大。注意到一般来说由于表达式(2)中求和号的存在,直接求似然函数的极值比较困难,现在我们想办法设计一种迭代算法使得极大似然函数尽量大。假设我们第$i$步迭代已经得到参数$ heta^{(i)}$, 现在希望迭代更新使得似然函数尽量大。注意到:

egin{split}&frac{P(Xmid heta)}{P(Xmid heta^{(i)})} ewline =&sum_{Y}frac{P(X,Ymid heta)}{P(Xmid heta^{(i)})} ewline =&sum_{Y}frac{P(X,Ymid heta)P(Ymid X, heta^{(i)})}{P(X,Ymid heta^{(i)})}end{split}

        所以两边取$log$并且运用Jensen不等式我们得到:

egin{split}log(frac{P(Xmid heta)}{P(Xmid heta^{(i)})})=&log(sum_{Y}frac{P(X,Ymid heta)P(Ymid X, heta^{(i)})}{P(X,Ymid heta^{(i)})}) ewline geq &sum_{Y}P(Ymid X, heta^{(i)})logfrac{P(X,Ymid heta)}{P(X,Ymid heta^{(i)})} ewline =&sum_{Y}[log P(X,Ymid heta)]P(Ymid X, heta^{(i)})-sum_{Y}[log P(X,Ymid heta^{(i)})]P(Ymid X, heta^{(i)}) ewline =&E_{Y}(log P(X,Ymid heta)ig | X, heta^{(i)})-E_{Y}(log P(X,Ymid heta^{(i)})ig | X, heta^{(i)})end{split} 

我们令辅助函数:

egin{equation}Q( heta, heta^{(i)}) riangleq E_{Y}(log P(X,Ymid heta)ig | X, heta^{(i)})end{equation}

所以有:

egin{equation}log P(Xmid heta)-log P(Xmid heta^{(i)})geq Q( heta, heta^{(i)})-Q( heta^{(i)}, heta^{(i)})end{equation} 

为了使得 $log p(Xmid heta)$显著增加,我们只需要选取一个:

egin{equation} heta^{(i+1)} riangleqmathop{ ext{argmax}}limits_{ heta} Q( heta, heta^{(i)})end{equation}

       从上述推导我们看到,我们首先得显式的算出函数$Q$,它由一个求期望(Expectation)的计算给出,然后下一步是求Q的极大值使得Q极大化(Maximization),所以我们的算法也会分为两步,一步是求期望(E步),再求极大值(M步),这种方法于是被称为EM算法。

现在总结EM算法如下:

                输入:观测变量$X$, 隐含变量$Y$, 联合分布$p(X,Ymid heta)$, $epsilon$

                输出:模型参数$ heta$

                Step1. 选择模型的初始参数$ heta^{(0)}$

                Step2. E步:记$ heta^{(i)}$是第$i$步迭代得到的参数,则在第$i+1$步迭代中,计算函数:

                            egin{equation}Q( heta, heta^{(i)}) riangleq E_{Y}(log p(X,Ymid heta)ig | X, heta^{(i)})end{equation}

                Step3  M步:更新 $ heta^{(i+1)} riangleqmathop{ ext{argmax}}limits_{ heta} Q( heta, heta^{(i)})$, 如果 $Q( heta^{(i+1)}, heta^{(i)})-Q( heta^{(i)}, heta^{(i)})geq epsilon$ 则回到Step2继续,否则停止,输出$ heta^{(i)}$.

高斯混合模型

     

     所谓的高斯混合模型是对如下的隐变量模型应用EM算法统计推断:

         问题2:

          我们研究一类问题1的特例,即样本总体$mathcal{S}=mathbb{R}^{M} imeslbrace 1,2,...,K brace$, 分布密度函数$p(x,kmid heta)=pi_{k}P(xmidSigma_{k},mu_{k})$, 其中参数$ heta=(Sigma_{1},...,Sigma_{K},mu_{1},...,mu_{K},pi_{1},...,pi_{i})$ 满足对任意的k=1,...,K:

          1)$Sigma_{k}$为对称正定$M imes M$矩阵;

          2)$mu_{k}inmathbb{R}^{M}$;

          3)$pi_{k}geq 0$,$sum_{k=1}^{K}pi_{i}=1$,

且我们用$P(xmidSigma,mu)$表示$M$维正态分布$mathcal{N}(mu_{k},Sigma_{k})$的概率密度函数。现在如果我们有数据集合$D=lbrace x_{1},...,x_{N} brace$, 其中$x_{i}inmathbb{R}^{M}$为第i个样本可观测向量,样本之间相互独立,试推断可能的参数$ heta$。

                                                 

       E步:

         我们对上面的问题用EM算法求解,先开始E步,求函数Q。为了方便起见,对于任意$i=1,...,N$,我们定义函数: $l_{i}: SGL(M) imes mathbb{R}^{M}longrightarrow mathbb{R}:$

$$l_{i}(Sigma,mu)=log[P(x_{i}mid Sigma, mu)],$$ 

对任意的$Sigmain SGL(M), muinmathbb{R}^{M}$, 这里$SGL(M)$表示全体对称可逆的$M imes M$矩阵的集合。

         这时:

egin{split}Q( heta, heta^{(s)})=& E_{Y}(log P(x_{1},...,x_{N},y_{1},...,y_{N}mid heta)ig | x_{1},...,x_{N}, heta^{(s)}) ewline =&sum_{i=1}^{N}E_{Y}(log P(x_{i},y_{i}mid heta)ig | X, heta^{(s)}) ewline =&sum_{i=1}^{N}E_{y_{i}}(log P(x_{i},y_{i}mid heta)ig | x_{i}, heta^{(s)}) ewline =&sum_{i=1}^{N}sum_{k=1}^{K}[log P(x_{i},kmid heta)]P(kmid x_{i}, heta^{(s)}) ewline =&sum_{i=1}^{N}sum_{k=1}^{K}P_{ki}^{(s)}log [P(x_{i}mid Sigma_{k},mu_{k})cdotpi_{k}] ewline =&sum_{i=1}^{N}sum_{k=1}^{K}P_{ki}^{(s)}l_{i}(Sigma_{k},mu_{k})+sum_{k=1}^{K}(sum_{i=1}^{N}P_{ki}^{(s)})log(pi_{k})end{split}

        

       M步:

         现在开始求Q的极大值,先得计算一下偏导数。下面我们先重点计算一下函数$l_{i}$的微分. 这时候 $P(x_{i}mid Sigma, mu)=(2pi)^{-frac{M}{2}}det(Sigma)^{-frac{1}{2}}explbrace -frac{1}{2}(x_{i}-mu)^{T}cdotSigma^{-1}cdot(x_{i}-mu) brace$, $$l_{i}(Sigma,mu)=-frac{1}{2}log(det(Sigma))-frac{1}{2}(x_{i}-mu)^{T}Sigma^{-1}(x_{i}-mu)$$.

我们注意到行列式求导公式:$d(log(detSigma))= ext{tr}(Sigma^{-1}dSigma)$所以容易得到:

egin{equation}dl_{i}=-frac{1}{2}trlbrace[Sigma^{-1}-Sigma^{-1}(x_{i}-mu)cdot(x_{i}-mu)^{T}Sigma^{-1}]dSigma brace+(x_{i}-mu)^{T}Sigma^{-1}dmuend{equation}

注意到我们要求极值问题:

                                       egin{split} ext{max }& Q( heta, heta^{(s)}) ewline ext{s.t. }& pi_{k}in [0,1],& sum_{k=1}^{K}pi_{k}=1end{split} 

只需要求某个模型参数$ heta$以及常数$lambdainmathbb{R}$ 满足:

                                       egin{equation} dQ=lambda sum_{k=1}^{K}dpi_{k}end{equation}

 结合(5)我们很容易得到:

$$dQ=-frac{1}{2} ext{tr}(A_{k}cdot dSigma_{k})+[sum_{i=1}^{N}P^{(s)}_{ki}x_{i}-(sum_{i=1}^{N}P_{ki})mu_{k}]d mu_{k}+sum_{k=1}^{K}(sum_{i=1}^{N}P_{ki}^{(s)})frac{d pi_{k}}{pi_{k}}$$其中矩阵$A_{k}=Sigma_{k}^{-1}(sum_{i=1}^{N}P_{ki}^{(s)})-Sigma_{k}^{-1}[sum_{i=1}^{N}P_{ki}^{(s)}(x_{i}-mu_{k})cdot (x_{i}-mu_{k})^{T}]Sigma_{k}^{-1}$ 

再结合(6)我们有:$A_{k}=0$, $sum_{i=1}^{N}P^{(s)}_{ki}x_{i}-(sum_{i=1}^{N}P_{ki})mu_{k}=0$, $sum_{i=1}^{N}P_{ki}^{(s)}=lambdapi_{k}$, 

所以立即得到对任意$k=1,...,K$, 当$ heta$各个参数取如下值的时候$Q( heta, heta_{k})$将取极大值:

egin{equation}Sigma_{k}=frac{sum_{i=1}^{N}P_{ki}^{(s)}(x_{i}-mu_{k})cdot(x_{i}-mu_{k})^{T}}{sum_{i=1}^{N}P_{ki}^{(s)}},end{equation}

egin{equation}mu_{k}=frac{sum_{i=1}^{N}P_{ki}^{(s)}x_{i}}{sum_{i=1}^{N}P_{ki}^{(s)}},end{equation}

egin{equation}pi_{k}=frac{sum_{i=1}^{N}P^{(s)}_{ki}}{N},end{equation}

此时$M$步计算完毕。

此时我们可以总结一下Gauss混合模型的算法如下:        

         


                    输入:数据集$D= lbrace x_{1},...,x_{N} brace $, 混合类别个数$K$,某停止条件

                    输出:高斯混合模型的参数$ heta=(Sigma_{1},...,Sigma_{K},mu_{1},...,mu_{K},pi_{1},...,pi_{K})$

                    Step1. 初始化某参数$ heta^{(0)}$

                    Step2. 对于$s=1,2,...$执行:

                                     1. E-Step: 计算: egin{equation}P^{(s)}_{ki}=frac{P(x_{i}mid Sigma_{k}^{(s)},mu_{k}^{(s)})pi_{k}^{(s)}}{sum_{j=1}^{K} P(x_{i}mid Sigma_{j}^{(s)},mu_{j}^{(s)})pi_{j}^{(s)}}end{equation}

                                     2. M-Step:  对任意的$k=1,...,K$计算:egin{equation}Sigma_{k}^{(s+1)}=frac{sum_{i=1}^{N}P_{ki}^{(s)}(x_{i}-mu_{k})cdot(x_{i}-mu_{k})^{T}}{sum_{i=1}^{N}P_{ki}^{(s)}},end{equation}

egin{equation}mu_{k}^{(s+1)}=frac{sum_{i=1}^{N}P_{ki}^{(s)}x_{i}}{sum_{i=1}^{N}P_{ki}^{(s)}},end{equation}

                        egin{equation}pi_{k}^{(s+1)}=frac{sum_{i=1}^{N}P^{(s)}_{ki}}{N},end{equation}

                                        令$ heta^{(s+1)}=(Sigma_{1}^{(s+1)},...,Sigma_{K}^{(s+1)},mu_{1}^{(s+1)},...,mu_{K}^{(s+1)},pi_{1}^{(s+1)},...,pi_{K}^{(s+1)})$, 

                                        如果满足停止条件,则输出$ heta^{(s)}$

参考文献:

【1】李航:《统计学习方法》,北京,清华大学出版社,2012

【2】周志华:《机器学习》,北京,清华大学出版社,2016

原文地址:https://www.cnblogs.com/szqfreiburger/p/11657904.html