课程视频地址: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算法。

最新文章

  1. PHP无限极分类
  2. Java 反射机制学习资料
  3. 创建XML
  4. acess() 判断目录是否存在
  5. DB2分区表删除和添加分区
  6. SGU 185 Two shortest ★(最短路+网络流)
  7. JAVA 对象拷贝
  8. 封装fastjson为spring mvc的json view
  9. Win10玩魔兽争霸不能全屏显示的设置教程
  10. 自定义的Server
  11. Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined)D. Felicity's Big Secret Revealed
  12. Hook 无侵入式埋点(页面统计)
  13. Spring Cloud Netflix vs Spring Cloud Alibaba
  14. 【翻译】asp.net core中使用MediatR
  15. VC维的来龙去脉——转载
  16. 数据合并处理concat
  17. 项目冲刺Third
  18. Js操作Cookie的实现
  19. PARAMETERS 指令
  20. Alpha版本发布时间安排

热门文章

  1. 嵌入式开发为什么选择C语言作为开发语言?
  2. 17.3.13--python编码问题
  3. win10远程桌面身份验证错误,要求的函数不受支持
  4. Opencv笔记(十六)——认识轮廓
  5. 在维护项目中的UUID工具类
  6. Git log 中文乱码
  7. tap点击一次,内部程序执行两次,多次
  8. reviewer回信
  9. [LC] 293. Flip Game
  10. “大屏,您好!” SONIQ声光揭新品“U•F•O”神秘面纱