CS229 Lesson 13 高斯混合模型
课程视频地址:http://open.163.com/special/opencourse/machinelearning.html
课程主页:http://cs229.stanford.edu/
更具体的资料链接:https://www.jianshu.com/p/0a6ef31ff77a
笔记参考自中文翻译版:https://github.com/Kivy-CN/Stanford-CS-229-CN
这一讲介绍EM算法和因子分析,回顾了高斯混合模型。
回顾EM算法
重复直到收敛
(E步骤)对每个$i$,令
(M步骤)令
我们怎么知道这个算法是否收敛呢?假设$\theta^{(t)}$和$\theta^{(t+1)}$是两次成功迭代得到的参数。我们将证明$l(\theta^{(t)})\le l(\theta^{(t+1)})$,这说明EM算法总是让对数似然函数单调递增。证明这点的关键在于我们对$Q_i$的选择。特别地,当EM算法的参数为$\theta^{(t)}$时,我们将选择$Q_i^{(t)}(z^{(i)}) := p(z^{(i)}|x^{(i)};\theta^{(t)})$。我们之前看到这个选择保证了Jenson不等式的等号成立,因此
参数$l(\theta^{(t+1)})$是由最大化该等式的右边得到的,因此
第一个不等号成立是因为如下不等式对任意$Q_i$和$\theta$都成立
特别地,上式对$Q_i=Q_i^{(t)},\theta = \theta^{(t+1)}$成立。第二个不等号成立是因为我们选择$\theta^{(t+1)}$为
因此这个式子在$\theta^{(t+1)}$的取值必然大于等于在$\theta^{(t)}$的取值。最后一个等号成立是在选择$Q_i^{(t)}$时我们就是要保证不等号取等号。
因此,EM算法导致对数似然函数单调收敛。在我们对EM算法的描述中,我们说我们将运行直至收敛。根据我们刚刚展示的结果,一个合理的收敛测试为检测在成功迭代一轮后,$l(\theta)$的增量是否小于阈值,如果EM算法增加$l(\theta)$的速度很慢,那么就宣称算法收敛。
注记
如果我们定义
那么从之前的推导中,我们知道$l(\theta)\ge J(Q,\theta)$。EM算法也可以视为$J$的坐标上升过程,其中E步骤关于Q最大化$J$(因为E步骤选择$Q$使得$l(\theta)= J(Q,\theta)$),$M$步骤关于$\theta$最大化$J$
3.回顾高斯混合模型
有了对EM算法的一般定义,让我们回顾拟合高斯混合模型参数$\phi,\mu,\Sigma$的例子。
E步骤很简单,按照之前推导的算法,我们可以简单计算得到
这里,$ Q_i(z^{(i)}=j)$表示在$Q_i$分布下,$z^{(i)}$取$j$的概率。
接着,在M步骤中,我们需要关于参数$\phi,\mu,\Sigma$最大化下式
让我们关于$\mu_l$最大化上式。关于$\mu_l$求梯度可得
令上式为$0$,解出$\mu_l$可以得到更新规则
这部分我们在之前的讲义中已经见过。
让我们再看一个例子,推导出M步骤更新$\phi_j$的规则。将关于参数$\phi_j$的部分整合起来,我们需要最大化
但是,这里有一个额外的限制:$\phi_j$的和为$1$,因为它表示概率$\phi_j=p(z^{(i)}=j;\phi)$。为了处理$\sum_{j=1}^k \phi_j =1$,我们构造拉格朗日函数(注意,这里实际上还有限制$\phi_j \ge0$,但随后我们会发现解满足这个条件)
其中$\beta$是拉格朗日乘子。求导可得
令导数为$0$解得
即$\phi_j \propto \sum_{i=1}^m w_j^{(i)}$。利用约束条件$\sum_{j=1}^k \phi_j =1$,我们可以轻松发现
(这里利用到$w_j^{(i)}=Q_i(z^{(i)}=j)$,然后概率的和为$1$,$ \sum_{j=1}^k w_j^{(i)}=1$)。因此我们得到M步骤更新$\phi_j$的规则
最后补充$\Sigma_j$的更新规则,将关于参数$\Sigma_j$的部分整合起来
注意到如果求出$\Sigma_j^{-1}$的更新规则,那么就可以得到$\Sigma_j$的更新规则,所以关于$\Sigma_j^{-1}$求梯度可得
令导数为$0$可得
这里用到了如下规则:
Part X 因子分析
当我们的数据$x^{(i)}\in \mathbb R^n$来自几个高斯混合模型时,EM算法可以用来拟合混合模型。在这种情形下,我们常常假设有足够多的数据来发现数据中的多元高斯分布结构。这种情形常常发生在训练集样本的数量$m$远远大于数据维度$n$。
现在,考虑$n\gg m$的情形。在这样一个问题中,用一个高斯分布来给数据建模甚至都很困难,更别提高斯混合模型了。特别地,$m$个数据点只张成了$\mathbb R^n$的一个低维子空间,如果我们将用高斯分布给数据建模,然后利用极大似估计来估计均值和协方差,可以得到
我们会发现矩阵$\Sigma$奇异(不可逆)。这意味着$\Sigma^{-1}$不存在,并且$1/ |\Sigma|^{1/2}= 1/ 0$。但是这两项在计算多元高斯分布时都需要用到。另一种陈述问题的困难性的方法如下,对参数的极大似然估计产生的高斯分布,其概率分布分布在数据张成的仿射空间中,这对应着一个奇异的协方差矩阵。
更一般的,除非$m$超过$n$一定数量,否则均值和协方差的极大似然估计可能很差。然而,我们仍然能用一个合理的高斯模型对数据进行拟合,并且也许能够识别出数据中有趣的协方差结构。我们是如何做到的?
在后面一部分中,我们会从复习两个对于$\Sigma$可能的限制开始,这些限制允许我们用少量的数据来拟合$\Sigma$,但是他们都无法对问题给出满意的解答。接着我们将讨论高斯分布的性质;例如高斯分布的边际分布以及条件分布。最后,我们将展示因子分析模型以及EM算法对其参数的估计。
1.$\Sigma$的限制
如果我们没有充足的数据来拟合完整的协方差矩阵,我们可以对我们考虑的矩阵空间$\Sigma$添加一些约束。例如,我们可以选择拟合一个对角协方差矩阵$\Sigma$。在这种情形下,可以很简单核实协方差矩阵的对角元的最大似然估计满足
因为,$\Sigma_{jj}$就是对数据第$j$个分量方差的经验估计。
有时我们会对协方差矩阵添加更多约束,不仅认为它是对角阵,还认为对角元相同,此时最大似然估计为
如果我们对数据拟合一个完整,没有限制的协方差矩阵,为了$\Sigma$的最大似然估计非奇异,必须有$m\ge n+1$。在之前两种约束条件下,当$m\ge 2$时我们就能获得非奇异的$\Sigma$。
但是,将$\Sigma$限制为对角阵意味着对数据的不同分量$x_i,x_j$的建模都是不相关和独立的。通常,获得数据中有趣的相关结构会比较好。如果我们用之前两种限制中任何一种,我们将无法做到这点。在这部分讲义中,我们将介绍因子分析模型,和对角阵相比,它使用更多参数,也捕捉到数据中的相关性,但是又不必拟合完整的协方差矩阵。
2.高斯分布的边际分布和条件分布
在开始描述因子分子之前,我们将讨论多元高斯分布的边际分布和条件分布。
假设我们有一个向量值随机变量
其中$x_1\in \mathbb R^r, x_2 \in \mathbb R^s$,因此$x\in \mathbb R^{r+s}$。假设$x\sim \mathcal N(\mu, \Sigma)$,其中
其中,$\mu_1\in \mathbb R^r$,$\mu_2\in \mathbb R^s$,$\Sigma_{11}=\mathbb R^{r\times r}$,$\Sigma_{12}\in \mathbb R^{r\times s}$,以此类推。注意到因为协方差矩阵对称,所以$\Sigma_{12}=\Sigma_{21}^T$。
在我们的假设下,$x_1$和$x_2$的联合分布为多元高斯分布。那么$x_1$的边际分布是什么?此外,给定$x_2$,$x_1$的条件分布是什么?实际上,有如下结论:
下面证明上述结论。
令
那么
从而
其中
因此可以看出$y_1, y_2$独立,且
由对称性类似可得
备注:这里求$x_2$的边际分布而不是$x_1$的边际分布是为了方便求出条件分布。
接下来考虑$ x_1 |x_2$的分布,
这里要利用到$B$为正交矩阵,且
首先计算分子
接着计算分母,之前已经计算过了
因此
注意到
从而
3.因子分析模型
在因子分析模型中,我们按如下方式在$(x,z)$上建立联合分布,其中$z\in \mathbb R^k$是一个隐变量:
这里,模型的参数是向量$\mu\in \mathbb R^n$,矩阵$\Lambda \in \mathbb R^{n\times k}$,以及对角阵$\Psi \in \mathbb R^{n\times n}$。$k$的值通常选择为比$n$小。
因此,我们想象每个数据点$x^{(i)}$是如下生成的:首先对$k$维高斯分布$z^{(i)}$取样。然后,通过计算$\mu+\Lambda z^{(i)}$将$z^{(i)}$映射到$\mathbb R^n$的$k$维的仿射子空间。最后,$x^{(i)}$通过对$\mu+\Lambda z^{(i)}$添加协方差噪音$\Psi$生成。
或者等价地,我们可以按如下方式定义因子分析模型
其中$\epsilon ,z$独立。
让我们看看该模型的准确分布。随机变量$z$和$x$有一个联合高斯分布
我们现在将计算出$\mu_{zx}$和$\Sigma$
由$z \sim \mathcal N(0,I)$我们知道$\mathbb E[z]=0$。所以,我们有
将上述结果合并,我们有
接下来,为了得到$\Sigma$,我们需要计算$\Sigma_{zz}=\mathbb E[(z-\mathbb E[z])(z-\mathbb E[z])^T]$($\Sigma$的左上分块),$\Sigma_{zx}=\mathbb E[(z-\mathbb E[z])(x-\mathbb E[x])^T]$($\Sigma$的右上分块),以及$\Sigma_{xx}=\mathbb E[(x-\mathbb E[x])(x-\mathbb E[x])^T]$($\Sigma$的右下分块)。
因为$z \sim \mathcal N(0,I)$,我们可以轻松得到$\Sigma_{zz}=\text{Cov}(z)=I$。并且,我们有
最后一步中,我们利用到$\mathbb E[zz^T]=\text{Cov}(z)$的事实(因为$z$的均值为$0$),以及$ \mathbb E[z\epsilon^T]= \mathbb E[z]\mathbb E[\epsilon^T]=0$(因为$z$和$\epsilon$独立,所以乘积的期望等于期望的乘积)。类似的,我们可以按如下方式计算出$\Sigma_{xx}$
将所有内容整合起来,我们得到
我们还能发现$x$的边际分布为$x\sim \mathcal N(\mu,\Lambda\Lambda^T+\Psi)$。因此,给定训练集$\{x^{(i)};i=1,…,m\}$,参数的对数似然函数如下:
为了进行最大似然估计,我们想关于参数最大化上式。但是精确地对上式最大化很困难,并且我们知道没有算法能以解析形式求出参数。所以,取而代之,我们将使用EM算法。在下一部分,我们将推导因子分析的EM算法。