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

       

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

         1) 我们的总体样本空间$\mathcal{S}\in\mathbb{R}^{M}\times\mathbb{R}^{L}$, 其分布的概率密度函数是$P(x,y\mid \theta)$,其中$x\in\mathbb{R}^{M},y\in\mathbb{R}^{L}$, $\theta$是未知的参数。

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

 

     问题1

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

 

EM原算法:

     

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

                   $$P(X,Y\mid\theta)\triangleq P((x_{1},y_{1}),...,(x_{N},y_{N})\mid\theta)=\prod_{i=1}^{N}P((x_{1},y_{1}),...,(x_{N},y_{N})\mid\theta)$$

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

                     \begin{equation}P(X\mid\theta)=\int P(X,Y\mid\theta)dY\end{equation}

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

                    \begin{equation}P(X\mid\theta)=\sum_{Y}P(X,Y\mid\theta)\end{equation}

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

 

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

 

\begin{split}&\frac{P(X\mid\theta)}{P(X\mid\theta^{(i)})}\newline =&\sum_{Y}\frac{P(X,Y\mid\theta)}{P(X\mid\theta^{(i)})}\newline =&\sum_{Y}\frac{P(X,Y\mid \theta)P(Y\mid X,\theta^{(i)})}{P(X,Y\mid \theta^{(i)})}\end{split}

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

\begin{split}\log(\frac{P(X\mid\theta)}{P(X\mid\theta^{(i)})})=&\log(\sum_{Y}\frac{P(X,Y\mid \theta)P(Y\mid X,\theta^{(i)})}{P(X,Y\mid \theta^{(i)})})\newline \geq &\sum_{Y}P(Y\mid X,\theta^{(i)})\log\frac{P(X,Y\mid \theta)}{P(X,Y\mid \theta^{(i)})}\newline =&\sum_{Y}[\log P(X,Y\mid \theta)]P(Y\mid X,\theta^{(i)})-\sum_{Y}[\log P(X,Y\mid \theta^{(i)})]P(Y\mid X,\theta^{(i)})\newline =&E_{Y}(\log P(X,Y\mid \theta)\big | \ X,\theta^{(i)})-E_{Y}(\log P(X,Y\mid \theta^{(i)})\big | \ X,\theta^{(i)})\end{split} 

 

我们令辅助函数:

\begin{equation}Q(\theta,\theta^{(i)})\triangleq E_{Y}(\log P(X,Y\mid \theta)\big | \ X,\theta^{(i)})\end{equation}

 

所以有:

\begin{equation}\log P(X\mid \theta)-\log P(X\mid \theta^{(i)})\geq Q(\theta,\theta^{(i)})-Q(\theta^{(i)},\theta^{(i)})\end{equation} 

 

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

\begin{equation}\theta^{(i+1)}\triangleq\mathop{\text{argmax}}\limits_{\theta} Q(\theta,\theta^{(i)})\end{equation}

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

现在总结EM算法如下:

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

                输出:模型参数$\theta$

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

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

                            \begin{equation}Q(\theta,\theta^{(i)})\triangleq E_{Y}(\log p(X,Y\mid \theta)\big | \ X,\theta^{(i)})\end{equation}

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

 

 

高斯混合模型

     

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

 

         问题2:

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

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

          2)$\mu_{k}\in\mathbb{R}^{M}$;

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

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

                                                 

       E步:

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

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

对任意的$\Sigma\in SGL(M), \mu\in\mathbb{R}^{M}$, 这里$SGL(M)$表示全体对称可逆的$M\times M$矩阵的集合。

         这时:

\begin{split}Q(\theta,\theta^{(s)})=& E_{Y}(\log P(x_{1},...,x_{N},y_{1},...,y_{N}\mid \theta)\big | x_{1},...,x_{N},\theta^{(s)})\newline =&\sum_{i=1}^{N}E_{Y}(\log P(x_{i},y_{i}\mid \theta)\big | X, \theta^{(s)})\newline =&\sum_{i=1}^{N}E_{y_{i}}(\log P(x_{i},y_{i}\mid \theta)\big | x_{i}, \theta^{(s)})\newline =&\sum_{i=1}^{N}\sum_{k=1}^{K}[\log P(x_{i},k\mid \theta)]P(k\mid x_{i}, \theta^{(s)})\newline =&\sum_{i=1}^{N}\sum_{k=1}^{K}P_{ki}^{(s)}\log [P(x_{i}\mid \Sigma_{k},\mu_{k})\cdot\pi_{k}]\newline =&\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)=(2\pi)^{-\frac{M}{2}}\det(\Sigma)^{-\frac{1}{2}}\exp\lbrace -\frac{1}{2}(x_{i}-\mu)^{T}\cdot\Sigma^{-1}\cdot(x_{i}-\mu)\rbrace$, $$l_{i}(\Sigma,\mu)=-\frac{1}{2}\log(\det(\Sigma))-\frac{1}{2}(x_{i}-\mu)^{T}\Sigma^{-1}(x_{i}-\mu)$$.

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

 

\begin{equation}dl_{i}=-\frac{1}{2}tr\lbrace[\Sigma^{-1}-\Sigma^{-1}(x_{i}-\mu)\cdot(x_{i}-\mu)^{T}\Sigma^{-1}]d\Sigma\rbrace+(x_{i}-\mu)^{T}\Sigma^{-1}d\mu\end{equation}

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

                                       \begin{split}\text{max }&\ Q(\theta,\theta^{(s)}) \newline \text{s.t. }&\ \pi_{k}\in [0,1],&\ \sum_{k=1}^{K}\pi_{k}=1\end{split} 

只需要求某个模型参数$\theta$以及常数$\lambda\in\mathbb{R}$ 满足:

                                       \begin{equation} dQ=\lambda \sum_{k=1}^{K}d\pi_{k}\end{equation}

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

$$dQ=-\frac{1}{2}\text{tr}(A_{k}\cdot d\Sigma_{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)}=\lambda\pi_{k}$, 

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

\begin{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}

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

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

 

此时$M$步计算完毕。

 

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

         


 

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

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

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

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

                                     1. E-Step: 计算: \begin{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$计算:\begin{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}

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

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

                                        令$\theta^{(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)})$, 

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

 

参考文献:

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

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

posted @ 2019-10-22 23:31  Freiburger  阅读(370)  评论(0编辑  收藏  举报