本文主要介绍机器学习中的线性代数知识。

本文主要包括以下内容:

  • 标量、向量、矩阵、张量
  • 矩阵向量的运算
  • 单位矩阵和逆矩阵
  • 行列式
  • 方差、标准差、协方差矩阵
  • 范数
  • 特殊类型的矩阵和向量
  • 特征分解及其意义
  • 奇异值分解及其意义
  • Moore-Penrose伪逆
  • 迹运算

标量、向量、矩阵、张量

标量

一个标量就是一个单独的数值,一般用小写的变量名表示。在定义标量时要说明标量所属的数据类型,如“另nNn\in N表示社团的数量”。

向量

可以简单理解为一列数,可以通过索引确定每个单独的数,通常使用粗体的小写表示。当我们需要明确表示向量中的元素是,一般都是表示成为列向量如下:

x=[x1x2xn]x= \left[ \begin{array}{ccc} x_1 \\\\ x_2 \\\\ \dots \\\\ x_n \end{array} \right]

矩阵

矩阵是二维数组,其中每一个元素被两个索引所确定,通常赋予矩阵粗体的大写变量名称表示。如定义矩阵ARm×nA\in R^{m\times n}如下:

A=[a11a12a1na21a22a2nam1am2amn]A= \left[ \begin{array}{ccc} a_{11} & a_{12} & \dots & a_{1n} \\\\ a_{21} & a_{22} & \dots & a_{2n} \\\\ \dots & \dots & \dots & \dots \\\\ a_{m1} & a_{m2} & \dots & a_{mn} \end{array} \right]

张量

张量是基于向量和矩阵的推广,通俗的理解可以将标量视为零阶张量,向量(矢量)视为一阶张量,矩阵是二阶张量。例如可以将任意一张彩色图片表示为一个三阶的张量,三个维度分别为图片的高度、宽度和色彩数据。

矩阵向量的运算

矩阵乘法

矩阵乘积:Cm×p=Am×nBn×pC_{m\times p}=A_{m\times n}B_{n\times p}

乘法的操作定义:Ci,j=kAi,kBk,jC_{i,j}=\sum_kA_{i,k}B_{k,j}

两个矩阵中对应元素的乘积称为元素对应乘积或者是Hadamard乘积,记为ABA\odot B

两个相同维数的向量xyx和y的点积记为xTyx^Ty,也可以称为向量的内积

矩阵转置

矩阵转置结果:ai,j=aj,ia_{i,j}=a_{j,i}

RRTR\cdot R^T结果为对称矩阵

单位矩阵和逆矩阵

nn维单位矩阵记为InI_n:xRn,Inx=x\forall x\in R^n,I_nx=x,单位矩阵的具体形式如下:

A=[100010001]A= \left[ \begin{array}{ccc} 1 & 0 & \dots & 0 \\\\ 0 & 1 & \dots & 0 \\\\ \dots & \dots & \dots & \dots \\\\ 0 & 0 & \dots & 1 \end{array} \right]

矩阵AA的逆矩阵记为A1A^{-1},满足条件:A1A=InA^{-1}A=I_n

判断一个矩阵是否存在逆矩阵的方法如下:

  • 一切不是方针的矩阵都没有逆矩阵
  • 可逆矩阵是非奇异矩阵,非奇异矩阵也是可逆矩阵
  • 行列式的值等于0的矩阵是奇异矩阵即可逆矩阵的行列式的值不等于0

行列式

行列式,记为det(A)det(A),是将一个方阵映射到实数的函数。

行列式的值等于矩阵特征值的乘积。

行列式的值可以用来衡量矩阵参与矩阵乘法后矩阵空间扩大了或者缩小了多少。如果行列式的值为0,那么矩阵空间至少沿着某一维完全收缩了,使其失去了所有的体积。如果行列式的值为1,那么转换保持矩阵空间体积不变。

方差、标准差、协方差

方差

方差是衡量随机变量或者一组数据的离散程度,方差计算公式如下:

σ2=(Xμ)2N\sigma^2=\frac{\sum(X-\mu)^2}{N}

其中σ2\sigma^2为总体的方差,XX为变量,μ\mu为总体均值,NN为总样本数。

标准差

标准差也称为标准偏差或者实验标准差,计算公式如下:

σ2=(Xμ)2N\sigma^2=\sqrt\frac{\sum(X-\mu)^2}{N}

协方差

协方差是用来度量两个随机变量关系的统计量

期望值分别为E[X]E[Y]E[X]和E[Y]的两个随机变量之间的协方差cov(X,Y)cov(X,Y)定义如下:

cov(X,Y)=E[(XE[X])(YE[Y])]cov(X,Y)=E[(X-E[X])(Y-E[Y])]

=E[XY]2E[X]E[Y]+E[X]E[Y]=E[XY]-2E[X]E[Y]+E[X]E[Y]

=E[XY]E[X]E[Y]= E[XY]-E[X]E[Y]

如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值时另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,即其中一个变量大于自身的期望值时另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

协方差矩阵:协方差矩阵是用来计算不同维度之间的协方差,而不是不同样本之间的的协方差。计算形式如下:

(i,j)=cov(Xi,Xj)\sum(i,j)=cov(X_i,X_j)

举例便于理解:

问题:

有一组数据如下,分别为二维向量,这四个数据对应的协方差矩阵是多少?

x1=(1,2)T,x2=(3,6)T,x3=(4,2)T,x4=(5,2)Tx_1=(1,2)^T,x_2=(3,6)^T,x_3=(4,2)^T,x_4=(5,2)^T

解答:

由于数据是二维的,所以协方差矩阵是一个2×22\times 2的矩阵记为\sum,矩阵\sum中的每一个元素为:

元素(i,j)=(i维所有的元素i维的均值)(j维所有的元素j维的均值)元素(i,j)=(第i维所有的元素-第i维的均值)\odot(第j维所有的元素-第j维的均值)

运算\odot表示两个向量求内积,对应元素相乘之后累加为最后结果。

首先求出第一维的均值:

D1:(1,3,4,5) Average=3.25

D2:(2,6,2,2) Average=3

例如计算(1,2)\sum(1,2)

(1,2)=(13.25,33.25,43.25,53.25)(23,63,23,23)=1\sum(1,2)=(1-3.25,3-3.25,4-3.25,5-3.25)\odot(2-3,6-3,2-3,2-3)=-1

类似的可以求出其他三个元素,最后结果为:

=(8.751112)\sum= \left( \begin{array}{ccc} 8.75& -1 \\\\ -1 & 12 \end{array} \right)

总结协方差矩阵的特点如下:

  • 对角线元素(i,i)(i,i)为第ii 维数据的方差
  • 非对角线元素(i,j)(i,j) 为第i维和第j维数据的方差
  • 协方差矩阵是对角矩阵

范数

范数是衡量一个向量大小的单位,在机器学习中使用范数衡量矩阵的大小。

向量范数

向量LPL^P 范数如下:

xp=(ixip)1/p||x||_p=(\sum_i|x_i|^p)^{1/p}

常见范数:

L1L_1范数x||x||: 为向量xx的各个元素的绝对值之和。

L2L_2范数x2||x||_2: 为向量xx各个元素平方和的开方。

p=2p=2时,L2L_2范数被称为欧几里得范数。L2L_2范数在机器学习中通常简化为x||x||表示。

矩阵范数

1-范数:

A1=maxji=1mai,j\|A\|_{1}=\max _{j} \sum_{i=1}^{m}\left|a_{i, j}\right|

列和范数,即矩阵所有列向量绝对值之和的最大值。

2-范数:$$|A|{2}=\sqrt{\lambda{1}}$$,λ1\lambda_{1}ATAA^TA 的最大特征值,谱范数,即ATAA^TA 最大特征值的开平方。

\infty范数:$$|A|{\infty}=\max {i} \sum{j=1}^{n}\left|a{i, j}\right|$$
即所有矩阵行向量绝对值之和的最大值。

F-范数:

AF=(i=1mj=1naij2)12\|A\|_{\mathbb{F}}=\left(\sum_{i=1}^{m} \sum_{j=1}^{n}\left|a_{i j}\right|^{2}\right)^{\frac{1}{2}}

,Frobenius范数,即矩阵元素绝对值的平方和再开平方。

特殊类型的矩阵和向量

对角矩阵

Diagonal Matrix: 只在主对角线上含有非零元素,其它位置上都是0.

形式上定义:矩阵是对角矩阵当且仅当对于所有的i=j,Di,j0D_{i,j}\neq0

单位矩阵是对角矩阵

单位向量

单位向量指模等于1的向量即x2=1||x||_2=1。由于是非零向量,单位向量具有确定的方向。单位向量有无数个。

对称矩阵

对称矩阵指转置之后与本身相同的矩阵:A=ATA=A^T

正交矩阵

正交矩阵指矩阵行向量和列向量分别标准正交的方阵:ATA=AAT=IA^TA=AA^T=I,即A1=ATA^{-1}=A^T

对于行向量或列向量互相正交但是不是标准正交的矩阵没有对应的术语。

特征分解及其意义

许多数学对象可以通过将它们分解成多个组成部分,或者找到它们的一些属性而更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式引起的。

例如:整数可以分解为质数。 我们可以用十进制或二进制等不同方式表示整数12,但质因数分解永远是对的12=2×3×3。 从这个表示中我们可以获得一些有用的信息,比如12不能被5整除,或者12的倍数可以被3整除。

正如我们可以通过分解质因数来发现整数的一些内在性质,我们也可以通过分解矩阵来发现矩阵表示成数组元素时不明显的函数性质。

  • 特征分解是使用最广的矩阵分解方法之一,可以将矩阵分解成为一组特征向量和特征值。
  • 矩阵的特征向量就是这样一种向量,它经过特定的变换后保持方向不变,只是长度上进行了伸缩。

特征向量的原始定义:

AX=CXAX=CX

上式中CXCX是方阵AA对向量XX进行变换后的结果,显然CXCXXX的方向相同。如果XX为特征向量,CC表示的就是特征值。

AA是一个N×NN\times N的方阵,且有N个线性无关的特征向量qi(i=1,2,,N)q_i(i=1,2,\cdots,N)

矩阵AA可以被分解为

A=QTQ1A=QTQ^{-1}

其中QQN×NN\times N方阵且其第ii 列为AA的特征向量。TT为对角矩阵,对角线元素为对应的特征值即Tii=CiT_{ii}=C_i

注意:矩阵如果不能被对角化就不能进行特征分解。

特征值及特征向量的几何意义和物理意义:

在空间中,对一个变换而言,特征向量指明的方向才是很重要的,特征值不那么重要。虽然我们求这两个量时先求出特征值,但特征向量才是更本质的东西!特征向量是指经过指定变换(与特定矩阵相乘)后不发生方向改变的那些向量,特征值是指在经过这些变换后特征向量的伸缩的倍数,也就是说矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。

物理的含义就是图像的运动:特征向量在一个矩阵的作用下作伸缩运动,伸缩的幅度由特征值确定。特征值大于1,所有属于此特征值的特征向量身形暴长;特征值大于0小于1,特征向量身形猛缩;特征值小于0,特征向量缩过了界,反方向到0点那边去了。

特征分解的重要应用–PCA(主成分分析)

假设机器学习中的分类问题,给出178个葡萄酒样本,每个样本含有13个参数,比如酒精度、酸度、镁含量等,这些样本属于3个不同种类的葡萄酒。任务是提取3种葡萄酒的特征,以便下一次给出一个新的葡萄酒样本的时候,能根据已有数据判断出新样本是哪一种葡萄酒。

原数据有13维,但这之中含有冗余,减少数据量最直接的方法就是降维。做法:把数据集赋给一个178行13列的矩阵R,减掉均值并归一化,它的协方差矩阵C是13行13列的矩阵,对C进行特征分解,对角化,其中U是特征向量组成的矩阵,D是特征值组成的对角矩阵,并按由大到小排列。然后,另R’ =RU,就实现了数据集在特征向量这组正交基上的投影。嗯,重点来了,R’中的数据列是按照对应特征值的大小排列的,后面的列对应小特征值,去掉以后对整个数据集的影响比较小。比如,现在我们直接去掉后面的7列,只保留前6列,就完成了降维。这个降维方法就叫PCA(Principal Component Analysis)。降维以后分类错误率与不降维的方法相差无几,但需要处理的数据量减小了一半(不降维需要处理13维,降维后只需要处理6维)。

奇异值分解及其意义

奇异值分解就是将矩阵AA分解为三个矩阵的乘积:

A=UDVTA=UDV^T

假设AA是一个m×nm\times n的矩阵,那么UU是一个m×mm\times m的矩阵,DD是一个m×nm\times n的矩阵,VV是一个n×nn\times n矩阵。

这些矩阵经过定义之后都有特殊的结构。矩阵UVU和V都被定义为正交矩阵,矩阵DD定义为对角矩阵。

奇异值分解参考

奇异值分解的意义:

奇异值分解的含义是,把一个矩阵A看成线性变换(当然也可以看成是数据矩阵或者样本矩阵),那么这个线性变换的作用效果是这样的,我们可以在原空间找到一组标准正交基V,同时可以在对应空间找到一组标准正交基U,我们知道,看一个矩阵的作用效果只要看它在一组基上的作用效果即可,在内积空间上,我们更希望看到它在一组标准正交基上的作用效果。而矩阵A在标准正交基V上的作用效果恰好可以表示为在U的对应方向上只进行纯粹的伸缩!这就大大简化了我们对矩阵作用的认识,因为我们知道,我们面前不管是多么复杂的矩阵,它在某组标准正交基上的作用就是在另外一组标准正交基上进行伸缩而已。

详细奇异值的意义参考

奇异值分解和特征分解的联系:

  • 不是所有的矩阵都能对角化(对称矩阵总是可以),而所有矩阵总是可以做奇异值分解的。
  • 协方差矩阵的奇异值分解结果和特征值分解结果一致。所以在PCA中,SVD是一种实现方式。

Moore-Penrose伪逆

对于非方阵而言,其逆矩阵没有定义。假设在下面问题中,想通过矩阵A的左逆B来求解线性方程:Ax=yAx=y

等式两边同时左成左逆B后得到:x=Byx=By

是否存在唯一的映射将A映射到B取决于问题的形式。

如果矩阵A的行数大于列数,那么上述方程可能没有解;如果矩阵A的行数小于列数,那么上述方程可能有多个解。

Moore-Penrose伪逆使我们能够解决这种情况,矩阵A的伪逆定义为:

A+=limα0(ATA+αI)1ATA^{+}=\lim_{\alpha\rightarrow 0}(A^TA+\alpha I)^{-1}A^T

细节参考Wiki

一般计算伪逆的实际算法没有基于上式,而是使用下面的公式:

A+=VD+UTA^+=VD^+U^T

其中,矩阵U,D和V是矩阵A奇异值分解后得到的矩阵。对角矩阵D的伪逆D+D^+是其非零元素取倒之后再转置之后得到的矩阵。

对于上面伪逆的定义,下面再阐释的更加详细一点:

ACm×nA\in C^{m\times n},如果GCn×mG\in C^{n\times m}满足

  • AGA=AAGA=A
  • GAG=GGAG=G
  • (AG)H=AG(AG)^H=AG
  • (GA)H=GA(GA)^H=GA

则G为A的Moore-Penrose广义逆矩阵,简称为M-P广义逆或者伪逆,记为A+A^+

注:AHA^H为A的转置共轭矩阵。实数矩阵的共轭转置矩阵就是转置矩阵,复数矩阵的共轭转置矩阵行列互换后每个元素取共轭。共轭就是复数中的虚数符号改变。

广义逆的满秩算法

  1. 设A为列满秩矩阵,则$$A+=(AHA){-1}AH$$
  2. 设A为行满秩矩阵,则$$A+=AH(AAH){-1}$$
  3. A=LRA=LR,其中LL为列满秩矩阵,RR为行满秩矩阵,则$$A+=R+L+=RH(RRH){-1}(LHL){-1}L^H$$

注:列满秩矩阵就是矩阵的秩等于矩阵列数的矩阵。矩阵的秩就是矩阵非零行元素的个数。

迹运算

迹运算返回的是矩阵对角元素的和:

Tr(A)=i=jAi,jTr(A)=\sum_{i=j}A_{i,j}

迹运算提供另一种描述Frobenius范数的方式:AF=Tr(AAT)||A||_F=\sqrt{Tr(AA^T)}

联系作者