主页
avatar

Kared

线性代数的艺术 - The Art of Linear Algebra

本文转载自 The Art of Linear Algebra,书籍开源地址为:kenjihiranabe/The-Art-of-Linear-Algebra

中文版地址为:The Art of Linear Algebra 中文版

推荐一本非常不错的图解线性代数开源书籍,适合初学者以及想要快速复习线性代数的同学。书中通过图解的方式介绍了线性代数的基本概念和算法,帮助读者更好地理解矩阵、向量以及相关的计算方法。

Abstract

我尝试为 Gilbert Strang 在书籍 “Linear Algebra for Everyone” 中介绍的矩阵的重要概念进行可视化图释,以促进从矩阵分解的角度对向量、矩阵计算和算法的理解。它们包括矩阵分解(Column-Row, CR\mathbf{CR})、高斯消去法(Gaussian Elimination, LU\mathbf{LU})、格拉姆-施密特正交化(Gram-Schmidt Orthogonalization, QR\mathbf{QR})、特征值和对角化(Eigenvalues and Diagonalization, QΛQT\mathbf{Q \Lambda Q^T})、和奇异值分解(Singular Value Decomposition, UΣVT\mathbf{U \Sigma V^T})。

序言

我很高兴能看到 Kenji Hiranabe 的线性代数中的矩阵运算的图片!这样的图片是展示代数的绝佳方式。我们当然可以通过 行 \mathbf{\cdot}列 的点乘来想象矩阵乘法,但那绝非全部 —— 它是 “线性组合” 与 “秩1矩阵” 组成的代数与艺术。我很感激能看到日文翻译的书籍和 Kenji 的图片中的想法。

— Gilbert Strang 【麻省理工学院数学教授】

1. 理解矩阵——4个视角

一个矩阵 (m×nm \times n) 可以被视为 11个矩阵,mnmn个数,nn个列和 mm个行。

Figure 1: 从四个角度理解矩阵

A=[a11a12a21a22a31a32]=[a1a2]=[a1a2a3]A= \begin{bmatrix} a_{11} & a_{12}\\ a_{21} & a_{22}\\ a_{31} & a_{32} \end{bmatrix} = \begin{bmatrix} | & |\\ \mathbf{a_1} & \mathbf{a_2}\\ | & | \end{bmatrix} = \begin{bmatrix} - \mathbf{a_1^*} -\\ - \mathbf{a_2^*} -\\ - \mathbf{a_3^*} - \end{bmatrix}

在这里,列向量被标记为粗体 a1\mathbf{a_1}。行向量则有一个 \mathbf{*}号,标记为 a1\mathbf{a_1^*}。转置向量和矩阵则用 T\mathrm{T}标记为 aT\mathbf{a}^TATA^T

2. 向量乘以向量——2个视角

后文中,我将介绍一些概念,同时列出 “Linear Algebra for Everyone” 一书中的相应部分(部分编号插入如下)。详细的内容最好看书,这里我也添加了一个简短的解释,以便您可以通过这篇文章尽可能多地理解。此外,每个图都有一个简短的名称,例如 v1(数字 1 表示向量的乘积)、Mv1(数字 1 表示矩阵和向量的乘积),以及如下图 (v1) 所示的彩色圆圈。如你所见,随着讨论的进行,该名称将被交叉引用。

  • 1.1节 (p.2) Linear combination and dot products
  • 1.3节 (p.25) Matrix of Rank One
  • 1.4节 (p.29) Row way and column way

Figure 2: 向量乘以向量 - (v1), (v2)

(v1) 是两个向量之间的基础运算,而 (v2) 将列乘以行并产生一个秩1矩阵。理解 (v2) 的结果(秩1)是接下来章节的关键。

3. 矩阵乘以向量——2个视角

一个矩阵乘以一个向量将产生三个点积组成的向量 (Mv1) 和一种 AA的列向量的线性组合。

  • 1.1节 (p.3) Linear combinations
  • 1.3节 (p.21) Matrices and Column Spaces

Figure 3: 矩阵乘以向量- (Mv1), (Mv2)

往往你会先学习 (Mv1)。但当你习惯了从 (Mv2) 的视角看待它,会理解 AxA\mathbf{x}AA的列的线性组合。矩阵 AA的列向量的所有线性组合生成的子空间记为 C(A)\mathbf{C}(A)Ax=0A\mathbf{x}=\mathbf{0}的解空间则是零空间,记为 N(A)\mathbf{N}(A)

同理,由 (vM1) 和 (vM2) 可见,行向量乘以矩阵也是同一种理解方式。

Figure 4: 向量乘以矩阵 - (vM1), (vM2)

上图 AA的行向量的所有线性组合生成的子空间记为 C(AT)\mathbf{C}(A^T)yA=0yA=0的解空间是 AA的左零空间,记为 N(AT)\mathbf{N}(A^T)

本书的一大亮点即为四个基本子空间:在 Rn\mathbb{R}^n上的 N(A)\mathbf{N}(A)+ C(AT)\mathbf{C}(A^T)(相互正交)和在 Rm\mathbb{R}^m上的 N(AT)\mathbf{N}(A^T)+ C(A)\mathbf{C}(A)(相互正交)。

  • 3.5节 (p.124) Dimensions of the Four Subspaces

Figure 5: 四个子空间

关于秩 rr,请见 A=CRA=CR(6.1节)。

4. 矩阵乘以矩阵——4个视角

由 “矩阵乘以向量” 自然延伸到 “矩阵乘以矩阵”。

  • 1.4节 (p.35) Four ways to multiply AB=C\mathbf{AB=C}
  • 也可以见书的封底

Figure 6: 矩阵乘以矩阵 - (MM1), (MM2), (MM3), (MM4)

5. 实用模式

在这里,我展示了一些实用的模式,可以让你更直观地理解接下来的内容。

Figure 7: 图 1, 2 - (P1), (P1)

P1 是 (MM2) 和 (Mv2) 的结合。P2 是 (MM3) 和 (vM2) 的扩展。注意,P1 是列运算(右乘一个矩阵),而 P2 是行运算(左乘一个矩阵)。

Figure 8: 图 1', 2' - (P1'), (P2')

(P1’) 将对角线上的数乘以矩阵的列,而 (P2’) 将对角线上的数乘以矩阵的行。两个分别为 (P1) 和 (P2) 的变体。

Figure 9: 图 3 - (P3)

当解决微分方程和递归方程时的也会出现这一模式:

  • 6节 (p.201) Eigenvalues and Eigenvectors
  • 6.4节 (p.243) Systems of Differential Equations
du(t)dt=Au(t),u(0)=u0\frac{d \mathbf{u}(t) }{dt} = A \mathbf{u}(t), \quad \mathbf{u}(0)=\mathbf{u}_0
un+1=Aun,u0=u0\mathbf{u}_{n+1} = A \mathbf{u}_n, \quad \mathbf{u_0} = \mathbf{u}_0

在两种问题中,它的解都可以用 AA的特征值(λ1,λ2,λ3\lambda_1, \lambda_2, \lambda_3)、特征向量 X=[x1x2x3]X=\begin{bmatrix} \mathbf{x}_1 & \mathbf{x}_2 & \mathbf{x}_3 \end{bmatrix}和系数 c=[c1c2c3]Tc=\begin{bmatrix} c_1 & c_2 & c_3 \end{bmatrix}^T表示。其中 CC是以 XX为基底的初始值 u(0)=u0\mathbf{u}(0)=\mathbf{u}_0的坐标。

u0=c1x1+c2x2+c3x3\mathbf{u}_0 = c_1 \mathbf{x}_1 + c_2 \mathbf{x}_2 + c_3 \mathbf{x}_3
c=[c1c2c3]=X1u0\mathbf{c} = \begin{bmatrix} c_1\\ c_2\\ c_3 \end{bmatrix} = X^{-1} \mathbf{u}_0

以上两个问题的通解为:

u(t)=eAtu0=XeΛtX1u0=XeΛtc=c1eλ1tx1+c2eλ2tx2+c3eλ3tx3\mathbf{u}(t) = e^{At} \mathbf{u}_0 = X e^{\Lambda t} X^{-1} \mathbf{u_0} = X e^{\Lambda t} \mathbf{c} = c_1 e^{\lambda_1 t} \mathbf{x}_1 + c_2 e^{\lambda_2 t} \mathbf{x}_2 + c_3 e^{\lambda_3 t} \mathbf{x}_3
un=Anu0=XΛnX1u0=XΛnc=c1λ1nx1+c2λ2nx2+c3λ3nx3\mathbf{u}_n = A^n \mathbf{u}_0 = X \Lambda^n X^{-1} \mathbf{u_0} = X \Lambda^n \mathbf{c} = c_1 \lambda_1^n \mathbf{x}_1 + c_2 \lambda_2^n \mathbf{x}_2 + c_3 \lambda_3^n \mathbf{x}_3

见 Figure 9:通过 P3 可以得到 XDcXDc

Figure 10: Pattern 4 - (P4)

P4 在特征值分解和特异值分解中都会用到。两种分解都可以表示为三个矩阵之积,其中中间的矩阵均为对角矩阵。且都可以表示为带特征值/特异值系数的秩1矩阵之积。

更多细节将在下一节中讨论。

6. 矩阵的五种分解

  • 前言 p.vii, The Plan for the Book.

A=CR,A=LU,A=QR,A=QΛQT,A=UΣVTA=CR, A=LU, A=QR, A=Q \Lambda Q^T, A=U \Sigma V^T将一一说明。

分解图示说明
A=CR\mathbf{A=CR}A_CRCCAA的线性无关列
RRAA的行阶梯形矩阵
可推知 列秩 = 行秩
A=LU\mathbf{A=LU}A_LULULU分解通过
高斯消去法
(下三角)(上三角)
A=QR\mathbf{A=QR}A_QRQRQR分解为
格拉姆-施密特正交化中的
正交矩阵 QQ和三角矩阵 RR
S=QΛQT\mathbf{S=Q\Lambda Q^T}A_QLQT对称矩阵 SS可以进行
特征值分解
特征向量组成 QQ,特征值组成 Λ\Lambda
A=UΣVT\mathbf{A=U\Sigma V^T}A_USVT所有矩阵 AA
奇异值分解
奇异值组成 Σ\Sigma

6.1 A=CR\mathbf{A=CR}

  • 1.4节 Matrix Multiplication and A=CR\mathbf{A=CR}(p.29)

所有一般的长矩阵 AA都有相同的行秩和列秩。这个分解是理解这一定理最直观的方法。CCAA的线性无关列组成,RRAA的行阶梯形矩阵(消除了零行)。A=CRA=CRAA化简为 rr的线性无关列 CC和线性无关行 RR的乘积。

A=CR[123235]=[1223][101011]\begin{split} A &= CR\\ \begin{bmatrix} 1 & 2 & 3 \\ 2 & 3 & 5 \end{bmatrix} & = \begin{bmatrix} 1 & 2 \\ 2 & 3 \end{bmatrix} \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix} \end{split}

推导过程:从左往右看 AA的列。保留其中线性无关的列,去掉可以由前者线性表出的列。则第1、2列被保留,而第三列因为可以由前两列之和表示而被去掉。而要通过线性无关的1、2两列重新构造出 AA,需要右乘一个行阶梯矩阵 RR

Figure 11: CR中列的秩

现在你会发现列的秩为2,因为 CC中只有2个线性无关列。而 AA中所有的列都可以由 CC中的2列线性表出。

Figure 12: CR中行的秩

同样,行秩也为2,因为 RR中只有2个线性无关行,且 AA中所有的行都可以由 RR中的2行线性表出。

6.2 A=LU\mathbf{A=LU}

用高斯消除法求解 Ax=bA\mathbf{x}=\mathbf{b}也被称为 LULU分解。通常,是 AA左乘一个初等行变换矩阵(EE)来得到一个上三角矩阵 UU

EA=UEA = U
A=E1UA = E^{-1}U
let  L=E1,A=LU\text{let} \; L = E^{-1}, \quad A = LU

现在,求解 Ax=bA\mathbf{x}=\mathbf{b}有2步:(1) 求解 Lc=bL\mathbf{c}=\mathbf{b},(2) 代回 Ux=cU\mathbf{x}=\mathbf{c}

  • 2.3节 (p.57) Matrix Computations and A=LU\mathbf{A=LU}

在这里,我们直接通过 AA计算 LLUU

A=[l1][u1]+[00000A2]=[l1][u1]+[l2][u2]+[00000000A3]=LUA = \begin{bmatrix} |\\ \mathbf{l}_1\\ | \end{bmatrix} \begin{bmatrix} - \mathbf{u}^*_1 - \end{bmatrix} + \begin{bmatrix} 0 & \begin{matrix} 0 & 0 \end{matrix}\\ \begin{matrix} 0 \\ 0 \end{matrix} & A_2 \end{bmatrix} = \begin{bmatrix} |\\ \mathbf{l}_1\\ | \end{bmatrix} \begin{bmatrix} - \mathbf{u}^*_1 - \end{bmatrix} + \begin{bmatrix} |\\ \mathbf{l}_2\\ | \end{bmatrix} \begin{bmatrix} - \mathbf{u}^*_2 - \end{bmatrix} + \begin{bmatrix} 0 & 0 & 0\\ 0 & 0 & 0 \\ 0 & 0 & A_3 \end{bmatrix} = LU

Figure 13: A的递归秩1矩阵分离

要计算 LLUU,首先分离出由 AA的第一行和第一列组成的外积。余下的部分为 A2A_2。递归执行此操作,将 AA分解为秩1矩阵之和。

Figure 14: 由LU重新构造A

LL乘以 UU来重新构造 AA则相对简单。

6.3 A=QR\mathbf{A=QR}

A=QRA=QR是在保持 C(A)=C(Q)\mathbf{C}(A) = \mathbf{C}(Q)的条件下,将 AA转化为正交矩阵 QQ

  • 4.4节 Orthogonal matrices and Gram-Schmidt (p.165)

在格拉姆-施密特正交化中,首先,单位化的 a1\mathbf{a}_1被用作 q1\mathbf{q}_1,然后求出 a2\mathbf{a}_2q1\mathbf{q}_1正交所得到的 q2\mathbf{q}_2,以此类推。

q1=a1/a1\mathbf{q}_1 = \mathbf{a}_1/||\mathbf{a}_1||
q2=a2(q1Ta2)q1,q2=q2/q2\mathbf{q}_2 = \mathbf{a}_2 - (\mathbf{q}_1^T \mathbf{a}_2)\mathbf{q}_1 , \quad \mathbf{q}_2 = \mathbf{q}_2/||\mathbf{q}_2||
q3=a3(q1Ta3)q1(q2Ta3)q2,q3=q3/q3\mathbf{q}_3 = \mathbf{a}_3 - (\mathbf{q}_1^T \mathbf{a}_3)\mathbf{q}_1 - (\mathbf{q}_2^T \mathbf{a}_3)\mathbf{q}_2, \quad \mathbf{q}_3 = \mathbf{q}_3/||\mathbf{q}_3||

或者你也可以写作 rij=qiTajr_{ij} = \mathbf{q}_i^T \mathbf{a}_j

a1=r11q1\mathbf{a}_1 = r_{11}\mathbf{q}_1
a2=r12q1+r22q2\mathbf{a}_2 = r_{12}\mathbf{q}_1 + r_{22} \mathbf{q}_2
a3=r13q1+r23q2+r33q3\mathbf{a}_3 = r_{13}\mathbf{q}_1 + r_{23} \mathbf{q}_2 + r_{33} \mathbf{q}_3

原本的 AA就可以表示为 QRQR:正交矩阵乘以上三角矩阵。

A=[q1q2q3][r11r12r13r22r23r33]=QRA = \begin{bmatrix} | & | & |\\ \mathbf{q}_1 & \mathbf{q}_2 & \mathbf{q}_3\\ | & | & | \end{bmatrix} \begin{bmatrix} r_{11} & r_{12} & r_{13}\\ & r_{22} & r_{23}\\ & & r_{33} \end{bmatrix} = QR
QQT=QTQ=IQ Q^T=Q^T Q = I

Figure 15: A=QR

AA的列向量就可以转化为一个正交集合:QQ的列向量。AA的每一个列向量都可以用 QQ和上三角矩阵 RR重新构造出。

图释可以回头看 P1。

6.4 S=QΛQT\mathbf{S=Q \Lambda Q^T}

所有对称矩阵 SS都必须有实特征值和正交特征向量。特征值是 Λ\Lambda的对角元素,特征向量在 QQ中。

  • 6.3节 (p.227) Symmetric Positive Definite Matrices
S=QΛQT=[q1q2q3][λ1λ2λ3][q1Tq2Tq3T]S = Q \Lambda Q^T = \begin{bmatrix} | & | & |\\ \mathbf{q}_1 & \mathbf{q}_2 & \mathbf{q}_3\\ | & | & | \end{bmatrix} \begin{bmatrix} \lambda_1 \\ & \lambda_2 & \\ & & \lambda_3 \end{bmatrix} \begin{bmatrix} - \mathbf{q}_1^T -\\ - \mathbf{q}_2^T -\\ - \mathbf{q}_3^T - \end{bmatrix}
=λ1[q1][q1T]+λ2[q2][q2T]+λ3[q3][q3T]= \lambda_1 \begin{bmatrix} |\\ \mathbf{q}_1\\ | \end{bmatrix} \begin{bmatrix} - \mathbf{q}_1^T - \end{bmatrix} + \lambda_2 \begin{bmatrix} |\\ \mathbf{q}_2\\ | \end{bmatrix} \begin{bmatrix} - \mathbf{q}_2^T - \end{bmatrix} + \lambda_3 \begin{bmatrix} |\\ \mathbf{q}_3 \\ | \end{bmatrix} \begin{bmatrix} - \mathbf{q}_3^T - \end{bmatrix}
=λ1P1+λ2P2+λ3P3= \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3
P1=q1q1T,P2=q2q2T,P3=q3q3TP_1=\mathbf{q}_1 \mathbf{q}_1^T, \quad P_2=\mathbf{q}_2 \mathbf{q}_2^T, \quad P_3=\mathbf{q}_3 \mathbf{q}_3^T

Figure 16: S=Q Λ Q^T

一个对称矩阵 SS通过一个正交矩阵 QQ和它的转置矩阵,对角化为 Λ\Lambda。然后被分解为秩一投影矩阵 P=qqTP=qq^T的组合。这就是谱定理。

注意,这里的分解用到了P4。

S=ST=λ1P1+λ2P2+λ3P3S=S^T = \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3
QQT=P1+P2+P3=IQQ^T = P_1 + P_2 + P_3 = I
P1P2=P2P3=P3P1=OP_1 P_2 = P_2 P_3 = P_3 P_1 = O
P12=P1=P1T,P22=P2=P2T,P32=P3=P3TP_1^2 =P_1=P_1^T, \quad P_2^2=P_2=P_2^T, \quad P_3^2=P_3=P_3^T

6.5 A=UΣVT\mathbf{A=U \Sigma V^T}

  • 7.1节 (p.259) Singular Values and Singular Vectors

包括长方阵在内的所有矩阵都具有奇异值分解(SVD)。A=UΣVTA=U \Sigma V^T中,有 AA的奇异向量 UUVV。奇异值则排列在 Σ\Sigma的对角线上。下图就是”简化版”的SVD。

Figure 17: A=U Σ V^T

你可以发现,VVRn\mathbb{R}^nATAA^T A的特征向量)的标准正交基,而 UURm\mathbb{R}^mAATAA^T的特征向量)的标准正交基。它们共同将 AA对角化为 Σ\Sigma。这也可以表示为秩1矩阵的线性组合。

A=UΣVT=[u1u2u3][σ1σ2][v1Tv2T]=σ1[u1][v1T]+σ2[u2][v2T]=σ1u1v1T+σ2u2v2TA = U \Sigma V^T = \begin{bmatrix} | & | & |\\ \mathbf{u}_1 & \mathbf{u}_2 & \mathbf{u}_3\\ | & | & | \end{bmatrix} \begin{bmatrix} \sigma_1 \\ & \sigma_2 \\ & & \end{bmatrix} \begin{bmatrix} - \mathbf{v}_1^T -\\ - \mathbf{v}_2^T - \end{bmatrix} = \sigma_1 \begin{bmatrix} |\\ \mathbf{u}_1\\ | \end{bmatrix} \begin{bmatrix} - \mathbf{v}_1^T - \end{bmatrix} + \sigma_2 \begin{bmatrix} |\\ \mathbf{u}_2\\ | \end{bmatrix} \begin{bmatrix} - \mathbf{v}_2^T - \end{bmatrix} = \sigma_1 \mathbf{u}_1 \mathbf{v}_1^T + \sigma_2 \mathbf{u}_2 \mathbf{v}_2^T

注意:

UUT=ImU U^T = I_m
VVT=InV V^T = I_n

图释见P4。

总结和致谢

我展示了矩阵/向量乘法的系统可视化与它们在五种矩阵分解中的应用。我希望你能够喜欢它们、通过它们加深对线性代数的理解。

Ashley Fernandes 在排版时帮我美化了这篇论文,使它更加一致和专业。

在结束这篇论文之前,我要感谢 Gilbert Strang 教授出版了《Linear Algebra for Everyone》一书。它引导我们通过新的视角去了解线性代数中这些美丽的风景。其中介绍了当代和传统的数据科学和机器学习,每个人都可以通过实用的方式对它的基本思想进行基本理解。矩阵世界的重要组成部分。

参考文献与相关工作

  1. Gilbert Strang(2020), Linear Algebra for Everyone, Wellesley Cambridge Press.
    http://math.mit.edu/everyone

  2. Gilbert Strang(2016), Introduction to Linear Algebra, Wellesley Cambridge Press, 5th ed.
    http://math.mit.edu/linearalgebra

  3. Kenji Hiranabe(2021), Map of Eigenvalues, An Agile Way(blog)
    https://anagileway.com/2021/10/01/map-of-eigenvalues/

    Figure 18: 特征值图

  4. Kenji Hiranabe(2020), Matrix World, An Agile Way(blog)
    https://anagileway.com/2020/09/29/matrix-world-in-linear-algebra-for-everyone/

    Figure 19: 矩阵世界

线性代数 math Linear Algebra Algorithms