深度学习笔记1

第二章 线性代数

数学这块,对机器学习和深度学习还是很必要的,不说很深入的理解,至少需要清楚一些基础知识。

 

基础概念:

Ø  标量:单个数字(小写英文字母表示)

Ø  向量:一列数字(小写英文字母加粗表示)

Ø  矩阵:二维数组(大写英文字母加粗表示)

Ø  张量:若干维度数组(大写英文字母加粗黑体表示)

Ø  转置:矩阵的镜像翻转

 

Ø  矩阵乘积:AB 需维度对应

Ø    矩阵点乘:AB 需维度对应

Ø  向量点积:看作矩阵点乘,一一对应

 

Ø  单位矩阵:对角线为1,其余全为0

Ø  逆矩阵:逆矩阵和原矩阵相乘为单位矩阵

 

Ø  线性相关:一组向量中的某一向量可以由其余向量线性组合表示

Ø  线性无关:反之,不能线性表示

 

Ø  范数:是将向量映射到非负值的函数,直观上来说,向量范数是衡量从原点到点x的距离

Ø  2-范数:欧几里得范数,也就是原点到点x的欧式距离

 

Ø  特征分解:将矩阵分解为一组特征向量和特征值(也就是本科线代和高代考试常考的,很头疼的东西~)

Ø  另外,在矩阵论和数值分析中还可能会遇到奇异值分解,这个在特征提取当中也是常用方法,用来得到一些类似特征分解的信息。

Ø  矩阵的迹:矩阵的迹和F-范数可以运算,在机器学习中常用于公式推到或者简化公式

 

奇异值分解

链接:https://zhuanlan.zhihu.com/p/30610351

链接:https://zhuanlan.zhihu.com/p/29846048

1 奇异值分解是什么

奇异值分解(Singular Value Decomposition,SVD),是一种提取信息的方法。比如有一份记录用户关于餐馆观点的数据,要对其进行处理分析,提取背后的因素,这个因素可能是餐馆的类别,烹饪配料等,然后利用这些因素估计人们对没有去过的餐馆的看法,从而进行推荐,提取这些信息的方法就叫奇异值分解法。

2 奇异值分解的作用是什么

奇异值分解能够简约数据,去除噪声和冗余数据。其实它说白了也是一种降维方法,将数据映射到低维空间。看到这里其实就会想,它和主成分分析(PCA)有什么联系或者差异呢?奇异值分解和主成分分析一样,也是告诉我们数据中重要特征,奇异值是数据矩阵乘以该矩阵的转置的特征值的平方根(Data*Data^T特征值的平方根)。

3 奇异值分解的数学原理

前面说的关于奇异值分解是什么,其实是从应用角度上来说的,从数学的角度讲,它就是一种矩阵分解法。

什么是矩阵分解

顾名思义,矩阵分解就是把一个大矩阵分解成易于处理的形式,这种形式可能是两个或多个矩阵的乘积,就如同我们在代数中的因子分解,这种因子分解在数学里便于我们计算,赋予现实的含义,给一个真实的应用背景,就能方便我们解决生活中遇到的问题。

SVD分解矩阵图

SVD将原始的数据集矩阵Data分解成三个矩阵:U、Sigma、V^T,如果原始矩阵是m行n列,那么U、Sigma和V^T分别就是m行m列、m行n列、n行n列。比较值得一提的是矩阵Sigma,该矩阵只有对角元素,其他元素均为0,有一个惯例是:Sigma的对角元素是从大到小排列的。这些对角元素就称为奇异值。

在科学和工程中,一直存在一个普遍事实:在某个奇异值的数目r之后,其他的奇异值均置0,也就是我们仅保留r个重要特征,其余特征都是噪声或者冗余特征。那么问题来了,这个r到底是多少勒?如何选取呢?确定要保留的奇异值个数有很多启发式的策略,其中一个典型的做法就是保留矩阵90%的能量信息。为了计算能量信息,将所有的奇异值求平均和,直到累加到总值的90%为止。

另一个启发式策略是当矩阵有上万个奇异值时,保留前面的2000个或3000个。其实这两种方法要想为什么的话可能就涉及到繁杂的数学证明了,每一个为什么的地方都有可能有创新点,留着有灵感的时候深入思考吧。

4 SVD计算举例

这里我们用一个简单的例子来说明矩阵是如何进行奇异值分解的。我们的矩阵A定义为:

首先求出

进而分别求特征值和特征向量:

利用特征向量求奇异值:

最终得到A的奇异值分解为:

5 SVD的一些性质 

对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。

也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。

也就是说:

其中k要比n小很多,也就是一个大的矩阵A可以用三个小的矩阵 来表示。如下图所示,现在我们的矩阵A只需要灰色的部分的三个小矩阵就可以近似描述了。

由于这个重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。

下面我们就对SVD用于PCA降维做一个介绍。

6 SVD用于PCA

PCA降维,需要找到样本协方差矩阵 的最大的d个特征向量,然后用这最大的d个特征向量张成的矩阵来做低维投影降维。可以看出,在这个过程中需要先求出协方差矩阵,当样本数多样本特征数也多的时候,这个计算量是很大的。

注意到我们的SVD也可以得到协方差矩阵 最大的d个特征向量张成的矩阵,但是SVD有个好处,有一些SVD的实现算法可以不求先求出协方差矩阵 ,也能求出我们的右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解,而是做SVD来完成。这个方法在样本量很大的时候很有效。实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们我们认为的暴力特征分解。

另一方面,注意到PCA仅仅使用了我们SVD的右奇异矩阵,没有使用左奇异矩阵,那么左奇异矩阵有什么用呢?

假设我们的样本是m×n的矩阵X,如果我们通过SVD找到了矩阵 最大的d个特征向量张成的m×d维矩阵U,则我们如果进行如下处理:

可以得到一个d×n的矩阵X‘,这个矩阵和我们原来的m×n维样本矩阵X相比,行数从m减到了k,可见对行数进行了压缩。

左奇异矩阵可以用于行数的压缩。

右奇异矩阵可以用于列数即特征维度的压缩,也就是我们的PCA降维。

7 SVD小结 

SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手。

SVD的缺点是分解出的矩阵解释性往往不强,有点黑盒子的味道,不过这不影响它的使用。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值