在图像处理/数据优化/机器学习方法方面,看了一些需要代数背景的代码比较糊涂,决定以个人视角记录一些线性代数基础,也是想做很久的一件事。参考了多方资料,包括宋浩线性代数(理解细节参考)、张宇线性代数(排版、总结、详略、公式非常好)以及来自MIT的线性代数课程(思想、与工程结合性出众),可能比较综合(杂乱)。

逐渐更新。

矩阵基础

矩阵的定义不值一提,但从不同视角看待更容易理解矩阵的本质。

行图像(Row Picture)与列图像(Column Picture)

平时习惯以行图像的时间看待矩阵,例如上述矩阵可以看成线性方程组的求解,对于二维矩阵求的是两直线的交点,三维则求三个面的交点: 解的存在性和个数取决于交点的存在性和分布规律。

列图像将矩阵看成是列向量线性组合:

解的存在性和个数取决于两个向量的线性组合是否可达至目标向量。

如果目标向量B是任意的,从行向量看代表两条直线关系是随机的,如果是三维,则代表了空间中三个平面的关系是随机的;而从列图像理解更容易得多,因为其系数矩阵是不变的,无论是二维还是n维空间,关键在于系数向量的线性组合是否能够表示n维空间中任意的向量,其答案也显然的,如果n维系数均是线性无关的,那么一定能表示空间中任意向量。

提醒

反对称矩阵

对称矩阵容易理解,满足,即元素关于主对角线对称();反对称矩阵满足,除了满足主对角线对称元素均为相反数(),还要满足主对角线元素均为0()。

矩阵多项式

那么矩阵多项式有:

运算

矩阵运算中不能以代数视角计算,例如: 所以一些展开式也应该遵循顺序:

同理:

此外AB=0不能推断A=0或者B=0,故: 即使也不能说明

矩阵转置规律

正交矩阵

对于方阵,满足,称A为正交矩阵。

A为正交矩阵,其特征很明显:

  1. 首先求逆极其简单:两边右乘有:

  1. 意味着A的行向量组成的向量组以及列向量组成的向量组,均是标准正交基(见下文向量基础),由于

可见a向量自身模长为1,与b、c均正交,b、c同理,故a、b、c行向量组成的向量组均是标准正交基,列向量同理。

矩阵的逆

对于方阵A,若 为矩阵的逆,不是所有矩阵都有逆,其充要条件对应行列式|A|不为0

一些计算规律: 两矩阵和的逆没有固定规律

对角分块矩阵的逆

分块存在逆的前提下,求逆分块顺序不变:

如果是副对角线,分块矩阵顺序要相反写:

三角分块矩阵的逆

存在四种情况:

  1. 主对角线的三角分块阵:对角线元素位置不变直接求逆,上三角/下三角元素左乘同行元素、右乘同列元素,然后加负号:

    有:

  2. 副对角线的三角分块阵:两个对角线上的元素都要交换顺序,然后执行规律:副对角线元素直接求逆,上/下三角元素左乘同行、右乘同列,然后加负号:

    有:

余子式与代数余子式

伴随矩阵前要了解一些行列式基本计算,对于一个矩阵中某个元素,去除该元素所在行、列的所有元素,顺序不变组成的子式就是余子式,例如对于矩阵: 对于第一个元素1,其余子式就是:

同理对于元素5,其余子式为:

代数余子式是值在余子式的基础上,考虑行列和的奇偶性决定符号:

例如元素2的代数余子式

对于n阶方阵,其行列式值等于某行或者某列元素乘上其代数余子式:

j取值可以是1到n任一列(注意是一列,不是全部列都要)。

伴随矩阵

有了代数余子式的概念,就知道A的伴随矩阵由每个位置对应的代数余子式组成,但是注意对应关系的行列位置是相反的(对应在位置):

一些计算性质:

矩阵和的伴随同样没有固定规律。

这里最重要的是通过伴随矩阵求逆的公式,因此也推导出了二阶矩阵的逆快捷计算:主对角线元素对换、副对角线元素取反,再除以原行列式值:

初等矩阵

矩阵初等变换有三种:交换两行/两列、数乘某行/某列、倍乘某行/某列后加到另一行/列。

单位矩阵经过一次初等变换得到的矩阵,称初等矩阵,以三阶矩阵,其表示和记号如下:

  1. E的第二行(或第二列)乘k倍:

  1. E的1、2行(或1、2列)互换:

  2. E的第1行的k倍加到第3行(或者第3列的k倍加到第1列):

初等矩阵运算性质

  1. 行列式:

  2. 转置:

  3. 逆:

  4. 重要定理:若矩阵A可逆,A可以经过有限次初等行变换化成单位矩阵:

也等同于A是一系列初等行变换的乘积结果。

  1. 左乘行变换、右乘列变换。

等价矩阵

如果A、B都是m×n矩阵(同型矩阵),且存在可逆矩阵使得PAQ = B,那么称A、B为等价矩阵,记为

等价矩阵的一个充分必要条件是秩相等rank(A) = rank(B);

等价标准形:对于可逆方阵A,其可以分解到初等矩阵+单位阵,如果是m×n的矩阵A,则不可以直接分解到单位阵,但是可以分解到类似的形式,这种形式称为等价标准形,每个矩阵都有唯一的等价标准形: 其中r为矩阵A的秩,且存在可逆矩阵满足:

LU分解

线性方程组最常用的求解方法是通过增广矩阵+高斯消元法,所谓高斯消元法,实际上就是行与行间消元化出一个得到上三角矩阵,而且知道,这种消元实际上是行变换,行变换的本质是左乘初等变换矩阵,从原始矩阵A开始:

上三角矩阵对应的是U符号,其变成上三角矩阵的过程是第一行的-2倍加到第二行、第一行的-2倍加到第三行、第二行的-3倍加到第三行,即左乘了三个初等矩阵:

此处上三角矩阵,将每行的第一个非0元素称为主元(pivot),这里我们仅讨论方程满秩的情况,消元后一个方程组的主元分布可能不是完全按一条斜线分布,这种情况先调换一下行顺序(线性方程顺序)即可。

所以:

至此得到了的形式,可见,写成,这就完成了A的LU分解,其中毫无疑问的是U是一个上三角矩阵,而且A到U做左乘时,总是前面的行对后面的行做消元,所以E应该是一个下三角矩阵,而下三角矩阵求逆时,将矩阵和一个单位阵按行拼接,然后将I通过行变换化成E,然后E就变成了

其原理也是分块矩阵+基本变换,当相当于两个分块都左乘了,这不难接受。

因此下三角矩阵求逆时,仍然是前面的行对后面的行消元,所以其逆仍然是一个下三角矩阵,于是乎的形式,实际上就是将A分解成下三角矩阵L上三角矩阵U的过程,这就是LU分解的基本过程和含义。

一点题外话是既然IA = U已经有两个上下三角矩阵了,为什么还要写成A = LU,这里还有一个特点是通过L能清楚看到所有的初等变换步骤,而I做不到,上述I和没有明显关系,而

可以看出,全是矩阵L的因子。

LU分解的线性方程组求解

线性代数的根本目的是解线性方程组,只讨论分解不讨论求解无异于虎头蛇尾。

使用A构造一组方程组,Ax=b为:

从增广矩阵的角度可以说很简单,这里走一次LU分解的流程,从上述已知:

所以Ax = b可以写成LUx = b,令y = Ux,所以有方程Ly = b: 可见,因为是下三角矩阵,其答案很容易看出:

再列出Ux = y有:

上三角矩阵也容易看出结果:

这就是Ax = b方程组的解。

LU分解特点

从求解过程可以看出,LU分解的本质实际上类似增广矩阵求解,都是通过高斯消元法来得到上三角/下三角矩阵回代来获取结果。对于一个n阶方阵,第一行需要对n-1行乘上(n-1)个不同倍数进行消元,可见一行的消元开销是平方级别,一共有n行元素,所以LU分解的总体复杂度为。 复杂度与增广矩阵是一致的,但从求解过程也可以看见,LU分解保留了初等变换信息,初等变换只和系数矩阵A有关,与输出矩阵b无关,因此经历一次复杂度为的LU分解后,尽管输出矩阵b不同,线性方程组求解的复杂度是(都是回代过程,第一个方程需要n次回代、第二个需要n-1次回代...最后一个需要一次回代,求和为平方级别)。对于增广矩阵方法,而每次b变化增广矩阵最后一列都不同,都需要不断做复杂度为的上三角/下三角变换,因此LU分解在解大量系数不变的线性方程组时性能较高。

LU分解数值稳定性取决于主元的选择,常用的主要是对行主元的选择,LU分解会引入行置换矩阵P,例如表示第一行和第二行交换

LU分解写成PA = LU,这也是大多数算法的实现原理。假如不引入这样的P,对于矩阵: 是一个很小的小数,这种情况下使用高斯消元,需要将第一行除以负的加到第二行,对于第一行的其他元素,会变得很大,从而放大了整个矩阵输入系数误差,所以得到的结果是不稳定的,假设交换1和2行,让1成为第一行的主元,则没有该问题,这就是引入置换矩阵的原因,这种策略称Partial Pivoting(部分主元选择)。一些情况下为了应对非常病态的矩阵,甚至会对列主元选择和整体最大值筛选,但是复杂度较高,很少成为通用方法。

有一类矩阵被称为严格对角占优矩阵(strictly diagonally dominant matrix),其每个对角线元素绝对值,都大于元素所在行其他元素绝对值之和,即:

这类矩阵的LU分解稳定性较高,而且无需置换矩阵

最后,对于LU分解,其目的性很单一,就是为了求解线性方程组,所以对于奇异矩阵讨论LU分解的意义并不大,LU分解并不限定矩阵是否奇异,奇异矩阵无非通过高斯消元后得到的U有全0行,通过P保证全0行均在后面几行,仍然能表示出对应的LU,但这种LU方程既不能求精确解,也不能保证数值稳定性,因此算法实现一般不去处理奇异矩阵。

向量基础

内积与正交

其内积表示为 其中,

若满足: 且二者均非0向量,称二者正交。

标准正交基

亦称规范正交基、标准正交向量组。对于一个单位向量组成的列向量组[α_{1}, α_{2}, ...α_{n}],如果满足任意两个向量均正交,即:

那么该向量组被称为标准/单位正交向量组。

施密特正交化

正交关系除了表征向量关系是线性无关的,还有的好处是容易看出基向量,对线性方程组求解、变换关系处理等都比较方便。

线性无关的向量均可以被正交化,这里记住常用的施密特二维/三维公式即可:

两个线性无关向量组成的向量组

进行标准正交化:

得到的为两个正交向量,进行单位化即可:

向量组

对于三维的情况,正交化公式为:

单位化同理。

线性方程组

子空间(Subspaces)

在向量空间中,子空间需要满足两个条件:

  1. 子空间向量都属于

  2. 子空间本身是一个对线性运算封闭的空间,包括数乘、线性组合,意味着子空间中向量乘上任意倍数,或者组合都仍然属于子空间向量,也意味着子空间必须包括零向量。

对于二维向量空间,其子空间可以是原点自身、或一个过原点向量直线;对于三维的向量空间,其子空间除了可以是原点和过原点直线,也可以是两个线性无关向量(需贡献两个向量方向)张成的过原点的面,再者,子空间也可以是自身空间。

注意,子空间与子空间的交集常常是一个子空间,但子空间与子空间的并集,未必是一个子空间,例如向量空间,过原点直线和过原点的面都是子空间,但是直线向量和过原点面上的一个向量的线性组合向量,可能既不属于直线也不属于面,因此不满足封闭性条件,故二者并集不是子空间。

理解线性方程组矩阵,有很多视角可以做到,这里介绍一下MIT的方法(避免看不懂别人的文章),需要了解矩阵两个重要的子空间,即列空间和零空间。

列空间(Column Space)

矩阵的列空间是矩阵列向量张成的子空间,矩阵空间的维度决定了矩阵自身的向量空间,例如一个5×3矩阵,其自身维度空间最大可能是行数5,即,而矩阵列空间的维度取决于矩阵的秩,所以对于那些类似5×3,行数大于列数的瘦高矩阵,子空间的向量无论如何是无法张满整个空间的,所以表现在五个独立方程、三个未知数无解。

这里一点细节容易使人混淆:为什么秩最大为3,却可以有5个独立方程呢,秩等于3不是意味着有两行全0行吗,所以只有3个独立方程?

事实上列空间讨论的是Ax = b问题,假设这里秩等于3,指的是矩阵A可以化出2个全0行,但是这种化法可能无法将[A|b]增广矩阵也化出两个全0行,意味着5个方程是独立的。

零空间(Nullspace)

零空间是指使齐次方程Ax = 0满足的所有x向量张成的空间,即A矩阵方程通解。零空间衡量了一个线性方程组解的自由度,假设零空间只包含了一个原点,意味着任意系数的列向量线性组合,都不能互相抵消,意味着不能互相表示,那么就意味着线性方程组系数矩阵满秩,列向量均是线性无关的。

秩-零化度定理(Rank-Nullity Theorem)

对于矩阵: 可见x = (0,0,1)(0,0,2)等都是其齐次方程解,可见其零空间一条直线,所以至少存在一个维度是自由的,换言之,最多只能找到2个线性无关向量

如果第二行也是全0,那么只有1个线性无关向量,可见零空间和秩是互相约束的。这就是秩-零化度定理:对于m×n矩阵

矩阵的列数代表了列线性无关的最大潜力(最大可张成的维度)代表了实际上线性无关的个数(实际张成的维度)零空间的维度代表了线性相关(可自由组合)的维度个数。

线性方程组的求解

非齐次线性方程组的解可分成齐次方程通解非齐次方程特解,也分别对应零空间解列空间解

零空间解/齐次方程通解

零空间的解也是国内教程中齐次方程的通解,其求解通过系数矩阵的消元来进行,例如矩阵A:

消元得到:

这里每行只有1、3列含主元,可见这里的主元列(pivot columns)是第一列和第三列,第二列和第四列都被称为自由列(free columns)

分别令自由列为任意数,如:

以及

分别得到:

这就是齐次方程的通解:

这两个通解向量张成的空间,就是零空间

列空间解/非齐次方程特解

线性方程组有解是有条件的,即b必须来自列空间,从上述消元知道列秩为2,因此这里[A|b]增广矩阵最后一行应该全0,这里直接给出一个满足条件的方程:

非齐次方程的特解指的满足非齐次方程的一个解,无论什么手段,只要得知其一个解即可,一般采取最简单的回代,就是将自由列的x系数置0,即,得到: 这就是非齐次方程特解:

非齐次方程通解 = 齐次方程通解 + 非齐次方程特解,即为:

特征值与特征向量

凡是讨论特征值和特征向量,讨论的矩形一定是方阵

A是n阶矩阵,是一个n阶非零向量,若存在常数使得: 则称为矩阵A的特征值,特征值对应的称为特征向量

特征方程

将定义式移位得到: 相当于求解方程 是否存在非零解的x。

如果矩阵是可逆矩阵(满秩),那么x只有零解,可知这不符合特征向量特性,所以只能是: 该方程被称为矩阵A的特征方程,通过求解该方程能得到矩阵A的特征值,将特征值回代到线性方程组求解x,就得到了特征值对应的特征向量。

求解特征值、特征向量示例

例: 求解方程 的特征值和对应特征向量。

解:可知特征方程为:

即:

得到特征值:

  1. 时,经初等行变换: 可见自由列是第一列,令,得:

  1. 时,经初等行变换: 可见自由列是第二列,令,得:

  1. 时,经初等行变换: 可见自由列是第三列,令,得:

综上所述:矩阵A的特征值为1,2,3,对应的特征向量依次为

注意,如果存在特征值重复情况下,仍然称矩阵含有三个特征值、对应三个特征向量,而不是两个。

A相关矩阵的特征值、特征向量

部分规律 对于转置矩阵,其特征值与A相同,但特征向量不同,需要重新回代计算。

若矩阵方程满足f(A) = O,那么A任一特征值都满足

特征值相关性质

  1. 特征值之和等于矩阵的迹(主对角线元素之和):

  2. 特征值的连乘等于矩阵的行列式值:

特征向量性质

  1. 对于k重特征值,其对应的线性无关特征向量最多只有k个(难证);

  2. 分别是两个不同特征值特征向量,那么一定有线性无关

  3. 是矩阵A同一个特征值的两个特征向量,那么不同时为0)仍然是的特征向量

矩阵相似

两个n阶方阵A、B,若满足,则称A相似于B,记作A~B;

矩阵相似具有反身性(与自身相似)、对称性(互为相似)和传递性;

矩阵的相似引出了很多重要的特征:

但注意,以上条件均成立也不能反推矩阵相似;

其他特征:若有,则:

未完待续