ZT1 关于矩阵

· Tech

1. 线性变换与矩阵

为了搞清矩阵的来历,从线性变换出发是最直观的(线性变换有很多可视化的例子,见3B1B的视频)。

定义

设做线性变换的函数为 ff,取向量 u,vu, v 和标量 λλff 是线性的,满足两个关键性质:

  • f(u+v)=f(u)+f(v)f(u+v) = f(u) + f(v)
  • f(λu)=λf(u)f(\lambda u) = \lambda f(u)

下面以二维空间 R2R^2 为例,设基向量为 e1,e2e_1, e_2 。在空间中任取一个向量 vv ,它可以表示为基底的线性组合:

v=v1e1+v2e2v = v_1e_1 + v_2e_2

上式中 v1,v2v_1, v_2标量,即 vv 的坐标。现在施加任意线性函数 ff

f(v)=f(v1e1+v2e2)=v1f(e1)+v2f(e2)f(v) = f(v_1 e_1 + v_2 e_2) = v_1 f(e_1) + v_2 f(e_2)

上式中可以见到,结果中我们已经知道了 v1,v2v_1,v_2 ,要得知 f(v)f(v) 的话,还需要知道 ff 作用在两个基向量上的结果 f(e1)f(e_1)f(e2)f(e_2) ,即这个结果和坐标 v1,v2v_1, v_2 无关,而完全取决于 ff 在基向量上的作用 f(e1)f(e_1) f(e2)f(e_2)

f(e1)f(e_1)f(e2)f(e_2) 仍在 R2R^2 空间中,因此可以用基向量表示:

f(e1)=ae1+be2,f(e2)=ce1+de2f(e_1) = a e_1 + b e_2,\quad f(e_2) = c e_1 + d e_2

代入 f(v)f(v)vv 的坐标经 ff 后变为:

v=(v1,v2)(av1+cv2, bv1+dv2)v = (v_1, v_2) \mapsto (a v_1 + c v_2,\ b v_1 + d v_2)

注意, e1e_1ff 下变更为原基下的坐标 (a,b)(a,b)e2e_2ff 下变更为原基下的坐标 (c,d)(c,d) 。我们的向量一直用列向量书写,因此 ff 真正本质的信息(对基的作用)由这一对列向量传达:

M=(acbd)M = \begin{pmatrix} a & c \\ b & d \end{pmatrix}

这一列对向量包含了你想知道的、ff 作用于任何可能向量的全部信息。它也表明:在所有可能的线性变换构成的函数空间中选一个特定的 ff,有四个自由变量可选——即这个函数空间是四维的(也是一个抽象向量空间)。

矩阵中保存了这样线性变换 ff 的信息,甚至可以将矩阵乘法看成线性变换的函数:

f(v)=[acbd][v1v2]=[av1+cv2bv1+dv2] f(v) = \begin{bmatrix} a & c \\ b & d \end{bmatrix} \cdot \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \begin{bmatrix} a v_1 + c v_2 \\ b v_1 + d v_2 \end{bmatrix}

在这种理解之上,ff 的矩阵通过乘法作用到 vv 上,而不再直接通过 ff 作用到 vv 上。

如图,可以想象基向量从 (1,0)T,(0,1)T(1, 0)^T , (0, 1)^T 变换为 (a,c)T,(b,d)T(a, c)^T, (b,d)^T 的情形。

另外,借助这个视角,可以更好的理解矩阵乘法

  • 多次矩阵乘法实际上是几个连续的线性变换复合的结果
  • 矩阵乘法应当从右向左读(最右变换是第一层变换)
  • 矩阵乘法的结合律自然成立

2. 行列式与叉积

行列式(determinant)在我们的线性代数学习中,通常用来判断线性方程组有没有唯一解。但在线性变换的视角,可以赋予行列式更直观的含义:线性变换可以将 nn 维空间中的所有内容映射到该 nn 维空间中的其他位置,或者将该 nn 维空间压缩到较低维空间(如直线或平面)。在每种情况下,我们都可以进行计算来计算出总体上有多少空间被压缩或扩展,而不管转换的其他影响如何,这个计算的结果就是行列式。

下面仍以二维空间进行演示。在二维空间中,基向量将围成一个平行四边形,其面积(相较于单位基向量构成图形面积的比例)反映了空间变换的影响。例如,将基向量设定为 [3,0]T,[0,2]T[3,0]^T, [0,2]^T ,那么恰好围成一个矩形,其面积为 6,即变成单位面积的 6 倍。

因为变换是线性的(产生的网格线保持平行且等距分布),因而所有其他的面积其变化因素跟上述比例是相同的。

如果一个线性变换对应的行列式,其值为 0,说明它将基向量张成的二维平面压缩为一条线(甚至一个点),如下图所示。

此时,矩阵代表的线性变换将空间压缩到了更低的维度(甚至这个过程中丢失了信息,因而是不可逆的)。

上述几何意义可以用于解释初等行变换对行列式 detdet 的影响:

  1. RiRjR_i \leftrightarrow R_j ,那么 det=detdet' = -det ,行列式的值变号
  2. RikRiR_i \rightarrow kR_i,那么 det=kdetdet' = k * det,行列式的值被 kk 缩放
  3. RjRj+kRiR_j \rightarrow R_j + kR_i,那么 det=detdet'=det ,行列式的值不变

对于初等行变换,我们将矩阵的每一行都看成一个向量,那么这些行向量将张开一个线性空间。在二维情形下,此矩阵的行列式的值为这些基向量张成的平行四边形的面积。

  • 对于交换两行,实际上没有改变面积的大小,但是行列式代表的面积(体积等)是有向的,交换两向量相当于将基向量所围的平行四边形翻个面,因此翻转方向后需要变号。
  • 对于将某行向量缩放 kk,可以将此行向量所在的边视为平行四边形的底。那么,在高不变的情形,仅仅对底边缩放,其对整个图形的面积的缩放效果是一致的。
  • 对于将某行向量加上另一被缩放 kk 的行向量。我们考虑向量的加法,可以知道原行向量仅仅是在另一基向量的方向上有了一个分量,因此这个变换在二维即一个剪切变换(shear),对平行四边形的面积没有产生影响(底和高都没变,可以拿单位矩阵思考,其形状发生剪切后,将从矩形变为被拉斜的平行四边形)。

另外,对于矩阵的行操作和列操作,有常用的视角(区分于矩阵作用于列向量 Ax\text{如}Ax ):

  • EAEA ,左乘矩阵 EE 通常对原矩阵 AA 的各个行向量做线性组合
  • AEAE ,右乘矩阵 EE 通常对原矩阵 AA 的各个列向量做线性组合

行列式的一些性质也可以解释(不严谨地):

  1. det(αA)=αndetA\det(\alpha A)=\alpha^n\det A
    因为 nn 维空间每个方向上的基向量均被缩放 α\alpha 的倍数
  2. det(AB)=detAdetB\det(AB)=\det A\det B
    因为先做 BB 再做 AA,体积先缩放 detB\det B 倍,再缩放 detA\det A 倍。

上述视角都围绕二维展开,试着向三维深入一下。例如,将行列式计算从二阶扩展到三阶。

这里先引入一下叉积的概念。叉积的结果仍旧是一个向量,其:

  • 大小等于这两个向量构成的平行四边形的面积
  • 方向符合右手定则

借助叉积,我们可以方便的将行列式的计算(以及几何理解)从二维推向三维。

给出以下的三阶矩阵:

A=[abcdefghi]A= \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix}

将其按第一行展开,我们有:

detA=aefhibdfgi+cdegh\det A = a\begin{vmatrix} e & f \\ h & i \end{vmatrix} -b\begin{vmatrix} d & f \\ g & i \end{vmatrix} +c\begin{vmatrix} d & e \\ g & h \end{vmatrix}

上式从几何上,可以认为是计算一个三维平行六面体的有向体积。下面展示如何从叉积出发,根据 detA\det A 的几何意义推出上述代数式。

将矩阵 AA 视为由行向量张开的空间,那么有行向量:

r1=(a,b,c)r2=(d,e,f)r3=(g,h,i)\begin{aligned} \mathbf{r}_1 &= (a,b,c) \\ \mathbf{r}_2 &= (d,e,f) \\ \mathbf{r}_3 &= (g,h,i) \end{aligned}

三个向量张成的平行六面体的有向体积即为 detA\det A 的值,即:

detA=V=r1(r2×r3)\det A = V =\mathbf{r}_1\cdot(\mathbf{r}_2\times\mathbf{r}_3)

其中,r2×r3\mathbf{r}_2\times\mathbf{r}_3 的大小等于它们所张开的平行四边形的面积,方向垂直于它们所张开的平面。设 n=r2×r3r2×r3\mathbf{n}=\frac{\mathbf{r}_2\times\mathbf{r}_3}{|\mathbf{r}_2\times\mathbf{r}_3|},那么 r1n\mathbf{r}_1\cdot \mathbf{n} 能够得到 r1\mathbf{r}_1 在底面法向量方向上的投影(即有向高度),从而得到上式(称为混合积):

V=r2×r3(r1r2×r3r2×r3)=r1(r2×r3)V=|\mathbf{r}_2\times\mathbf{r}_3|\left(\mathbf{r}_1\cdot\frac{\mathbf{r}_2\times\mathbf{r}_3}{|\mathbf{r}_2\times\mathbf{r}_3|}\right)=\mathbf{r}_1\cdot(\mathbf{r}_2\times\mathbf{r}_3)

将叉积 r2×r3\mathbf{r}_2\times\mathbf{r}_3 写为分量形式,即

r2×r3=(nx,ny,nz)\mathbf{r}_2\times\mathbf{r}_3=(n_x,n_y,n_z)

r2×r3\mathbf{r}_2\times\mathbf{r}_3 本身既是个面积向量,又是个法向量。因此,需要找到 r2×r3\mathbf{r}_2\times\mathbf{r}_3 其面积向量在以x,y,zx,y,z 三个法向方向上的分量,即找到 r2×r3\mathbf{r}_2\times\mathbf{r}_3 这个面在三个坐标平面的有向投影面积

r2×r3=(Syz,Sxz,Sxy)\mathbf{r}_2\times\mathbf{r}_3=(S_{yz},S_{xz},S_{xy})
r1=(a,b,c)\mathbf{r}_1 = (a,b,c),那么

detA=r1(r2×r3)=a Syz+b Sxz+c Sxy\det A =\mathbf{r}_1\cdot(\mathbf{r}_2\times\mathbf{r}_3)=a\ S_{yz} + b \ S_{xz} + c \ S_{xy}

这样就已经得到 det Adet\ A 的展开式了, 有向面积 Syz,Sxz,SxyS_{yz},S_{xz},S_{xy} 的计算即我们已经掌握的二阶行列式的计算。例如计算 SyzS_{yz} ,有投影 r2=(e,f),r3=(h,i)\mathbf{r}^{'}_2 = (e,f),\mathbf{r}^{'}_3 = (h,i),所以 Syz=efhi=eifhS_{yz} = \begin{vmatrix} e & f \\ h & i \end{vmatrix} = ei-fh

注意

余子式展开的正负号交替,在三维情形下跟右手系有关(更高维的情形下,本质是排列/置换的奇偶性(这可用逆序数判断)。发生取向反转时会使有向体积变号)。

在三维坐标系下有:

  • ex×ey=ez\mathbf{e}_x\times\mathbf{e}_y=\mathbf{e}_z
  • ey×ez=ex\mathbf{e}_y\times\mathbf{e}_z=\mathbf{e}_x
  • ez×ex=ey\mathbf{e}_z\times\mathbf{e}_x=\mathbf{e}_y

那么,ex×ez=ey\mathbf{e}_x\times\mathbf{e}_z=-\mathbf{e}_ySxzS_{xz} 跟正向 zxzx 方向是反的,因此展开式中此项带有负号。

3. 逆矩阵与秩

前面提到矩阵是线性变换的体现,因此逆矩阵其实代表该线性变换的逆变换。

从机器学习的角度看,矩阵 AA 往往代表一个线性变换,求解 Ax=bAx=b就是寻找一个输入 xx,使变换后的结果落在目标 bb 上。

我们依旧可以从二维情形入手,例如:

我们如何理解这个方程的解,取决于 AA 所对应的变换

  • 要么把整个空间挤压到更低的维度,比如一条线或一个点
  • 要么仍然张成原来的完整二维空间

这就与行列式相关,若行列式不为零,那么说明变换后的空间维度没变(信息未损失),那么可以通过逆变换来得到解;若行列式为零,那么说明变换后的空间被压缩了(信息已损失),那么对应的逆变换就不存在,就没法求出逆矩阵。此时,bb 要么完全不在变换后的空间内,要么很多的 xx 在变换后都被压到 bb (某些维度被压到零导致的)。

对逆矩阵定义如下:

A1A=AA1=IA^{-1}A = AA^{-1} = I

如果 A1A^{-1} 存在,那么从 Ax=bAx=b 出发,左乘 A1A^{-1} 就得到:

x=A1bx=A^{-1}b

用行列式为零去描述降维情形,显然不够具体。为此,引入了矩阵的秩去描述变换后空间的维度信息。矩阵所有可能的输出所组成的集合——无论它是一条线、一个平面还是整个三维空间——叫作这个矩阵的列空间。矩阵的列向量告诉你各个基向量落在了哪里,而这些变换后基向量的张成空间,就给出了所有可能的输出。换句话说,列空间就是矩阵各列向量的张成空间。

因此,秩的定义为列空间的维数。当这个秩达到最大值、等于矩阵的列数时,这个矩阵就称为满秩矩阵。教材定义中,常给出一个矩阵 AA 的列秩是 AA 的线性无关的列的极大数目。类似地,行秩是 AA 的线性无关的行的极大数目。矩阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵 AA 的秩。

注意

零向量总会包含在列空间中,因为线性变换必须保持原点不动。

对于满秩变换,唯一会落到原点的向量就是零向量本身。但对于非满秩矩阵,也就是会把空间挤压到更小维度的矩阵,可能会有大量向量都落到零向量上。

  • 如果一个三维变换把空间挤压到一个平面,那么会有一整条直线上的向量最终落到原点
  • 如果一个三维变换把空间挤压到一条直线,那么会有一整个平面上的向量最终落到原点

这些最终落到原点的向量所组成的集合,叫作这个矩阵的零空间,也叫核。根据定义,零空间就是线性齐次方程组 Ax=0Ax = 0 的所有解的集合。

有结论:

A可逆    detA0    Ax=0只有零解    rank(A)=nA\text{可逆} \iff \det A \neq 0 \iff Ax=0\text{只有零解} \iff \mathrm{rank}(A)=n

4. 点积、正交与投影

待续

5. 特征值与特征向量

待续

6. SVD 与伪逆

待续

参考

  1. 线性代数的本质

    https://www.bilibili.com/video/BV1ys411472E/

  2. https://mathomablog.wordpress.com/2017/02/11/who-cares-about-matrices-why-3blue1brown-presents-linear-algebra-correctly/
  3. 线性代数 — Machine Learning From Scratch

    https://machine-learning-from-scratch.readthedocs.io/zh-cn/latest/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0.html

  4. 交互式行列式教程

    https://intuitive-math.club/linear-algebra/determinant/

cicada@blog:~