文章目录

  • 1.基本数学概念
  • 2.线性相关和生成子空间
  • 3. 范式
  • 4.特殊类型的矩阵和向量
  • 5.特征分解
  • 6.奇异值分解

1.基本数学概念

标量(scalar ):一个标量就是一个单独的数,它不同于线性代数中研究的其他大部分对象(通常是多个数的数组)。我们用斜体表示标量。标量通常被赋予小写的变量名称。当我们介绍标量时,会明确它们是哪种类型的数。比如,在定义实数标量时,我们可能会说“令s∈R表示一条线的斜率”;在定义自然数标量时,我们可能会说“令n∈N表示元素的数目”。

向量(vector):一个向量是一列数。这些数是有序排列的。通过次序中的索引,我们可以确定每个单独的数。通常我们赋予向量粗体的小写变量名称,比如x0向量中的元素可以通过带脚标的斜体表示。向量x 的第一个元素是x1,第二个元素是x2,等等。我们也会注明存储在向量中的元素是什么类型的。如果每个元素都属于R,并且该向量有n 个元素,那么该向量属于实数集R 的n 次笛卡尔乘积构成的集合,记为Rn。当我们需要明确表示向量中的元素时,我们会将元素排列成一个方括号包围的纵列:x=[x1x2⋮xn]\boldsymbol{x}=\left[\begin{array}{c} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{array}\right]x=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​我们可以把向量看作空间中的点,每个元素是不同坐标轴上的坐标。有时我们需要索引向量中的一些元素。在这种情况下,我们定义一个包含这些元素索引的集合,然后将该集合写在脚标处。比如,指定x1,x3和x6,我们定义集合S= {1,3,6},然后写作xs。我们用符号一表示集合的补集中的索引。比如x_1表示x中除x1外的所有元素,x-s表示x中除x1,x3,x6外所有元素构成的向量。

矩阵(matrix):矩阵是一个二维数组,其中的每一个元素被两个索引而非一个所确定。我们通常会赋予矩阵粗体的大写变量名称,比如A。如果一个实数矩阵高度为m,宽度为n,那么我们说A∈Rmxn
我们在表示矩阵中的元素时,通常以不加粗的斜体形式使用其名称,索引用逗号间隔。比如,A1,1表示A左上的元素,Am,n表示A右下的元素。我们通过用“:”表示水平坐标,以表示垂直坐标i中的所有元素。比如,Ai,:表示A中垂直坐标i上的一横排元素。这也被称为A的第i行(row)。同样地,A:,i表示A的第i列(column)。当我们]需要明确表示矩阵中的元素时,我们将它们写在用方括号包围起来的数组中:[A1,1A1,2A2,1A2,2]\left[\begin{array}{cc} A_{1,1} & A_{1,2} \\ A_{2,1} & A_{2,2} \end{array}\right][A1,1​A2,1​​A1,2​A2,2​​]有时我们需要矩阵值表达式的索引,而不是单个元素。在这种情况下,我们在表达式后面接下标,但不必将矩阵的变量名称小写化。比如,f(A)i,j 表示函数f作用在A上输出的矩阵的第i行第j列元素。

张量(tensor):在某些情况下,我们会讨论坐标超过两维的数组。一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们将其称之为张量。

**矩阵逆(matrix inversion)**记作A-1,其定义的矩阵满足以下条件
A−1A=InA^{-1} A=I_{n} A−1A=In​
现在我们可以通过以下步骤求解式
Ax=bA−1Ax=A−1bInx=A−1bx=A−1b.\begin{array}{c} \boldsymbol{A} \boldsymbol{x}=\boldsymbol{b} \\ \boldsymbol{A}^{-1} \boldsymbol{A} \boldsymbol{x}=\boldsymbol{A}^{-1} \boldsymbol{b} \\ \boldsymbol{I}_{n} \boldsymbol{x}=A^{-1} \boldsymbol{b} \\ \boldsymbol{x}=\boldsymbol{A}^{-1} \boldsymbol{b} . \end{array} Ax=bA−1Ax=A−1bIn​x=A−1bx=A−1b.​
当逆矩阵A-1存在时,有几种不同的算法都能找到它的闭解形式。理论上,相同的逆矩阵可用于多次求解不同向量b的方程。然而,逆矩阵A-1主要 是作为理论工具使用的,并不会在大多数软件应用程序中实际使用。这是因为逆矩阵A-1在数字计算机上只能表现出有限的精度,有效使用向量b的算法通常可以得到更精确的X。

2.线性相关和生成子空间

如果逆矩阵A-1存在,那么式(2)肯定对于每一个向量b恰好存在一个解。但是,对于方程组而言,对于向量b的某些值,有可能不存在解,或者存在无限多个解。存在多于一个解但是少于无限多个解的情况是不可能发生的;因为如果x和y都是某方程组的解,则z=αx+(1−α)yz=\alpha x+(1-\alpha) yz=αx+(1−α)y​ (其中α取任意实数)也是该方程组的解

为了分析方程有多少个解,我们可以将A 的列向量看作是从原点(origin)(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量b。在这个观点下,向量x 中的每个元素表示我们应该沿着这些方向走多远,即xi 表示我们需要沿着第i 个向量的方向走多远。
Ax=∑ixiA:,i\boldsymbol{A} \boldsymbol{x}=\sum_{i} x_{i} \boldsymbol{A}_{:, i} Ax=i∑​xi​A:,i​
一般而言,这种操作被称为线性组合( linear combination)。形式上,一组向量的线性组合,是指每个向量乘以对应标量系数之后的和,即:
∑iciv(i)\sum_{i} c_{i} \boldsymbol{v}^{(i)} i∑​ci​v(i)
一组向量的生成子空间(span)是原始向量线性组合后所能抵达的点的集合。确定Ax= b是否有解相当于确定向量b是否在A列向量的生成子空间中。这个特殊的生成子空间被称为A的列空间( column space)或者A的值域( range)。

为了使方程Ax= b对于任意向量b∈Rm都存在解,我们要求A的列空间构成整个Rm。如果Rm中的某个点不在A的列空间中,那么该点对应的b会使得该方程没有解。矩阵A的列空间是整个Rm的要求,意味着A至少有m列,即n>m。否则,A列空间的维数会小于m。例如,假设A是一个3x2的矩阵。目
标b是3维的,但是x只有2维。所以无论如何修改x的值,也只能描绘出R3空间中的二维平面。当且仅当向量b在该二维平面中时,该方程有解。

不等式n≥m仅是方程对每一点都有解的必要条件。这不是一个充分条件, 因为有些列向量可能是冗余的。假设有一个R2x2中的矩阵,它的两个列向量是相同的。那么它的列空间和它的一个列向量作为矩阵的列空间是一样的。换言之,虽然该矩阵有2列,但是它的列空间仍然只是一条线,不能涵盖整个R2空间。

正式地说,这种冗余被称为线性相关( linear dependence)。如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称为线性无关( linearly independent )。如果某个向量是一组向量中某些向量的线性组合,那么我们将这个向量加入到这组向量后不会增加这组向量的生成子空间。这意味着,如果一个矩阵的列空间涵盖整个Rm,那么该矩阵必须包含至少一组m个线性无关的向量。这是式(2)对于每一个向量b的取值都有解的充分必要条件。值得注意的是,这个条件是说该向量集恰好有m个线性无关的列向量,而不是至少m个。不存在一个m 维向量的集合具有多于m 个彼此线性不相关的列向量,但是一个有多于m个列向量的矩阵却有可能拥有不止一个大小为m 的线性无关向量集。

综上所述,这意味着该矩阵必须是一个方阵(square),即m = n,并且所有列向量都是线性无关的。一个列向量线性相关的方阵被称为奇异的(singular)

3. 范式

有时我们需要衡量一个向量的大小。在机器学习中,我们经常使用被称为范数(norm)的函数衡量向量大小。形式上,LP范数定义如下
∥x∥p=(∑i∣xi∣p)1p\|x\|_{p}=\left(\sum_{i}\left|x_{i}\right|^{p}\right)^{\frac{1}{p}} ∥x∥p​=(i∑​∣xi​∣p)p1​
其中p∈R, p≥1。
范数(包括LP范数)是将向量映射到非负值的函数。直观上来说,向量x的范数衡量从原点到点x的距离。更严格地说,范数是满足下列性质的任意函数:
f(x)=0⇒x=0f(x+y)≤f(x)+f(y)∀α∈R,f(αx)=∣α∣f(x)\begin{array}{l} f(x)=0 \Rightarrow x=0 \\ f(x+y) \leq f(x)+f(y) \\ \forall \alpha \in \mathbb{R}, f(\alpha x)=|\alpha| f(x) \end{array} f(x)=0⇒x=0f(x+y)≤f(x)+f(y)∀α∈R,f(αx)=∣α∣f(x)​
当p = 2 时,L2 范数被称为欧几里得范数(Euclidean norm)。它表示从原点出发到向量x 确定的点的欧几里得距离。L2 范数在机器学习中出现地十分频繁,经常简化表示为∥x∥,略去了下标2。平方L2 范数也经常用来衡量向量的大小,可以简单地通过点积xx 计算。

平方L2范数在数学和计算上都比L2范数本身更方便。例如,平方L2范数对x中每个元素的导数只取决于对应的元素,而L2范数对每个元素的导数却和整个向量相关。但是在很多情况下,平方L2范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。在某些机器学习应用中,区分恰好是零的元索和非零但值很小的元素是很重要的。在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数: L1范数。L1范数可以简化如下:
∥x∥1=∑i∣xi∣\|x\|_{1}=\sum_{i}\left|x_{i}\right| ∥x∥1​=i∑​∣xi​∣
当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用L1范数。每当x中某个元素从0增加ϵ,对应的L1范数也会增加ϵ。

有时候我们会统计向量中非零元素的个数来衡量向量的大小。将这种函数称为“L0范数”,但是这个术语在数学意义上是不对的。向量的非零元素的数目不是范数,因为对向量缩放a倍不会改变该向量非零元素的数目。因此,L1范数经常作为表示非零元素数目的替代函数。

另外一个经常在机器学习中出现的范数是L范数,也被称为最大范数(max norm)。这个范数表示向量中具有最大幅值的元素的绝对值:
∥x∥∞=max⁡i∣xi∣\|\boldsymbol{x}\|_{\infty}=\max _{i}\left|x_{i}\right| ∥x∥∞​=imax​∣xi​∣
有时候我们可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使用Frobenius范数( Frobenius norm )
∥A∥F=∑i,jAi,j2\|A\|_{F}=\sqrt{\sum_{i, j} A_{i, j}^{2}} ∥A∥F​=i,j∑​Ai,j2​​
两个向量的点积(dot product)可以用范数来表示。具体地,
x⊤y=∥x∥2∥y∥2cos⁡θ\boldsymbol{x}^{\top} \boldsymbol{y}=\|\boldsymbol{x}\|_{2}\|y\|_{2} \cos \theta x⊤y=∥x∥2​∥y∥2​cosθ
其中θ表示x和y之间的夹角。

4.特殊类型的矩阵和向量

**对角矩阵(diagonal matrix)**只在主对角线上含有非零元素,其他位置都是零。不是所有的对角矩阵都是方阵。长方形的矩阵也有可能是对角矩阵。非方阵的对角矩阵没有逆矩阵,但我们仍然可以高效地计算它们的乘法。对于一个长方形对角矩阵D而言,乘法Dx会涉及到x中每个元素的缩放,如果D是瘦长型矩阵,那么在缩放后的末尾添加一些零;如果D是胖宽型矩阵,那么在缩放后去掉最后一些元素。

对称(symmetric) 矩阵 是转置和自己相等的矩阵: A=AT

单位向量( unit vector ) 是具有单位范数(unit norm)的向量:
∥x∥2=1\|x\|_{2}=1 ∥x∥2​=1
如果xTy=0,那么向量x和向量y互相正交( orthogonal )。如果两个向量都有非零范数,那么这两个向量之间的夹角是90度。在Rn中,至多有n个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1,那么我们称它们是标准正交( orthonormal )。

**正交矩阵(orthogonal matrix)**是指行向量和列向量是分别标准正交的方阵
A⊤A=AA⊤=I\boldsymbol{A}^{\top} \boldsymbol{A}=\boldsymbol{A} \boldsymbol{A}^{\top}=\boldsymbol{I} A⊤A=AA⊤=I
这意味着
A−1=A⊤A^{-1}=A^{\top} A−1=A⊤
所以正交矩阵受到关注是因为求逆计算代价小。我们需要注意正交矩阵的定义。反直觉地,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列向量互相正交但不是标准正交的矩阵没有对应的专有术语。

5.特征分解

特征分解( eigendecomposition )是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。方阵A的特征向量( eigenvector)是指与A相乘后相当于对该向量进行缩放的非零向量v:
Av=λv\boldsymbol{A v}=\lambda \boldsymbol{v} Av=λv
标量λ被称为这个特征向量对应的特征值(eigenvalue)。(类似地,我们也可以定义左特征向量( left eigenvector) v⊤A=λv⊤\boldsymbol{v}^{\top} A=\lambda \boldsymbol{v}^{\top}v⊤A=λv⊤,但是通常我们更关注右特征向量( right eigenvector ))。

如果v是A的特征向量,那么任何缩放后的向量sv(s∈R, s≠0)也是A的特征向量。此外,sv和v有相同的特征值。基于这个原因,通常我们只考虑单位特征向量。

假设矩阵A 有n 个线性无关的特征向量{v(1),…,v(n)}\left\{\boldsymbol{v}^{(1)}, \ldots, \boldsymbol{v}^{(n)}\right\}{v(1),…,v(n)},对应着特征值{λ1,…,λn}\left\{\lambda_{1}, \ldots, \lambda_{n}\right\}{λ1​,…,λn​}。我们将特征向量连接成一个矩阵,使得每一列是一个特征向量:V=[v(1),…,v(n)]\boldsymbol{V}=\left[\boldsymbol{v}^{(1)}, \ldots, \boldsymbol{v}^{(n)}\right]V=[v(1),…,v(n)].类似地,我们也可以将特征值连接成一个向量λ=[λ1,…,λn]⊤\boldsymbol{\lambda}=\left[\lambda_{1}, \ldots, \lambda_{n}\right]^{\top}λ=[λ1​,…,λn​]⊤​.因此A 的特征分解(eigendecomposition)可以记作
A=Vdiag⁡(λ)V−1A=V \operatorname{diag}(\lambda) V^{-1} A=Vdiag(λ)V−1
我们已经看到了构建具有特定特征值和特征向量的矩阵,能够使我们在目标方向上延伸空间。然而,我们也常常希望将矩阵分解(decompose)成特征值和特征向量。这样可以帮助我们分析矩阵的特定性质,就像质因数分解有助于我们理解整数。

不是每一个矩阵都可以分解成特征值和特征向量。在某些情况下,特征分解存在,但是会涉及到复数,而非实数。幸运的是,我们通常只需要分解一类有简单分解的矩阵。具体地,每个实对称矩阵都可以分解成实特征向量和实特征值:
A=QΛQ⊤A=Q \Lambda Q^{\top} A=QΛQ⊤
其中Q是A的特征向量组成的正交矩阵,^是对角矩阵。虽然任意一个实对称矩阵A都有特征分解,但是特征分解可能并不唯一。 如果两个或多个特征向量拥有相同的特征值,那么在由这些特征向量产生的生成子空间中,任意一组正交向量都是该特征值对应的特征向量。因此,我们可以等价地从这
些特征向量中构成Q作为替代。按照惯例,我们通常按降序排列A的元素。在该约定下,特征分解唯一当 且仅当所有的特征值都是唯一的。

矩阵的特征分解给了我们很多关于矩阵的有用信息。矩阵是奇异的当且仅当含有零特征值。实对称矩阵的特征分解也可以用于优化二次方程f(x)= xTAx,其中限制||x||2= 1。当x等于A的某个特征向量时,f将返回对应的特征值。在限制条件下,函数f的最大值是最大特征值,最小值是最小特征值。

所有特征值都是正数的矩阵被称为正定( positive definite );所有特征值都是非负数的矩阵被称为半正定( positive semidefinite )。同样地,所有特征值都是负数的矩阵被称为负定( negative definite );所有特征值都是非正数的矩阵被称为半负定( negative semidefinite )。半正定矩阵受到关注是因为它们保证任意x,xT Ax≥0。此外,正定矩阵还保证xTAx=0→x=0。

6.奇异值分解

在上一节中,我们探讨了如何将矩阵分解成特征向量和特征值。还有另一种分解矩阵的方法,被称为奇异值分解( singular value decomposition, SVD),将矩阵分解为奇异向量( singular vector )和奇异值( singular value)。通过奇异值分解,我们会得到一些与特征分解相同类型的信息。然而,奇异值分解有更广泛的应用。==每个实数矩阵都有一个奇异值分解,但不一定都有特征分解。==例如,非方阵的矩阵没有特征分解,这时我们只能使用奇异值分解。

当我们使用特征分解去分析矩阵A时:
A=Vdiag⁡(λ)V−1A=V \operatorname{diag}(\lambda) V^{-1} A=Vdiag(λ)V−1
奇异值分解是类似的,只不过这回我们将矩阵A 分解成三个矩阵的乘积:
A=UDV⊤A=U D V^{\top} A=UDV⊤
这些矩阵中的每一个经定义后都拥有特殊的结构。矩阵U 和V 都被定义为正交矩阵,而矩阵D 被定义为对角矩阵。注意,矩阵D 不一定是方阵。

对角矩阵D 对角线上的元素被称为矩阵A 的奇异值(singular value)。矩阵U 的列向量被称为左奇异向量(left singular vector),矩阵V 的列向量被称右奇异向量(right singular vector)。

事实上,我们可以用与A相关的特征分解去解释A的奇异值分解。A的左奇异向量( left singular vector)是AAT的特征向量。A的右奇异向量(right singular vector)是ATA的特征向量。A的非零奇异值是ATA特征值的平方根,同时也是AAT特征值的平方根。

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

特征分解去解释A的奇异值分解。A的左奇异向量( left singular vector)是AAT的特征向量。A的右奇异向量(right singular vector)是ATA的特征向量。A的非零奇异值是ATA特征值的平方根,同时也是AAT特征值的平方根。

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

深度学习——线性代数相关推荐

  1. Pytorch--动手学深度学习--线性代数(乘积+点积+矩阵向量乘积+矩阵乘积+累加+降维+范数求解)

    乘积 x=torch.tensor([1,2,3]) y=torch.tensor([1,2,3]) Hadamard乘积:x*y 即元素对应相乘 点积:torch.dot(x,y) 相当于 torc ...

  2. 深度学习 | 训练及优化方法

    ---------------------------- 原文发表于夏木青 | JoselynZhao Blog,欢迎访问博文原文. ---------------------------- 深度学习 ...

  3. 深度学习必备数学知识之线性代数篇(附代码实现)

    作者 | Vihar Kurama 译者 | 李众望 编辑 | Jane 出品 | AI科技大本营 [导读]线性代数是一种连续的.非离散的数学形式,许多计算机科学家对此缺乏应用经验,掌握线性代数对理解 ...

  4. 深度学习工程师从业者必备的21张速查表(神经网络、线性代数、可视化等)

    作者丨马卡斯·扬@知乎 来源丨https://zhuanlan.zhihu.com/p/61013882 ,如有侵权请联系删除 随着深度学习的蓬勃发展,越来越多的小伙伴们开始使用python作为主打代 ...

  5. 【干货】深度学习中的线性代数---简明教程

    作者 | Vihar Kurama 编译 | 专知 整理 | Mandy 线性代数对于理解机器学习和深度学习内部原理至关重要,线性代数是有关连续值的数学.许多计算机科学家在此方面经验不足,传统上计算机 ...

  6. 放弃深度学习?我承认是因为线性代数

    深度学习从入门到放弃?一定是哪里出了问题. 这篇文章想来和你探讨下:深度学习背后的线性代数问题. 先做个简单的名词解释 深度学习:作为机器学习的一个子域,关注用于模仿大脑功能和结构的算法:人工神经网络 ...

  7. 深度学习中所需的线性代数知识

    原址 每个深度学习项目背后的数学知识. 深度学习是机器学习的一个子领域,涉及一些模仿人脑结构和功能的人工神经网络算法. 线性代数是一种连续的而非离散的数学形式,许多计算机科学家对它几乎没有经验.对于理 ...

  8. 深度学习数学基础之线性代数

    深度学习中的基本数据结构,基本上都是用向量或矩阵表示的,因此: 深度学习的基础学科之一:就是线性代数. 深度学习中的线性代数知识主要包括以下部分: 1.标量.向量.矩阵和张量: 这4个变量很好理解: ...

  9. 动手学习深度学习——2.3 线性代数

    2.3 线性代数   既然您可以存储和操作数据,那么让我们简要回顾一下基本线性代数的子集,这将有助于理解并实现本书中介绍的大多数模型.下面,我们介绍线性代数中的基本数学对象.算术和运算,通过数学符号和 ...

最新文章

  1. c# 元组Tuple
  2. 正则表达式re模块使用介绍
  3. CSS设置段落的垂直对齐
  4. BugkuCTF-Misc:这是一张单纯的图片
  5. 乐鑫官宣:ESP32-S3真的来了!
  6. mysql数据库开发要求_MYSQL数据库开发规范
  7. 奥运吉祥物动画宣传片
  8. 深入了解ASP.NET运行内幕
  9. Oracle 无备份情况下的恢复--密码文件/参数文件
  10. python资料-大牛分享python资料
  11. Activity过渡动画
  12. 5.应用测试 5.1测试Spring MVC的控制器
  13. my docker note
  14. 6. JavaScript HTML DOM
  15. 如何实现BootStrapTable的动态表格
  16. mac 安装adb工具
  17. 企业级代码静态测试工具Helix QAC——Helix QAC Dashboard基于团队的工程质量管理系统/Helix QAC资质认证
  18. 传感器技术—湿敏电阻式传感器(学习笔记五)
  19. 计算机与网络安全系列书籍推荐
  20. vue + element 实现文件上传

热门文章

  1. linux中vim中swapfile,在vim中撤消从交换文件恢复(Undo recovery from swap file in vim)
  2. Linux命令—查看历史,并显示操作时间
  3. 一次艰辛的算法分析---------飘零4.0封包分析
  4. requestmapping配置页面后_Spring MVC 入门指南(二):@RequestMapping用法详解
  5. 反思过去,以期少走弯路
  6. 第01篇:反射框架Reflections
  7. OkHttp的详细使用方法
  8. 安全架构-加密算法-3DES加密java实现
  9. C# VS2019 Form 状态栏添加系统时间实时刷新
  10. 《Linux Device Drivers》第六章 高级字符驱动程序操作——note