机器学习中的线性代数

机器学习中的线性代数知识

线性代数作为数学中的一个重要的分支,广发应用在科学与工程中。掌握好线性代数对于理解和从事机器学习算法相关的工作是很有必要的,尤其是对于深度学习而言。因此,在开始介绍深度学习之前,先集中探讨一些必备的线性代数知识。

2.1 标量,向量,矩阵和张量

标量(scalar):一个标量就是一个单独的数。用斜体表示标量,如 s∈Rs∈R.

向量(vector):一个向量是一列数,我们用粗体的小写名称表示向量。比如 xx,将向量xx 写成方括号包含的纵柱: 

x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥x=[x1x2⋮xn]


矩阵(matrix):矩阵是二维数组,我们通常赋予矩阵粗体大写变量名称,比如A​A​ 。如果一个矩阵高度是m​m​,宽度是n​n​,那么说A∈Rm×n​A∈Rm×n​ 。一个矩阵可以表示如下: 

A=[x11x21x12x22]A=[x11x12x21x22]


张量(tensor):某些情况下,我们会讨论不止维坐标的数组。如果一组数组中的元素分布在若干维坐标的规则网络中,就将其称为张量。用A​A​ 表示,如张量中坐标为(i,j,k)​(i,j,k)​的元素记作Ai,j,k​Ai,j,k​。

转置(transpose):矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线称为主对角线(main diagonal)。将矩阵AA的转置表示为A⊤A⊤。定义如下: 

(A⊤)i,j=Aj,i(A⊤)i,j=Aj,i

A=⎡⎣⎢x11x21x31x12x22x32⎤⎦⎥⟹A⊤=[x11x21x21x22x31x32]A=[x11x12x21x22x31x32]⟹A⊤=[x11x21x31x21x22x32]

2.2 矩阵和向量相乘

矩阵乘法是矩阵运算中最重要的操作之一。两个矩阵AA和BB 的矩阵乘积(matrix product)是第三个矩阵CC 。矩阵乘法中AA 的列必须和 BB 的行数相同。即如果矩阵 AA 的形状是 m×nm×n ,矩阵 BB 的形状是 n×pn×p ,那么矩阵 CC 的形状就是 m×pm×p 。即 

C=A×BC=A×B


具体的地,其中的乘法操作定义为 

Ci,j=∑kAi,kBk,jCi,j=∑kAi,kBk,j


矩阵乘积服从分配律 

A(B+C)=AB+ACA(B+C)=AB+AC


矩阵乘积也服从结合律 

A(BC)=(AB)CA(BC)=(AB)C


注意:矩阵乘积没有交换律

点积(dot product)两个相同维数的向量xx 和 yy 的点积可看作是矩阵乘积 x⊤yx⊤y

矩阵乘积的转置 

(AB)⊤=B⊤A⊤(AB)⊤=B⊤A⊤


利用向量的乘积是标量,标量的转置是自身的事实,我们可以证明(10)式: 

x⊤y=(x⊤y)⊤=y⊤xx⊤y=(x⊤y)⊤=y⊤x


线性方程组 

Ax=bAx=b

2.3 单位矩阵和逆矩阵

线性代数中提供了 矩阵逆(matrix inverse) 的工具,使得我们能够解析地求解(11)中的 AA.

单位矩阵(identity matrix):任意向量与单位矩阵相乘都不会改变。我们将保持 nn 维向量不变地单位矩阵记作为 InIn ,形式上 In∈Rn×nIn∈Rn×n , 

∀x∈Rn,Inx=x∀x∈Rn,Inx=x


矩阵 AA 的矩阵逆被记作 A−1A−1 ,被定义为如下形式: 

A−1A=AA−1=InA−1A=AA−1=In


(11)式方程组的求解: 

Ax=bA−1Ax=A−1bInx=A−1bx=A−1bAx=bA−1Ax=A−1bInx=A−1bx=A−1b


方程组的解取决于能否找到一个逆矩阵 A−1A−1 。接下来讨论逆矩阵 A−1A−1 的存在的条件。

2.4 线性相关和生成子空间

如果逆矩阵 A−1A−1 存在,那么(11)式肯定对于每一个向量 bb 恰好存在一个解。分析方程有多少个解,我们可以看成是 AA 的列向量的 线性组合(linear combination)。 

Ax=∑ixiA:,iAx=∑ixiA:,i


形式上,某个集合中向量的线性组合,是指每个向量乘以对应系数之后的和,即 

∑iciv(i)∑iciv(i)


一组向量的生成空间(span) 是原始向量线性组合后所能抵达的点的集合。

线性无关(linearly independent): 如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称之为线性无关

要想使矩阵可逆,首先必须矩阵是一个方阵(square),即 m=nm=n ,其次,所有的列向量都是线性无关的。

一个列向量线性相关的方阵被称为 奇异的(singular)

2.5 范数

有时候我们需要衡量一个向量的大小,在机器学习中,我们使用称为范数(norm)的函数来衡量矩阵大小,形式上, LpLp 范数如下: 

||x||p=(∑i|xi|p)12||x||p=(∑i|xi|p)12


其中 p∈R,p≥1​p∈R,p≥1​。

范数是将向量映射到非负值的函数。直观上来说,向量 xx 的范数就是衡量从原点到 xx 的举例。更严格来说,范数满足下列性质的函数:

  • f(x)=0⟹x=0f(x)=0⟹x=0
  • f(x+y)≤f(x)+f(y)f(x+y)≤f(x)+f(y)
  • ∀α∈R,f(αx)=|α|f(x)∀α∈R,f(αx)=|α|f(x)

当 p=2p=2 时, L2L2 被称作 欧几里得范数(Euclidean norm)。它表示从原点出发到向量 xx 确定的点的欧几里得距离。平方 L2L2 范数常被用来衡量向量的大小,因为它便于求导计算(如对向量中每个元素的导数只取决于对应的元素,但是它也有缺陷,即它在原点附近增长得十分缓慢),可以简单用点积 x⊤xx⊤x 来计算。

max 范数(max norm):这个范数表示向量中具有最大幅度得元素的绝对值,用 L∞L∞ 范数表示,期形式为: 

||x||∞=∑(i,j)A2i,j−−−−−−√||x||∞=∑(i,j)Ai,j2


两个向量的点积(dot product)也可以用范数来表示。具体地, 

x⊤y=||x||2||y||2cosθx⊤y=||x||2||y||2cos⁡θ

2.6 特殊类型的矩阵和向量

对角矩阵(diagonal matrix) 只在主对角线上含有非零元素,其它位置都是零。矩阵 DD 是对角矩阵,当且仅当 ∀i≠j,Di,j=0∀i≠j,Di,j=0 ,用 diag(v)diag(v) 表示一个对角元素由向量 vv 中元素给定的对角矩阵。

对称(symmetric) 矩阵是任意转置和自己相等的矩阵: 

A=A⊤A=A⊤


即在矩阵 AA 中,有 Ai,j=Aj,iAi,j=Aj,i 。

单位向量(unit vector) 是具有单位范数(unit norm) 的向量: 

||x||2=1||x||2=1


如果 x⊤y=0x⊤y=0 ,那么向量 xx 和向量 yy 互相正交(orthogonal)。如果两个向量都有非零范数,那么表示这两个向量之间的夹角是90 度。在RnRn 中,至多有nn 个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1,那么我们称它们是标准正交(orthonormal) 。

正交矩阵(orthonormal matrix) 是指行向量是标准正交的,列向量是标准正交的方阵: 

A⊤A=AA⊤=IA⊤A=AA⊤=I


这意味着 

A−1=A⊤A−1=A⊤


所以正交矩阵受到关注是因为求逆计算代价小。需要注意正交矩阵的定义。反直觉地,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列向量互相正交但不是标准正交的矩阵没有对应的专有术语。

2.7 特征分解

许多数学对象可以通过将它们分解成多个组成部分,或者找到它们的一些属性而被更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式引起的。就像我们可以通过分解质因数来发现一些关于整数的真实性质,我们也可以通过分解矩阵来获取一些矩阵表示成数组元素时不明显的函数性质。

特征分解(eigendecomposition) 是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量特征值

方阵 AA 的特征向量(eigenvector)是指与AA相乘后相当于对该向量进行缩放的非零向量 vv: 

Av=λvAv=λv


标量λλ被称为这个特征向量对应的特征值(eigenvalue)

如果vv 是AA 的特征向量,那么任何放缩后的向量 sv(s∈R,s≠0)sv(s∈R,s≠0) 也是AA 的特征向量并且其与\bf v 有相同的特征值。所以我们通常只考虑单位特征向量

假设矩阵AA 有nn个线性无关的特征向量 {v(1),v(2),...,v(n)}{v(1),v(2),...,v(n)} ,对应着的特征值 {λ1,λ2,...,λn}{λ1,λ2,...,λn} ,我们将特征向量连成一个矩阵,使得每一列是一个特征向量: 

V=[v(1),v(2),...,v(n)]V=[v(1),v(2),...,v(n)]


类似地,特征值连成一个向量: 

λ=[λ1,λ2,...,λn]⊤λ=[λ1,λ2,...,λn]⊤


因此\bf A 的特征分解(eigendecomposition)可以记作: 

A=Vdiag(λ)V−1A=Vdiag(λ)V−1


上面我们构建具体特定的特征值和特征向量,能够使我们在目标方向上延伸空间。我们也常常希望将矩阵分解(decompose) 成特征值和特征向量。这样可以帮助我们分析矩阵的特定性质,就像质因数分解有助于我们理解整数。

不是每一个矩阵都可以分解成特征值和特征向量,在某些情况下,特征分解会涉及到复数,而非实数。在本书的机器学习学习中,我们只讨论一类简单分解的矩阵。具体就是,每个实对称矩阵都可以分解为实特征向量和实特征值: 

A=QΛQ⊤A=QΛQ⊤


其中 QQ 是 AA 的特征向量组成的正交矩阵, ΛΛ 是对角矩阵。特征值 Λi,iΛi,i 对应的特征向量是矩阵 QQ 的第ii列,记作Q:,iQ:,i 。因为 QQ 是正交矩阵,所以可以将 AA 看作是沿方向 v(i)v(i) 延展 λiλi 倍的空间。如下图所示:

特征值与特征向量

2.8 迹运算

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

Tr(A)=∑iAi,iTr(A)=∑iAi,i


迹运算因为很多原因而受到关注。若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号,可以进行清楚地表示。例如,迹运算提供了另一种描述矩阵Frobenius 范数的方式: 

||A||F=Tr(AA⊤)−−−−−−−−√||A||F=Tr(AA⊤)


用迹运算表示式,使我们可以用很多有用的性质来操纵表示式。例如迹运算在转置下是不变的: 

Tr(A)=Tr(A⊤)Tr(A)=Tr(A⊤)


多个矩阵乘积的迹还满足链式规律,即: 

Tr(ABC)=Tr(BCA)=Tr(CAB)Tr(ABC)=Tr(BCA)=Tr(CAB)


标量的迹是它本身: a=Tr(a)a=Tr(a) 。

2.9 行列式

行列式,记作det(A)det(A),是一个将方阵AA 映射到实数的函数。行列式等于矩阵特征值的乘积。行列式的绝对值可以被认为是衡量矩阵相乘后空间扩大或者缩小了多少。如果行列式是0, 那么空间至少沿着某一维完全收缩了,使其失去了所有的体积。如果行列式是1, 那么矩阵相乘没有改变空间体积。

猜你喜欢

转载自blog.csdn.net/joob000/article/details/81295150