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算法。
CS229 Lesson 13 高斯混合模型的更多相关文章
- 聚类之高斯混合模型(Gaussian Mixture Model)【转】
k-means应该是原来级别的聚类方法了,这整理下一个使用后验概率准确评测其精度的方法—高斯混合模型. 我们谈到了用 k-means 进行聚类的方法,这次我们来说一下另一个很流行的算法:Gaussia ...
- CS229 Lesson 5 生成学习算法
课程视频地址:http://open.163.com/special/opencourse/machinelearning.html 课程主页:http://cs229.stanford.edu/ 更 ...
- 高斯混合模型(GMM)
复习: 1.概率密度函数,密度函数,概率分布函数和累计分布函数 概率密度函数一般以大写“PDF”(Probability Density Function),也称概率分布函数,有的时候又简称概率分布函 ...
- 高斯混合模型与EM算法
对于高斯混合模型是干什么的呢?它解决什么样的问题呢?它常用在非监督学习中,意思就是我们的训练样本集合只有数据,没有标签. 它用来解决这样的问题:我们有一堆的训练样本,这些样本可以一共分为K类,用z(i ...
- paper 62:高斯混合模型(GMM)参数优化及实现
高斯混合模型(GMM)参数优化及实现 (< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:of ...
- EM算法原理以及高斯混合模型实践
EM算法有很多的应用: 最广泛的就是GMM混合高斯模型.聚类.HMM等等. The EM Algorithm 高斯混合模型(Mixtures of Gaussians)和EM算法 EM算法 求最大似然 ...
- 高斯混合模型参数估计的EM算法
# coding:utf-8 import numpy as np def qq(y,alpha,mu,sigma,K,gama):#计算Q函数 gsum=[] n=len(y) for k in r ...
- GMM高斯混合模型学习笔记(EM算法求解)
提出混合模型主要是为了能更好地近似一些较复杂的样本分布,通过不断添加component个数,能够随意地逼近不论什么连续的概率分布.所以我们觉得不论什么样本分布都能够用混合模型来建模.由于高斯函数具有一 ...
- EM 算法求解高斯混合模型python实现
注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...
随机推荐
- b+树的原理
Java 内存区域<ignore_js_op>Heap线程公有存放实例对象是GC主要管理区域,因此可以更细致的划分为:新生代.老年代再细致一点划分:Eden区.From Survivor区 ...
- [原]C++新标准之std::thread
原 总结 C++11 thread 概览 std::thread 类定义 各个成员函数的简单介绍 例子 更多 参考资料 概览 从C++11开始提供了线程的支持,终于可以方便的编写跨平台的线程代码了. ...
- 03.pipeline实现项目自动编译docker镜像自动打包
https://jenkins.io/zh/doc/book/pipeline/ 官方教程,可以中文.Jenkinsfile就是把pipeline内容保存到文件,然后提交到svn等版本控制库中.安装b ...
- 十三、linux-mysql的mysql的核心优化思想
一.数据库运维管理思想核心 1.未雨绸缪,不要停留在制度上,而是要实际做出来 2.亡羊补牢,举一反三,不要好了伤疤忘了疼 3.完善的框架设计及备份.恢复策略 4.定期思考,并实战模拟以上策略演练 二. ...
- ubuntu Python 升级
安装时ubuntu提示: DEPRECATION: Python 3.4 support has been deprecated. pip 19.1 will be the last one supp ...
- python语法基础-网络编程-HTTP协议
############### HTTP协议 ############## """ 当你在浏览器地址栏敲入“http://www.cnblogs.com/”, ...
- 快手为什么要全资收购Acfun?
近日据媒体报道,快手已完成对「Acfun」以下简称A站的全资收购.未来A站仍将保持独立品牌和独立运营以及原有团队的独立发展.近年来,A站可谓命途多舛.相比隔壁B站风风光光顺利上市且成为真正的二次元大本 ...
- 2)echo count(strlen("test")) 的输出为____
结果是 1: 因为count测的是单元的数目,你的一个数组就是一个单元,所以 他的结果就是1 题目出处: https://www.nowcoder.com/test/question/done?ti ...
- [洛谷P3806] [模板] 点分治1
洛谷 P3806 传送门 这个点分治都不用减掉子树里的了,直接搞就行了. 注意第63行 if(qu[k]>=buf[j]) 不能不写,也不能写成>. 因为这个WA了半天...... 如果m ...
- hadoop-2.5.2 源码学习1