AI机动队
首发于AI机动队
线性代数——深度学习花书第二章

线性代数——深度学习花书第二章

线性代数是机器学习的数学基础之一,这里总结一下深度学习花书线性代数一章中机器学习主要用到的知识,并不囊括所有线性代数知识。

基本概念

线性代数主要研究的是以下几种对象:

  • 标量(scalar):标量就是单一的数字,比如单一的整数,实数,有理数等都是标量。
  • 向量(vector):可以看做是一组标量形成的一维数组,如由n个实数组成的向量:
  • 矩阵(matrix): 矩阵是二维数组,所以每个元素需要行和列的指标来标记
  • 张量(tensor):张量是多维数组,当它是零维时就是标量,一维时就是矢量,二维时就是矩阵,也可以大于二维。

矩阵运算

  • 转置(transpose):矩阵转置可以想成将矩阵按轴线翻转过来,矩阵A的转置常常用 A^{T} 表示
  • 矩阵乘法(matrix product):假如有两个形状分别为 m x n 的矩阵A和 n x p 的矩阵B,注意A的列数和B的行数要匹配,矩阵乘积C=AB就是将A的每一行与对应的B的每一列相乘求和,并将所得的数存储在C的对应元素中:

由图形表示即是

矩阵与向量的乘积可以看做是矩阵与矩阵乘积的一种特殊情况。我们常用的n元一次线性方程组也可以表示为矩阵与向量的乘积形式

  • 逆矩阵(inverse matrix):首先我们需要定义单位矩阵(Identity Matrix) I_{n} , I_{n} 是一个n x n的方形矩阵,并且主对角线均为1,其他元素均为零,单位矩阵与任意向量相乘还得到该向量本身。矩阵A的逆矩阵常用 A^{-1} 表示,其性质是

假如一个矩阵存在逆矩阵,那么相应的线性方程组就可以转化为求逆矩阵与向量的矩阵乘积的问题:

  • (trace):迹定义为求主对角线元素的和
  • 范数(norm):范数用来度量向量的大小。比如 L^{p} norm定义为

其中p是实数且 p\geq1

常用的有 L^{2} norm,代表了从原点到向量所表示的点的欧几里得空间距离。为了方便计算, 我们也常常用 L^{2} norm的平方,可计算为向量转置与自身的乘积 x^{T}x 。机器学习算法中还比较常用的是 L^{1} norm,即

L^{1} norm常常用来做机器学习模型的regularization(防止过拟合,以后章节会细讲),因为 机器学习模型中我们常常想减小模型非零变量的数量以防止过拟合,也就是很多变量变为零,而将大部分权重放在某些有意义的变量上,这时候由于L^{2} 在变量较小接近零时跟随的改变较小,会出现很多趋近于零而不为零的变量,而 L^{1} norm由于跟随于每个变量的变动是恒定的,使得零元素和非零但趋近于零的变量仍对该项有显著贡献,在目标是减小这一项的过程中会使很多变量归零(注意是归零而不仅仅是较小接近零),从而更有效的减少过拟合。

特殊矩阵

  • 对称矩阵(symmetric matrix):对称矩阵的转置等于它自身。
  • 对角矩阵(diagonal matrix):除主对角线的元素均为零。
  • 单位向量(unit vector): 单位向量的 L^{2} norm等于1。
  • 正交矩阵(orthogonal matrix): 正交矩阵的转置与它自身的矩阵乘积是单位矩阵:

本征分解

正如我们可以把正整数表示为更基本的质数的乘积的形式,本征分解(eigendecomposition)也是将矩阵分解为组成它的本征向量(eigenvector)和本征值(eigenvalue)的形式。

本征向量定义如下:如果正方形矩阵A和向量v的乘积可以表示为一个标量 \lambda 与向量v的乘积,那么v就是A的一个本征向量, \lambda 就是A的一个本征值:

可以看出,如果v就是A的一个本征向量,那么任意一个标量与v的乘积仍是A的一个本征向量,而且他们的本征值相同,所以通常我们只关心范数为1的本征向量。假设我们将矩阵A的所有本征向量连成一个矩阵V: V=[v^{(1)},...,v^{(n)}] ,而对应的本征值连成一个向量 \lambda=[\lambda_{1},...,\lambda_{n}]^{T} ,那么矩阵A就可以表示为它的本征分解形式:

我们可以想象矩阵A实际上是将空间在其本征向量的方向上各自拉伸了对应的本征值的尺度。

当然,不是所有矩阵都可以做本征分解,比较幸运的是,通常我们可能要解决的只是某类特定形式的矩阵问题,例如实对称矩阵总可以表示成本征分解的形式。

SVD

SVD全称是Single Value Decomposition奇异值分解。和本征分解类似,它也是将矩阵分解为更基本的组合乘积,而且SVD更具有普适性,对于矩阵本身的要求很少,基本上所有实数矩阵都可以做SVD分解,而本征分解对于非对称矩阵是无能为力的。

SVD将矩阵表示为三个矩阵的乘积形式:

其中A是m x n的矩阵,U是m x m的矩阵,D是m x n的矩阵, V是nXn的矩阵U和V均是正交矩阵,而D是对角矩阵,其对角元素成为奇异值。

SVD在很多方面有重要的作用,比如在推荐系统里,我们有矩阵A来表示用户对影片的评分,那么SVD可以看做是将其映射到某个隐性特征(例如影片风格)的过程,其中U即为(用户,隐性特征)矩阵,V即为(影片,隐性特征)矩阵,而D就代表了每个隐性特征的重要性,我们如果想压缩存储空间的话可以只选择D的一些较大的对角元素,而相应的选取出U和V的对应行列形成新矩阵,通过压缩后的U',D',V'再重构的矩阵A'可以较好的还原矩阵A而没有较大的失真。

以上是第二章线性代数的主要内容,本章还有一个主成分析(PCA)的例子,准备之后讲经典机器学习无监督算法的时候再一并总结,放到第五章比较合适。

编辑于 2018-06-18

文章被以下专栏收录