3Blue1Brown《线性代数的本质》笔记
尽管一批教授和教科书编者用关于矩阵的荒唐至极的计算内容
掩盖了线性代数的简明性,但是鲜有与之相较更为初等的理论。
—— 让·迪厄多内
国内的线性代数教材往往过分专注于其数值计算的部分而对其几何含义缺少解释,而线性代数有许多被教材所忽视的、可视化的直观理解,当真正理解了几何直观与数值计算的关系时,线性代数的细节和其在各种领域的应用就会显得合情合理
更重要的是,关于数值计算的部分,现代已经拥有了计算机来帮我们出来这部分问题,在实践中,我们更应当去关注概念层面的东西
基于相同的道理,这篇文章仅用于个人的学习笔记,在涉及到相关概念的理解上,个人强烈建议去观看作者的原视频
向量
三种看待向量的视角:
- 物理专业:空间中的箭头,由方向和长度所定义,一旦向量被定义就可以在空间中任意移动而不被改变
- 计算机专业:有序数列,此时向量只是一个“列表”的花哨说法
- 数学专业:概况以上两种观点,向量可以是任何东西——只要能保证向量相加和向量与数字相乘是有意义的即可(最抽象的概念)
向量加法和向量数乘贯穿线性代数的始终
和物理专业的看法有一定出入的是,线性代数中的向量往往以坐标原点起始
- 当向量以坐标原点起始时,就可以通过一个有序列表来表示向量的坐标,对应了计算机专业中的看法
- 以二维坐标系为例,向量的坐标由一对数构成,描述了如何从向量的起点(也就是原点)出发达到向量的终点,从而保证了向量和坐标是一一对应的关系
- 和点坐标不同的是,向量坐标往往竖着写,以和点坐标区分开,例如:
向量相加
以
- 将向量看作空间上的移动,向量的加法则代表了移动的累加
- 先沿着
移动,再从终点沿着将 移动,在效果上等价于沿着 移动
向量加法的原理可以同样延伸到数轴上——以
在一维数轴的基础上延伸,二维向量的加法仍然是坐标的累加:
即先沿着 x 坐标轴移动 (1+3) 步,再沿着y坐标轴移动 (2-1) 步,从单个坐标轴的角度上看,这与前面提到的一维数轴的加法是一样的
向量数乘(缩放)
向量数乘即将原向量延长\缩短为原本的n倍,当n为负数时,则说明运算结果的向量方向与原向量相反
这类运算被称为向量的缩放(Scaling),而其中的
- 在线性代数中,单独数字唯一的用途基本上就是用于向量的缩放,因此通常来说,数字和标量这两个词可以互相替换
向量的线性组合
这里有另一种角度来看待向量的坐标
在二维坐标系中有两个特殊含义的向量
- x轴上的单位向量
,也被叫做i帽(i-hat) - y轴上的单位向量
,也被叫做j帽(j-hat) - 这些单位向量被叫做坐标系的基向量
于是,我们可以将向量的坐标看作一组标量,分别描述了该向量是i帽和j帽分别经过何种缩放后,再进行相加得到的
因此,当我们用坐标描述一个向量,它同样依赖于我们正在使用的基向量,不同的基向量会导致不同的结果(例如,平面锐角坐标系)
我们可以发现,此时该向量是由两个基向量经过缩放和相加得到的。由此,我们可以引出:两个数乘向量的和被称作这两个向量的线性组合,即:
而在大部分情况下对于一对初始向量的线性组合,如果我们让两个标量都自由变化,我们可以得到一个平面中的任何一个向量
- 例外是当两个向量平行时,此时得到的向量方向被严格限制在了平行的直线上
其中,所有可以由
因此,我们也可以说:
- 对于大部分二维向量对,它们张成的空间是所有二维向量的集合
- 对于共线的二维向量对,它们张成的空间就是一条直线上的向量的集合
我们扩展到三维空间,不考虑特殊情况,三维空间中的两个向量张成的空间仍然是这两个向量构成的平面,但当加上第三个向量时,我们往往能得到所有的三维向量,这三个向量所有可能的线性组合就会构成整个三维空间
- 同样地,例外是当第三个向量仍落在前两个向量的平面上时,此时得到的向量方向被严格限制在了平面上
- 当我们修改第三个向量的标量时,实际上是在推动前两个向量张成的平面沿着第三个向量的方向移动,从而扫过整个三维空间
在二维空间和三维空间中,都有一种例外情况:
- 我们在向量的线性组合
中添加了一个向量 ,但是并没有扩展这个线性组合张成的空间,这个时候这些向量被称作线性相关的(Linearly Dependent) - 在这种情况下,我们有
,其中a和b取某个值时该式子可以成立
- 在这种情况下,我们有
- 反之,如果一组向量中每一组向量都为这个线性组合扩展了新的维度,那么我们就称这一组向量是线性无关的(Linearly Independent)
- 在这种情况下,我们有
,其中a和b可以取所有值
- 在这种情况下,我们有
基于以上概念,我们可以引出空间的基的严格定义:张成该空间的一个线性无关向量的集合
矩阵与线性变换
线性变换
线性变换(Linear Transformation):接受一个向量并输出一个向量的变换
- 线性(Linear)指空间中的所有直线在变换后仍然是直线,且原点的位置没有发生改变
- 变换(Transformation)本质上是函数(function)的花哨说法,但与函数不同的是,变换一词在刻意地暗示你可以用可视化的运动来思考这个过程
这张图看似直线没有被弯曲,但是在加上对角线后就会发现对角线变得弯曲了,因此仍然不属于线性变换
总的来说,线性变换要保证网格线平行且等距分布,在这个大前提下,我们有一个重要的推论
- 变换前的向量
是i帽与j帽的线性组合 ,那么变换后的 仍是变换后的i帽与j帽的相同线性组合 - 换句话说,若在变换前有
,那么在变换后等式仍然成立,因此只要找到变换后的基向量代入式子,就能得到变换后的向量
举例来说,对于向量
在变换后,基向量坐标发生了改变,有
因此,只要我们知道了变换后的基向量,我们就能推出任意一个向量在变换后的位置。基于这点,我们可以说,一个二维线性变换仅有四个数字决定:变换后的i帽坐标和变换后的j帽坐标。
矩阵
于是,我们将这四个数字包装在一个矩阵(Matrix)中,用于定义一个线性变换的函数
- 也就是说,矩阵本质上是对空间操纵的描述
- 同样地,你也可以通过一个矩阵来想象线性变换的过程,只要分别移动i帽和j帽,然后另空间的其他部分随着基向量一起移动即可
- 例如:将坐标系逆时针旋转90度的矩阵就是:
- 如果两个基向量是线性相关的,就意味着整个二维空间被挤压到它们所在的直线上
同样以上例为例,将变换写成矩阵运算的形式:
在这种理解方式下,矩阵的第一列代表变换后的第一个基向量,第二列代表变换后的第二个基向量,更加通用的公式是:
矩阵乘法与线性变换复合
复合变换
我们已经知道了,矩阵是对空间线性变换的描述函数。和向量类似,我们也可以对多个线性变换进行累加操作(即先进行线性变换A,再在此基础上进行线性变换B),我们称之为两个线性变换的复合变换
举例来说,旋转(Rotation)变换的矩阵是:
剪切(Shear)变换的矩阵是:
通过对旋转后的基向量进行剪切变换,我们可以得到这两个变换的复合变换的矩阵,该矩阵描述了先进行旋转再进行变换后的总效应:
如果我们想对一个向量
值得一提的是,线性变换的公式是从右往左读的,按照这个公式,应当先应用右侧的旋转矩阵,再应用左侧的剪切矩阵。
- 这个习惯是基于函数写法的延续,举例来说,
是对 应用的函数,这里的 也是写在左侧。如果我们把剪切矩阵记作函数 ,把旋转矩阵记作函数 ,把向量 记作 的话,那么按照函数的写法就应当是 ,可以看到这个顺序和上面的式子是相同的顺序
矩阵乘法
于是,我们称这个复合变换的矩阵为旋转矩阵和剪切矩阵的积
- 和向量不同的是,这里是积(乘法)而不是和(加法)
通过对线性变换过程中的基向量进行跟踪,我们可以很轻松地写出矩阵乘法的公式,对于:
复合函数的第一列列向量:
复合函数的第二列列向量:
于是我们得出了复合变换的计算公式:
- 矩阵乘法不满足交换律,即
- 矩阵乘法满足结合律,即
- 如果你用公式推导的思路去做这个证明,会发现非常痛苦且没有帮助
- 只从线性变换的角度上思考,两个公式本质上都描述了先进行C变换,再进行B变换,最后进行A变换,因此没有区别
行列式
在网格线平行且等距分布(即线性变换)的情况下,空间中任意一个区域的面积在变换后的缩放倍数都应当是一致的
举例来说,对于矩阵:
对于空间中的任意一个区域
也就是说,行列式用于描述线性变换改变面积的比例
- 当一个线性变换的行列式为 0 时,说明该线性变换将空间压缩到了一个更小的维度上,即变换后的基向量是线性相关的:
- 当一个线性变换的行列式为负数时,说明该变换本质上将整个二维平面进行了一次翻转,我们也称这样的变换改变了空间的定向
推广到三维空间,行列式就是对体积变换比例的描述
- 当在三维空间考虑空间的定向时,可以用右手定则:右手食指是
的方向,中指是 的方向,此时大拇指应当自然地指向 的方向。当变换后如果仍能用右手这样指向,则行列式为正,如果只能用左手来指向,则行列式为负。
行列式的计算
先给出一个结论,对于一个二维的矩阵,行列式的计算公式是:
如何理解这个公式?假设 b 和 c 均为0,那么这个矩阵实际上是对
粗略来说,以
从一个更详细的几何角度来说,行列式的推导过程如下:
当一个由
对于三维空间的行列式计算,遵循如下公式:
然而,三维以及更高维的行列式计算公式的推导过程难以描述,且对于线性代数的理解帮助不大,这里不再赘述
- 如果想要证明,可以自己试一下三维空间中平行六面体体积的推导过程
- 或者,去参考 Sal Khan 的推导过程
复合变换的行列式
对于两个矩阵相乘得到的复合矩阵,其行列式也等于两个矩阵的行列式相乘,即:
这个公式从数学角度上推导相当困难,但是类似矩阵乘法的结合律,我们同样可以从几何角度去思考这个问题:当进行了线性变换
逆矩阵、列空间与零空间
线性方程组
形如
的方程组叫做线性方程组
不难注意到,你可以将上述方程组写成矩阵和向量乘法的形式:
将该式子展开后得到的方程组和上面的方程组完全相同
我们称该矩阵为系数矩阵
于是,我们求解该方程组的几何意义变为了:给定一个线性变换
在
逆矩阵
这个线性变换
在应用变换
要得到矩阵
但是当
- 无法求解并不代表无解,而是该方程组存在多个可行解,无法求出唯一解
- 当一个线性变换降维,对于一个输出向量
,必然存在多个可能的输入向量 ;换句话说,当我们对 应用线性变换的逆矩阵时,必然有多个可能的输出 ,而这一点破坏了函数一个输入只能对应一个输出的基本性质
秩和列空间
我们可以将某个线性变换后空间的维数称作秩(rank)
- 若一个线性变换在执行后空间变为了二维(不论空间之前是几维的),那么我们就称该线性变换的秩为2
对于一个线性变换,可能得到的所有输出向量
- 你可以这么理解:矩阵的每一列代表了变换后的基向量,因此列空间就是变换后的基向量所张成的空间
因此,对于秩的更确切的定义是:某个线性变换的列空间的维数
线性变换无法扩展维数,因此秩不会超过矩阵的列数。
- 当矩阵的秩与列数相等时,我们称该矩阵为满秩矩阵(Full Rank)
对于满秩矩阵而言,由于线性变换必须保证原点位置不变,因此列空间中一定包含零向量,反过来说,零向量也是唯一变换后会落在原点的向量 —— 这也是为什么齐次线性方程组
当矩阵的秩小于列数时,不仅有零向量在变换后会得到零向量,还有一系列其他方向上的向量被压缩到原点,此时对于齐次线性方程组
点积和叉积
点积
对于两个相同维度向量的点积,只需要将对应的坐标两两相乘,最后求和即可,即:
对于这个式子的几何含义:以
- 当然,点积是满足交换律的,因此该几何含义中将
和 的顺序调换也是可以的 - 其中点积为负数表示即
在 上的投影与 的方向相反
但是为什么点积的几何含义会和向量的投影联系起来?这里需要引入一个叫做对偶性的概念
点积的对偶性
这部分比较难以理解,可能要对原视频多看几遍
不过我个人认为,视频中对于将
推广到非单位向量的情况解释得并不够好,可以结合我的笔记来更好地理解这部分内容
对偶性指两种数学事物中自然而又出乎意料的对应关系,接下来我们要证明一个多维空间到一个一维空间的线性变换的对偶是多维空间中的某个特定向量
对于会降维的线性变换,要求原本等距分布的点在变换后仍然等距分布的,在这个基础上,我们去考虑如何描述一个降维的线性变换:
我们已经知道了,矩阵描述的是线性变换之后,基向量的坐标。在变换之前,我们在二维空间中拥有两个基向量:
即一个非方矩阵,此时若我们想对一个向量
不难注意到,若将该矩阵看作一个颠倒的向量,则此时计算方式等同于点积的计算方式
假设存在这样一个变换,将二维空间中的点投影到一条过原点的直线上,我们定义该直线上的基向量为
要注意的是,图中的点表示二维向量的终点坐标,而不是点,你可以认为每个点都是一个从原点出发指向该点的向量
理所当然的,这个变换的矩阵应该形如
其中
首先考虑
将其推广到
因此该矩阵为:
此时,我们随即给出一个二维空间的向量
要注意的是,以上情况为
当
此时这个线性变换的性质发生了改变,它不再代表二维空间上的向量在该直线上的投影长度,而是二维空间上的向量在该直线上的投影长度乘以
它代表的含义是向量
这一点给我们的启发是:当我们看到一个从高维到一维的线性变换时,必然存在一个向量
叉积
对于叉积的两个较为重要的属性,对于
- 其数值等于两个向量围成的平行四边形的面积
- 其符号当
在 右侧时数值为正,反之则为负 - 要注意这里只是叉积的两个属性如何求得,并非叉积的定义
- 和点积不同的是,叉积的数值是不满足交换律的,有
不难注意到,叉积的计算方式和行列式的计算方式类似,实际上,我们有如下公式:
写作如下形式也是可以的,因为矩阵的转置并不会改变行列式的值:
你可以认为
- 当我们说
时, 对应变换前的 ,而 对应变换前的 ,考虑到初始状态下 (x轴向右)位于 (y轴向上)的右侧,因此当且仅当 在 右侧时,空间的定向没有发生改变,叉积(即该变换的行列式)为正
要注意,这里我们仍然没有在探讨叉积的真实定义,上面的
接下来我们回归到叉积的确切定义上:叉积是通过两个三维向量生成一个新三维向量的过程
- 生成向量的长度等于上文中提到的 —— 这两个向量围成的平行四边形的面积大小
- 生成向量的方向垂直于该平行四边形,并且对于
遵从以下规则:- 右手法则:食指指向
的方向,中指指向 的方向,竖起大拇指,此时大拇指的方向就是叉积的方向
- 右手法则:食指指向
对于更一般的情况,在给定两个输入向量的坐标的情况下,输出向量的坐标遵循如下公式:
该公式可以写作一个更易于记忆的行列式写法:
同样地,写作如下形式也是可以的,因为矩阵的转置并不会改变行列式的值:
关键点在于:为什么我们会在这个公式中将基向量作为一个矩阵元?实际上这里是一个符号上的技巧,当我们假设
此时行列式的结果恰好为三个基向量的线性组合,以一种直观的方式表示了输出向量的坐标
- 此时该向量是唯一一个与
和 垂直,长度是两个向量围成的平行四边形的面积,并且方向遵循右手定则的向量
叉积的对偶性(选读)
需要在完全了解了点积的对偶性的情况下,才能理解这部分的内容
对于上面那个奇怪的行列式,我们不考虑如何从数学角度上去推理为何这样的一个行列式恰好能够得到两个向量的叉积,而是从线性变换的角度上去思考:
和点积的对偶性相同,我们需要先假设存在这样一个线性变换,将三维空间的点映射到一条直线上(即秩为1),这个线性变换是由向量
首先不考虑上面的内容,我们已经知道了,对于一个二维空间,求两个向量围成的平行四边形的面积等价于求以这两个向量为基向量的线性变换的行列式,即:
要注意这里的叉积是一个不严谨的写法,它并不代表真正的叉积
将这个公式推广到三维空间,由三个向量围成的平行六面体的体积等价于以这三个向量为基向量的线性变换的行列式,即:
如果我们固定
不难证明,这个函数是一个线性的函数
在矩阵一章中我们已经知道了,矩阵实际上是对线性变换的描述,即一个线性的函数,因此我们可以将上述公式的
- 关于为什么是
的矩阵:因为该矩阵接受一个三维向量作为输入,最终输出一个数(一维向量)代表平行六面体的体积
而考虑到点积的对偶性,我们必然能找到一个三维向量与该矩阵对应:
- 回顾一下点积对偶性的最后一段:当我们看到一个从高维到一维的线性变换时,必然存在一个向量
与该变换相关联,对向量 进行该线性变换等价于对 和 做点积
展开等式左右两边,我们会得到下列式子:
于是我们可以得到该对偶向量的坐标:
不难发现,该对偶向量就是向量
回到上面的式子,等式右侧的行列式代表的是三个向量围成的平行六面体的体积
我们考虑等式左边的点积部分:
还记得在二维空间中,向量
- 其中向量
的长度等于向量 和 围成的平行四边形的面积,方向垂直于平行四边形 - 而未知向量在向量
上的投影长度则是和该平行四边形底面对应的高
由此我们可以得出,向量