zoukankan      html  css  js  c++  java
  • 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$。

    ​ 现在,考虑$ngg 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$个分量方差的经验估计。

    ​ 有时我们会对协方差矩阵添加更多约束,不仅认为它是对角阵,还认为对角元相同,此时最大似然估计为

    其中$x_1in mathbb R^r, x_2 in mathbb R^s$,因此$xin mathbb R^{r+s}$。假设$xsim mathcal N(mu, Sigma)$,其中

    其中,$mu_1in mathbb R^r$,$mu_2in mathbb R^s$,$Sigma_{11}=mathbb R^{rtimes r}$,$Sigma_{12}in mathbb R^{rtimes 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)$上建立联合分布,其中$zin mathbb R^k$是一个隐变量:

    ​ 这里,模型的参数是向量$muin mathbb R^n$,矩阵$Lambda in mathbb R^{ntimes k}$,以及对角阵$Psi in mathbb R^{ntimes 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[zepsilon^T]= mathbb E[z]mathbb E[epsilon^T]=0$(因为$z$和$epsilon$独立,所以乘积的期望等于期望的乘积)。类似的,我们可以按如下方式计算出$Sigma_{xx}$

    将所有内容整合起来,我们得到

    ​ 我们还能发现$x$的边际分布为$xsim mathcal N(mu,LambdaLambda^T+Psi)$。因此,给定训练集${x^{(i)};i=1,…,m}$,参数的对数似然函数如下:

    为了进行最大似然估计,我们想关于参数最大化上式。但是精确地对上式最大化很困难,并且我们知道没有算法能以解析形式求出参数。所以,取而代之,我们将使用EM算法。在下一部分,我们将推导因子分析的EM算法。

  • 相关阅读:
    sed&awk 资料汇总 全是链接
    LeetCode Path 3Sum
    C++ mem_fun
    递归绑定
    查询当天数据
    清除script注入
    防注入查询
    我的最新分页
    群发邮件
    利用缓存
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12258945.html
Copyright © 2011-2022 走看看