PRML读书会第十二章 Continuous Latent Variables(PCA,PPCA,核PCA,Autoencoder,非线性流形)_continuous pca-程序员宅基地

技术标签: Autoencoder  核PCA  非线性流形  PPCA  PCA  

主讲人 戴玮

(新浪微博:@戴玮_CASIA

Wilbur_中博(1954123) 20:00:49 

我今天讲PRML的第十二章,连续隐变量。既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是什么?我们可能还记得之前尼采兄讲过的9.2节的高斯混合模型。它有一个K维二值隐变量z,不仅只能取0-1两个值,而且K维中只能有1维为1、其他维必须为0,表示我们观察到的x属于K类中的哪一类。显然,这里的隐变量z就是个离散隐变量。不过我们容易想到,隐变量未必像kmeans或GMM这种聚类算法那样,非此即彼、非白即黑,我们当然也可能在各个聚类或组成成分之间连续变化。而且很多情况下,连续变化都是更合理、更容易推广的。所以,我们这一章引入了连续隐变量。
书中举了一个例子:从某张特定的手写数字图像,通过平移和旋转变换生成多张图像。虽然我们观察到的是整个图像像素的一个高维数据空间中的样本,但实际上只是由平移和旋转这三个隐变量产生的,这里的平移和旋转就是连续隐变量。还举了个石油流量的例子,是从两个隐变量经过测量得到12个观察变量,那里的两个隐变量也是连续的。 一般来说,样本不会精确处在由隐变量表示的低维流形上,而是可能稍有偏差,这种偏差可视作噪声。噪声的来源各种各样,不是我们能把握的,一般只能统一把它们看成单一的噪声项来处理。
最简单的情况下,我们可以把隐变量和观察变量都假设为高斯分布,并且利用2.3.1讲过的条件分布与边缘分布之间的线性高斯关系,来建立观察变量与隐变量之间的线性模型。这样,我们就可以建立主成分分析(PCA)以及与之相关的因子分析(FA)的概率模型。不过在此之前,我们还是看看传统视角是如何处理主成分分析的:
PCA也叫Karhunen-Loève transform(KL变换)或Hotelling transform(霍特林变换)。它有两种可产生相同算法的等价视角:最大方差和最小重构误差。两种视角都希望找到一组正交投影,把原数据投影到低维的线性子空间上。但最大方差视角是说,我们希望数据投影之后在投影方向上有最大方差;而最小重构误差视角是说,我们希望投影后的数据和原数据之间的均方差最小。前者由Hotelling于1933年提出,后者由Pearson于1901年提出。
先来看最大方差视角。首先定义样本均值和样本协方差:


然后,我们可以得到某个投影方向u_1上的方差:

不失一般性,我们令,这样我们就可以将作为约束,将方差最大作为目标函数,把这个问题看作有约束最优化问题,因此可用拉格朗日乘子法求解:

令其导数为0,可得到:
 
这是我们熟悉的线性代数中的特征值分解问题,lambda_1和u_1分别是S的特征值和特征向量。而且可以看到,这里求出的u_1方向的最大方差就是:

在余下的方向中依次选择最大方差方向,就是S由大到小给出的各个特征值以及对应的特征向量,这也容易从S是实对称矩阵、因此得到的特征向量之间是正交的这一点看出来。
再来看最小重构误差视角,由投影方向之间的标准正交关系,我们可以得到样本在D个投影方向下的表示:

但我们不想用D个投影方向,而是想用M<D个方向来表示样本,并且希望这样表示尽可能接近原样本。那么原样本与M个方向重构得到的样本之间的误差,用均方差来衡量就是:

上面的公式12.14展开之后就是:

我们想最小化这个重构误差项。因为投影方向之间正交,所以也可以逐一求解,也就是目标函数:

约束条件是:

同样可以由拉格朗日乘子法得到:

这和最大方差视角一样,也是特征值问题。只不过这里是去掉较小特征值对应的方向,因为那些方向对应着较小的重构误差,而先前是保留较大特征值对应的方向。但得到的结果是完全一样的。
在D个特征向量中选择前M个作为投影方向,得到的重构误差就是:
 
下面简单谈谈PCA的复杂度问题。我们知道,S是DxD维矩阵,对S做特征值分解需要O(D^3)的复杂度。如果仅需要前M个最大的特征值以及特征向量,那么有一些算法可达到O(M*D^2)复杂度,比如power method(Golub and Van Loan, 1996)。然而,即使是O(M*D^2),在D较大的时候也是难以接受的。比如我们可能会用PCA做人脸识别的一些处理,人脸图像一般是几万维的,那么O(M*D^2)就是至少好几亿的复杂度,这显然是无法接受的。一会我们要讲的概率角度下用EM算法求解PPCA可以进一步降低复杂度。但仅从矩阵分解角度,实际上有一个非常巧妙的方法,也是PCA实现中常用的一种技巧:

我们知道,对S做特征值分解的公式是:

我们可以把左右都左乘X,得到:

得到:


这里可以看到,对做特征值分解,与对做特征值分解,它们有着相同的非零特征值,但特征向量是不一样的。

不过,对(12.28)左右同时左乘X^T之后,我们可以得到:

 
因为我们要求投影方向是标准正交的,所以归一化之后就是

因为XX^T是NxN矩阵,和样本数量相关而和特征维度无关,所以如果是特征空间维度很高,但样本数量相对来说不那么大,那么我们就可以对XX^T做特征值分解,而不是X^TX。这样算法求解起来会快很多。但是,如果样本数量也很大、特征维度也很高,这样做也不合适了。这时就需要借助概率模型来求解。

============================讨论===================

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Nietzsche2015/article/details/43450857

智能推荐

java中excel文件上传_java上传excel-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏2次。excel文件上传_java上传excel

关于purge master logs的一个小实验-程序员宅基地

文章浏览阅读751次。原理部分来自《MariaDB原理与实现》 Page109-111purge删除binlog的过程如下:1、检查to_log在mysql-bin.index中是否存在,避免非法的purge操作2、创建一个purge_index_file,用于保存待删除的binlog文件名称3、遍历index文件,将可删除的binlog添加到purge_index_file中(purge删除时候..._purge master与purge purge

李宏毅2022机器学习/深度学习 个人笔记(3)-程序员宅基地

文章浏览阅读263次。接下来李宏毅教授介绍了梯度下降的优化方案,如采用动量、RMSProp、Learning Rate Decay、Warm Up等。接下来介绍遇到鞍点时的优化办法。接下来探讨,当optimization不佳的时候,如何判断是遇到了鞍点还是遇到了局部最小值点?而红框是一个二次型,若二次型矩阵是正定或者负定的,则可直接判断出该点是局部最小还是局部最大。本系列用于推导、记录该系列视频中本人不熟悉、或认为有价值的知识点。当然,这个方法不多用,只是介绍,顺便复习有关知识即可。关于多元函数泰勒公式,可参考。

vue多层嵌套下的数据绑定_vue多层嵌套数据绑定-程序员宅基地

文章浏览阅读4.2k次。vue作为数据驱动,通过数据和视窗view层绑定,操作数据即可触发view层的更新,所以数据绑定尤为重要单层的数据绑定很简单,父组件传值进去,子组件通过props获取,然后通过$emit事件携带参数回调父组件<v-child :vlaue="data" @update="update"></v-child>子组件<template> <inp..._vue多层嵌套数据绑定

人工智能与计算弹性:拓展人类思维的边界-程序员宅基地

文章浏览阅读882次,点赞10次,收藏17次。1.背景介绍人工智能(AI)是一种通过计算机程序模拟人类智能的技术。计算弹性(Cloud Computing)是一种通过互联网提供计算资源的服务。在过去的几年里,计算弹性和人工智能逐渐相互依赖,共同推动了人类思维的发展。本文将从以下几个方面进行探讨:背景介绍核心概念与联系核心算法原理和具体操作步骤以及数学模型公式详细讲解具体代码实例和详细解释说明未来发展趋势与挑战附录常见问题与...

视频测试地址_竖屏视频测试网站-程序员宅基地

文章浏览阅读5.4k次。/** 视频链接 */竖屏视频#define videoURL1 @"http://yun.it7090.com/video/XHLaunchAd/video01.mp4"#define videoURL2 @"http://yun.it7090.com/video/XHLaunchAd/video02.mp4"#define videoURL3 @"http://yun.it7090.com/v..._竖屏视频测试网站

随便推点

Windows下安装 git_windows 安装git-程序员宅基地

文章浏览阅读307次。目录下载安装包安装教程下载安装包http://git-scm.com/点击下载按钮可以直接下载 git 安装文件。如果想要学习关于 git 相关内容的话,官网也有中文版的电子书,如下:安装教程这里有别人写好的,很详细,我就偷个懒吧Git安装教程(Windows安装超详细教程)..._windows 安装git

Uncaught DONException: Failed to execute ‘atob‘ on “window ‘: The string to be decoded is not carrec_failed to execute 'atob' on 'window': the string t-程序员宅基地

文章浏览阅读1.9w次,点赞2次,收藏6次。在console出现了标题这段报错,原因是编码的字符串中含有“-”或者“_”。解决办法如下:// 将上面这段改为下面这段代码//var bstr = atob(arr[1]);var bstr = decodeURIComponent(escape(atob(arr[1])));_failed to execute 'atob' on 'window': the string to be decoded is not correc

计算机中丢失msvcp140.dll无法启动此程序怎么办?msvcp140.dll在哪里_无法启动此程序因为计算机丢失msvcp140d.dll-程序员宅基地

文章浏览阅读577次。计算机中丢失msvcp140.dll无法启动此程序怎么办?msvcp140.dll在哪里_无法启动此程序因为计算机丢失msvcp140d.dll

16bit高精度、250MSPS采样率,支持4通道同步采集、2通道同步输出的高速数据采集卡_16bit精度-程序员宅基地

文章浏览阅读723次。N-LINX 是南科复华信息科技研发的一款同时具备交流耦合程控放大器和支持单、双极性宽带信号输入的高速数据采集卡;板载FPGA具备实时信号处理能力,这些特性使N-LINX成为激光雷达、光电倍增管应用以及光纤传感等领域进行信号采集和分析的理想工具。N-LINX提供快速的PCI Express3.0x8数据传输接口,以及灵活配置的硬件组合,获得性能、功耗和成本之间的佳平衡,尤其适合于OEM应用。南科复华高速数据采集卡N-LINX的应用领域,激光雷达系统;光电倍增管采集系统;雷电定位系统等其他相关领域。_16bit精度

自然语言处理学习——基于对比自监督学习的语言模型设计和改进*_自然语言改进算法数据讨论-程序员宅基地

文章浏览阅读1.8k次。基于对比自监督学习的语言模型设计和改进*摘要:最近几年见证了自然语言处理特别是表示学习的预训练模型的蓬勃发展,基于对比学习的自监督模型是其中最火的一种。BERT是近几年来在多种语言处理任务上取得了突出成就,但是它在需要处理句子的任务(例如聚类或语义搜索)效率低下,因为它需要组合地评估许多句子对,这非常耗时。 而Sentence -BERT(SBERT)试图通过学习单个句子的语义表示来解决这一难题,以便可以轻松地访问相似性比较。但是,SBERT接受了带有高质量标记语句对的Corpus培训,这限制了其在标._自然语言改进算法数据讨论

Harbor安装-程序员宅基地

文章浏览阅读459次,点赞10次,收藏7次。Harbor安装