深度学习笔记_线性代数基础

线性代数基础

1 基本概念

  • 标量
  • 向量
  • 矩阵
  • 张量

**标量(scalar)**是一个单独的数,通常用小写的斜体字母表示。例如”令 s∈R\mathcal{s}\in\mathbb{R}sR表示一条线的斜率“定义了一个实数标量。

**向量(vector)**是一列数,通常用小写的粗体字母(如x{x}x)表示,向量中的元素用带脚标的斜体表示(如x1x_1x1表示向量x{x}x的第一个元素)。有时需要注明向量中的元素类型,如Rn\mathbb{R}^nRn表示该向量有nnn个元素,且每个元素都属于R\mathbb{R}R。当需要明确表示向量中的元素时,将元素排列成一个方括号包围的纵列:
x=[x1x2⋮xn] {x}= \left[ \begin{matrix} x_1\\ x_2\\ \vdots\\ x_n \end{matrix} \right] x=x1x2xn
当要索引向量中的元素时,先定义一个包含这些”元素索引“的集合,然后将集合写在脚标处。例如,指定x1x_1x1,x3x_3x3x6x_6x6,首先定义集合S={1,3,6},然后写作xSx_SxS。最后,使用下划线表示集合的补集的索引。例如,xSx_SxS表示向量x{x}x中除x1,x3,x6x_1,x_3,x_6x1x3x6外所有元素构成的向量。

矩阵(matrix)是一个二维数组,通常用大写的粗体字母表示,如A∈Rm×nA\in\mathbb{R}^{m\times n}ARm×n表示一个行列数分别为mmmnnn的矩阵AAA。其中的每一个元素被两个索引确定,通常用不加粗的斜体字母表示,如A1,1A_{1,1}A1,1表示AAA左上角的元素,Ai,:A_{i,:}Ai,:表示矩阵AAA的第iii行的所有元素。当需要明确表示矩阵中的元素时,将元素排列成一个方括号包围的数组:
[A1,1A1,2A2,1A2,2] \left[ \begin{matrix} A_{1,1}& A_{1,2}\\ A_{2,1}& A_{2,2} \end{matrix} \right] [A1,1A2,1A1,2A2,2]
当要索引一个矩阵值表达式时,直接在表达式后面接下标,但不用将矩阵的变量名称小写化。如fff(A)i,j表示函数fff作用在
A
上输出的矩阵的第i行第j列元素。

nnn单位矩阵表示为In∈RnI_n\in\mathbb{R}^nInRn矩阵的逆A−1A=InA^{-1}A=I_nA1A=In矩阵的转置(A⊤)i,j=Aj,i(A^{\top})_{i,j}=A_{j,i}(A)i,j=Aj,i

**张量(tensor)**是一个多维度的数组,比如矩阵也可以称为二阶张量,通常用A\mathbf{A}A来表示张量“A”。张量中的元素记作Ai,j,k\mathbf{A}_{i,j,k}Ai,j,k

2 线性相关和生成子空间

  • 线性组合
  • 生成子空间
  • 线性相关
  • 奇异

线性组合,通常指的是一组向量乘以对应标量系数之后的和,即∑iciv(i)\sum_{i}c_i\mathcal{v}^{(i)}iciv(i)

生成子空间是原始向量的所有线性组合的集合,称为原始向量组生成的子空间。

确定Ax=bAx=bAx=b是否有解相当于确定向量bbb是否在AAA列向量的生成子空间中,这个特殊的生成子空间称为AAA列空间或者AAA值域

向量a\mathcal{a}a可以由一组向量b1,b2...bnb_1,b_2...b_nb1,b2...bn通过线性组合k1b1+k2b2+...+knbnk_1b_1+k_2b_2+...+k_nb_nk1b1+k2b2+...+knbn表示,则称aaa可以被b1,b2...bnb_1,b_2...b_nb1,b2...bn线性表示。在向量空间V\mathcal{V}V中的一组向量B:b1,b2...bnB:b_1,b_2...b_nB:b1,b2...bn,若存在不全为000的数k1,k2...knk_1,k_2...k_nk1,k2...kn使得k1b1+k2b2+...+knbn=0k_1b_1+k_2b_2+...+k_nb_n=0k1b1+k2b2+...+knbn=0,则称向量组BBB线性相关的,表现为向量组BBB中的任意一个向量均能被该向量组中的其他向量线性表示。

奇异是一个列向量线性相关的方阵。

3 范数与距离

距离是一个数。给定一个集合VVV,在VVV上定义距离为V×V→R,∀x,y∈VV\times V\rightarrow R,\forall x,y\in VV×VR,x,yV,在RRR中都有唯一元素δ\deltaδ与之对应,称为x,yx,yx,y之间的距离。距离满足:

  • d(x,y)≥0,∀x,y∈Vd(x,y)\ge 0,\forall x,y\in Vd(x,y)0,x,yVd(x,y)=0⇔x=yd(x,y)=0 \Leftrightarrow x=yd(x,y)=0x=y(非负性和正定性)
  • d(x,y)≤0d(x,y)+d(y,z)d(x,y)\le 0 d(x,y)+d(y,z)d(x,y)0d(x,y)+d(y,z)(三角不等式)
  • d(x,y)=d(y,x)d(x,y)=d(y,x)d(x,y)=d(y,x)(自反性)

范数是具有距离概念的函数,在定义上比距离多了一条数乘的运算法则,即除了以上距离的性质,范数还具有:

  • ∥ax∥=∣a∣∥x∥,a∈R\|a{x}\|=|a|\|{x}\|,a \in Rax=a∣∥x,aR(齐次性)

其中∥⋅∥\|\cdot\|是定义在实线性空间VVV上的范数运算,∥⋅∥:V→R,∀x∈V\|\cdot\|:V\rightarrow R,\forall {x} \in V:VR,xV,在RRR中都有唯一的元素δ\deltaδ与之对应,称之为xxx的范数,记作∥x∥\|{x}\|x

范数可以简单地分为向量范数矩阵范数。向量范数用来衡量向量空间中的向量的大小,矩阵范数则表征矩阵引起变化的大小。比如线性代数中Ax=bAx=bAx=b,向量xxx经过运算变化成向量bbb,矩阵范数就是用来衡量这个变化大小的。

范数(包括LpL^pLp范数)是将向量映射到非负值的函数,在机器学习中经常使用范数来衡量向量大小。

LpL^pLp范数不是一个范数,而是一组范数:
∥x∥p=(∑i∣xi∣p)1p \|{x}\|_p =(\sum_i|x_i|^p)^{\frac{1}{p}} xp=(ixip)p1
其中p∈R,p≥1p\in\mathbb{R},p\geq 1pRp1

L^p范数p=2p=2p=2时,L2L^2L2范数被称为欧几里得范数。它表示从远点出发到向量x{x}x确定的点的欧几里得距离。L2L^2L2范数在机器学习中出现地非常频繁,经常简化表示为∥x∥\|x\|x,略去了下标2。平方L2L^2L2范数也经常用来衡量向量的大小,可以简单地通过点击x⊤x{x}^{\top}{x}xx来计算。

平方L2L^2L2范数是L2L^2L2范数的平方,即直接对各元素平方求和,在数学上和计算上都比L2L^2L2范数本身更方便。例如,平方L2L^2L2范数对向量中每个元素的导数只取决于对应的元素,而L2L^2L2范数对每个元素的导数和整个向量相关。但是,平方L2L^2L2范数在原点附近增长得十分缓慢。在机器学习应用中,区分零和无穷小的元素时很重要的。在这种情况下,我们反而要使用在各个位置斜率相同的**L1L^1L1范数**,L1L^1L1范数可以简化如下:
∥x∥1=∑i∣xi∣ \|{x}\|_1 =\sum_i|{x}_i| x1=ixi
当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用L1L^1L1范数。L1L^1L1范数每表示向量xxx中非零元素的绝对值之和,且当x{x}x中的某个元素从0增加ϵ\epsilonϵ,对应的L1L^1L1范数也会增加ϵ\epsilonϵL1L^1L1范数还被称为曼哈顿距离、最小绝对误差等。

有时需要统计向量中非零元素的个数来衡量向量的大小,有些作者将这种函数称为**L0L^0L0范数**,但这个术语在数学意义上是不对的。当p=0p=0p=0时,L0L^0L0范数并不是一个真正的范数,因为零的零次方也等于1。在实际应用中,L0L^0L0范数不易于给定一个好的数学表示,因此L0L^0L0范数的最优问题会被放宽到L1L^1L1L2L^2L2情况下的最优化。

最大范数L∞L^{\infty}L范数用来度量向量中最大值元素的绝对值:
∥x∥∞=max⁡i∣xi∣ \|{x}\|_{\infty}=\max_i|x_i| x=imaxxi
矩阵范数使用Frobenius范数
∥A∥F=∑i,jAi,j2 \|A\|_F=\sqrt{\sum_{i,j}A^2_{i,j}} AF=i,jAi,j2
其类似于向量的L2L^2L2范数。

两个向量的点积可以用范数来表示:
x⊤y=∥x∥2∥y∥2cos⁡θ {x}^{\top}{y}=\|{x}\|_2\|{y}\|_2\cos{\theta} xy=x2y2cosθ
其中θ\thetaθ表示向量x{x}xy{y}y之间的夹角。

4 特殊类型的矩阵和向量

对角矩阵只在主对角线上有非零元素,其他位置都是零。一般用diag(v)diag(v)diag(v)表示一个对角元素由向量vvv中元素给定的对角矩阵。计算乘法diag(v)xdiag(v)xdiag(v)x时只需要将xxx中的每个元素xix_ixi放大viv_ivi倍,即diag(v)x=v⨀xdiag(v)x=v\bigodot xdiag(v)x=vx

对称矩阵是转置和自身相等的矩阵,即A=A⊤A=A^\topA=A

单位向量是具有单位范数的向量,即∥x∥2=1\|x\|_2=1x2=1

正交即两个范数非零向量之间的夹角是90度,即x⊤y=0x^\top y=0xy=0。在一个nnn维的向量空间中,至多有nnn个范数非零向量互相正交。特别地,若这些向量不仅互相正交,并且范数都为1,则称它们是标准正交的。

正交矩阵是指行向量和列向量分别标准正交的方阵。
A⊤A=AA⊤=I A^\top A=AA^\top =I AA=AA=I

A−1=A⊤ A^{-1}=A^\top A1=A

观察式(8)、(9),发现正交矩阵的求逆运算代价很小,这也是正交矩阵受关注的原因之一。

5 特殊运算

5.1 特征分解

许多数学对象可以通过将它们分解成多个组成部分或者找到它们的一些属性而更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式产生的。例如,整数可以分解为质因数。我们也可以通过分解矩阵来发现矩阵表示成数组元素时不明显的函数性质。

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

对于一个非齐次线性方程Av=λvAv=\lambda vAv=λv,方阵AAA的特征向量是指与AAA相乘后相当于对该向量进行缩放的非零向量vvv。标量λ\lambdaλ被称为这个特征向量对应的特征值。

vvvAAA的特征向量,那么任何缩放后的向量sv(s∈R,s≠0)sv(s\in\mathbb{R},s\neq 0)sv(sR,s=0)也是AAA的特征向量。此外,svsvsvvvv有相同的特征值。基于这个性质,我们通常只考虑单位特征向量。

假设矩阵AAAnnn个线性无关的特征向量{v1,...,vn}\{v^{1},...,v^{n}\}{v1,...,vn},对应特征值{λ1,...,λn}\{\lambda_{1},...,\lambda_{n}\}{λ1,...,λn}。我们将特征向量连接成一个矩阵,使得每一列是一个特征向量:V=[v(1),...,v(n)]V=[v^(1),...,v^(n)]V=[v(1),...,v(n)]。类似的,我们也可以将特征值连接成一个向量λ=[λ1,...,λn]⊤\lambda =[\lambda_1,...,\lambda_n]^\topλ=[λ1,...,λn]。因此AAA的特征分解可以记作:
A=Vdiag(λ)V−1 A=V\mathrm{diag}(\lambda)V^{-1} A=Vdiag(λ)V1
通过构建具有特定特征值和特征向量的矩阵,我们能在目标方向上延申空间。同时,将矩阵分解成特征值和特征向量,有助于我们分析矩阵的特定性质。

每个实对称矩阵都可以分解成实特征向量和实特征值:
A=QΛQ⊤ A=Q\Lambda Q^\top A=QΛQ
其中QQQAAA的特征向量组成的正交矩阵,Λ\LambdaΛ是对角矩阵。特征值$\Lambda {i,i} 对应的特征向量是矩阵对应的特征向量是矩阵对应的特征向量是矩阵Q的第的第的第i列,记作列,记作列,记作Q{:,i}。因为。因为。因为Q是正交矩阵,我们可以将是正交矩阵,我们可以将是正交矩阵,我们可以将A看作沿方向看作沿方向看作沿方向v^{(i)}延展了延展了延展了\lambda_i倍的空间。通常我们按降序排列倍的空间。通常我们按降序排列倍的空间。通常我们按降序排列\Lambda$的元素,在该约定下,特征分解唯一当且仅当所有特征值都是唯一的。另外,当且仅当存在零特征值时,矩阵是奇异的。

所有特征值都是正数的矩阵被称为正定。所有特征值都是非负数的矩阵被称为半正定。同样地,所有特征值都是负数的矩阵被称为负定。所有特征值都是非正数的矩阵被称为半负定。我们在这里尤其关注正定矩阵和半正定矩阵,因为半正定矩阵保证∀x,x⊤Ax≥0\forall x,x^\top A x\geq 0x,xAx0,而正定矩阵还保证了x⊤Ax=0⇒x=0x^\top A x=0\Rightarrow x = 0xAx=0x=0

5.2 奇异值分解SVD

另一种分解矩阵的方法称为奇异值分解,该方法将矩阵分解为奇异向量和奇异值。通过奇异值分解,我们会得到一些与特征分解相同类型的信息。并且,奇异值分解的应用更加广泛,每个实数矩阵都有一个奇异值分解,但却不一定有特征分解。例如,非方阵的矩阵没有特征分解,这时我们只能使用奇异值分解。

奇异值分解将矩阵AAA分解成三个矩阵的乘积:
A=UDV⊤ A=UDV^\top A=UDV
假设AAA是一个m×nm\times nm×n的矩阵,则UUU是一个m×mm\times mm×m的矩阵,DDD是一个m×nm\times nm×n的矩阵,VVV是一个n×nn\times nn×n的矩阵。

这些矩阵中的每一个经定义后都拥有特殊的结构。矩阵UUUVVV都定义为正交矩阵,而矩阵DDD定义为对角矩阵。注意,矩阵DDD不一定是方阵。一般意义上,对角矩阵是非零元素仅在主对角线上的方阵,非方阵的矩阵没有主对角线,然而在此处我们要研究矩阵DDD的对角线元素(行列相等的元素),因此为了方便也将其定义成对角矩阵。

对角矩阵DDD对角线上的元素被称为矩阵AAA奇异值。矩阵UUU的列向量称作左奇异向量,矩阵VVV的列向量称作右奇异向量

对于一个非方阵AAA,我们发现AA⊤AA^\topAAA⊤AA^\top AAA均为方阵,因此我们也可以用与AAA相关的特征分解来解释AAA的奇异值分解。AAA的左奇异向量是AA⊤AA^\topAA的特征向量。AAA的右奇异向量是A⊤AA^\top AAA的特征向量。AAA的非零奇异值是A⊤AA^\top AAA特征值的平方根,同时也是AA⊤AA^\topAA特征值的平方根。

SVD最有用的一个性质可能是拓展矩阵求逆到非方矩阵上。

5.3 Moore-Penrose 伪逆

对于非方矩阵,其逆矩阵没有定义。但有时会遇到这种情况,我们希望通过矩阵AAA的左逆BBB来求解线性方程:
Ax=y Ax=y Ax=y
等式两边同时左乘左逆BBB后,得到:
x=By x=By x=By
如果矩阵AAA的行数大于列数,那么上述方程可能没有解。如果矩阵AAA的行数小于列数,那么上述矩阵可能有多个解。

Moore-Penrose伪逆使我们能够求解这类问题。矩阵AAA的伪逆定义为:
A+=lim⁡α↘0(A⊤A+αI)−1A⊤ A^+=\lim_{\alpha\searrow 0}(A^\top A+\alpha I)^{-1}A^\top A+=α0lim(AA+αI)1A
而计算伪逆的实际算法没有基于这个定义,而是使用下面的公式:
A+=VD+U⊤ A^+=VD^+U^\top A+=VD+U
其中,矩阵UUUDDDVVV是矩阵AAA奇异值分解后得到的矩阵。对角矩阵DDD的伪逆D+D^+D+是其非零元素取倒数后再转置得到的。

当矩阵AAA的列数多余行数时,可以使用伪逆来求解线性方程。特别地,x=A+yx=A^+yx=A+y是方程所有可行解中L2L^2L2范数最小的一个。

当矩阵AAA的行数多于列数时,可能没有解。在这种情况下,通过伪逆得到的xxx使得AxAxAxyyy的欧氏距离∥Ax−y∥2\|Ax-y\|_2Axy2最小。

5.4 迹运算

另外我们还要了解的关于矩阵的运算还有求矩阵的迹运算返回的是矩阵对角元素的和:
Tr(A)=∑iAi,i \rm{Tr}(A)=\sum_iA_{i,i} Tr(A)=iAi,i
多个矩阵相乘得到的方阵的迹,和将这些矩阵中的最后一个挪到最前面之后相乘的迹是相同的:
Tr(ABC)=Tr(BCA)=Tr(CAB) \rm{Tr}(ABC)=\rm{Tr}(BCA)=\rm{Tr}(CAB) Tr(ABC)=Tr(BCA)=Tr(CAB)
即使循环置换后矩阵乘积得到的矩阵形状变了,迹运算的结果依然不变:
Tr(AB)=Tr(BA) \rm{Tr}(AB)=\rm{Tr}(BA) Tr(AB)=Tr(BA)
标量的迹还是它自己:
a=Tr(a) a=\rm{Tr}(a) a=Tr(a)

5.5 行列式

行列式记作det⁡(A)\det(A)det(A),可以将方阵AAA映射到实数,而具体的运算过程此处不再赘述。我们需要知道的是,行列式的值等于矩阵特征值的乘积。因此,若行列式等于0,则方阵存在零特征值,该方阵是奇异的,方阵所描述的空间是线性相关的,即至少有一维完全收缩了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值