呃啊！好难写！至于字母混乱，您多担待。通过之前的论述，我们知道，一个矩阵的逆矩阵就是一个线性变换的逆变换。比如一个向量$x$，经过矩阵$A$所表示的线性变换，变成$Ax$，那么再经过$A^{-1}$，就又变回了$x$。若方阵$A$可逆，那么$A^{-1}$表示与$A$相反的线性变换。向量$x$经过$A$变成$Ax$后，再经过$A^{-1}$，就能恢复为原向量：$$ A^{-1}(Ax)=x. $$同样，对任意输出向量$b$，都有$$ A(A^{-1}b)=b. $$在应用中，我们通常会求解$Ax=b$这种方程组，那么逆矩阵就相当于做了这样一件事，给定了一个线性变换$A$和变换后的向量$b$，我们要找到变换之前的向量$x$，那么一个矩阵如果没有逆矩阵，找到这个$x$就很难，我们需要想一些办法。原向量有哪几种情况？Takeaway:没有逆矩阵，那么目标向量，要么对应无穷多个原向量，1个原向量，要么对应0个原向量。为什么会没有逆矩阵？很显然，因为矩阵把很多方向压到了零向量，这样就相当于把一些维度的信息压没了，就导致没有办法逆过来运算。那么这个时候，对于不同的$b$，$x$有哪几种情况？其实只有两种情况——要么有无穷多个原向量，要么压根找不到一个合理的原向量。一个$b$对应无穷多个$x$，是由压没维度导致的。例如：$$ A= \begin{pmatrix} 1&0\\ 0&0 \end{pmatrix}. $$那么$$ A \begin{pmatrix} x_1\\x_2 \end{pmatrix} = \begin{pmatrix} x_1\\0 \end{pmatrix}. $$对于$$ b= \begin{pmatrix} 1\\0 \end{pmatrix}, $$有无穷多个解：$$ x= \begin{pmatrix} 1\\t \end{pmatrix}, \qquad t\in\mathbb R. $$因为第二个方向被完全压没了，而一个方向上有无穷多个向量，那么很显然，原向量就有无穷多个。一个$b$没有对应的$x$，还是上面的矩阵：$$ A \begin{pmatrix} x_1\\x_2 \end{pmatrix} = \begin{pmatrix} x_1\\0 \end{pmatrix}. $$它只能产生第二个分量为0的向量。所以，对于$$ b= \begin{pmatrix} 1\\1 \end{pmatrix}, $$方程$$ Ax=b $$根本无解。各种广义逆就是用不同的方法处理这两个问题。1-逆：如果$b$确实来自某个$x$，那就从多个原像中选一个。MP逆：若有多个解，就选长度最小的；若没有精确解，就找最接近的解。Drazin逆：它把线性变换分成可逆的长期部分和最终消失的幂零部分，只反转可逆部分。1-逆Takeaway:如果一个向量确实对应一个或多个原向量，1-逆就负责找出来，或者随便找一个。如果难以处理，不妨试试把矩阵简化，然后再另行处理。1-逆，通常记作$A^{(1)}$，要满足：$$ AA^{(1)}A=A $$也就是，如果$$ b=Ax, $$那么$$ A A^{(1)} b=b. $$所以 $A^{(1)}b$ 是方程$$ Ax=b $$的一个解。也就是说，如果一个$b$确实对应一个或多个原向量$x$，就找出来，或者随便找一个。「哎呀你这家伙，这哪有意思啊？那书上不是告诉你怎么算了吗？你这蠢货怎么不讲！」有读者肯定要说啦。哈哈，您别急，且听下一部分分解！1-逆的一个计算方法是这样的，设$A\in \mathbb{R}^{m\times n}_r(r>0)$，且有$S\in \mathbb{R}^{m\times m}_m$和$n$阶置换矩阵$P$，使得：$$ SAP=\begin{bmatrix}\mathbf{I_r} & \mathbf{K}\\ \mathbf{O} & \mathbf{O}\end{bmatrix}=M $$其中，$K\in \mathbb{R}^{r\times (n-r)}$，则对任意$L\in \mathbb{R}^{(n-r)\times (m-r)}$，下面这个是$A$的1-逆：$$ X=P\begin{bmatrix}\mathbf{I_r} & \mathbf{O}\\ \mathbf{O} & \mathbf{L}\end{bmatrix}S=PNS $$这个方法就是，通过初等变换把$A$变化成一个易于处理的形式，然后再考虑构造1-逆。首先，我们来看矩阵$M$，它其实把矩阵$A$拆成了两个部分，左上角是一个$r$阶单位阵，这是因为前$r$个方向是独立、有效的方向，后面的零行表示输出空间中有$m-r$个方向永远无法被$A$产生；$K$表示后面那些列可以由前$r$个主元列线性表示。然后，我们为$M$构造一个1-逆，也就是$N$阵，根据分块矩阵的知识，很好验证。现在$N$是$M$的1-逆，但我们需要的是原矩阵$A$的1-逆。由$$ M=SAP $$得到$$ A=S^{-1}MP^{-1}. $$定义$$ X=PNS. $$那么$$ \begin{aligned} AXA &= \left(S^{-1}MP^{-1}\right) (PNS) \left(S^{-1}MP^{-1}\right)\\ &= S^{-1}MNMP^{-1}. \end{aligned} $$因为$$ MNM=M $$所以$$ AXA = S^{-1}MP^{-1} =A. $$因此$X$就是$A$的一个1-逆。前两个Penrose条件Takeaway:条件一保证“映回输出没有错”，条件二保证“选出的反向结果自身一致”。有一类广义逆矩阵叫做Moore-Penrose逆矩阵，也可以叫做MP逆，那么一个矩阵如果是MP逆，可以记作$A^+$，就需要满足四个Penrose条件，分别是：$$ AA^+A=A $$$$ A^+AA^+=A^+ $$$$ (AA^+)^T=AA^+ $$$$ (A^+A)^T=A^+A $$对于第一条，实际上就和1-逆满足的条件一样，其实，正因为1-逆满足Penrose条件的第一条，才叫做1-逆。那么第一条实际上说的就是，如果一个向量有与之对应的原向量，那么逆矩阵必须要能够找到一个有效的原向量。第二条看起来就是把逆矩阵和原矩阵交换了位置，但是几何含义上略有出入，我们知道，$b$对应的一个原向量，可以用$A^+b$来表示，那么第二个式子两边同时右乘$b$：$$ A^+AA^+b=A^+b $$那么左边表示，我有一个原向量$A^+b$，那么在经历$A$变换和$A^+$变换之后，仍然还是原向量，直观含义就是，$A^+$选出的解必须是稳定的，不能反复“反推”之后又得到另一个解。这相当于条件一保证“映回输出没有错”，条件二保证“选出的反向结果自身一致”。根据条件一二，实际上可以推出：$$ (AA^+)^2=AA^+AA^+=AA^+ $$那么实际上，$AA^+$就是一个投影矩阵。突发新闻：投影矩阵Takeaway:投影矩阵要满足幂等性，输入输出空间应是一个空间。正交投影能得到与原向量，最近的向量。投影矩阵相当于把向量投影到某个空间上，那么通常满足幂等性，也就是$P^2=P$，幂次相当于多次投影，但是在第一次投影之后，已经在某个空间了，后面的投影就不会对向量进行改变了。考虑这样一个矩阵：$$ P= \begin{pmatrix} 1&0\\ 0&0 \end{pmatrix}. $$对向量$$ x= \begin{pmatrix} 3\\ 2 \end{pmatrix}, $$有$$ Px= \begin{pmatrix} 3\\ 0 \end{pmatrix}. $$这相当于把$$ \begin{pmatrix} 3\\ 2 \end{pmatrix} = \begin{pmatrix} 3\\ 0 \end{pmatrix} + \begin{pmatrix} 0\\ 2 \end{pmatrix} $$分成水平部分和竖直部分。投影保留了水平部分，删除了竖直部分。投影一定要求，输入输出在同一个空间内，只是删除了一些方向的信息，比如一个向量$x=u+v$，投影之后可能只保持了$u$方向的信息，如果$u$和$v$正交，那么投影矩阵就叫做正交投影矩阵。我们上面的例子就是一个正交投影矩阵，删除了$y$轴方向的信息。那么正交投影矩阵有什么性质？它能找到与原向量，最近的向量。为什么？因为点到直线的最短距离，是垂线段。没听懂？设要把向量$b$投影到子空间$V$，投影结果记为$$ p=Pb. $$正交投影的定义保证：$$ p\in V $$并且误差$$ r=b-p $$垂直于整个子空间$V$：$$ r\perp V. $$现在从$V$中任意选择另一个向量$v$。比较谁离$b$更近。我们有$$ b-v=(b-p)+(p-v). $$其中：$b-p=r$垂直于$V$；$p-v\in V$，因为$p,v\in V$。所以$$ b-p\perp p-v. $$根据勾股定理：$$ \|b-v\|^2 = \|b-p\|^2+\|p-v\|^2. $$因为$$ \|p-v\|^2\geq 0, $$所以$$ \boxed{\|b-v\|^2\geq\|b-p\|^2}. $$也就是：$$ \boxed{\|b-v\|\geq\|b-p\|}. $$因此，$p=Pb$是子空间$V$中离$b$最近的向量。只有当$$ v=p $$时等号成立，所以最近点还是唯一的。后两个Penrose条件Takeaway:条件三解决了目标向量没有原向量与之对应的情况，找到了一个向量，使之变换后与目标向量足够接近。条件四解决了目标向量没有原向量与之对应的情况，找到了一个向量，范数最小。通过前两个Penrose条件，我们已经能得到$AA^+$是一个投影矩阵，那么很明显，投影矩阵要求输入输出在同一个空间中，那么$AA^+$相当于把向量$b$投影到$A$能够产生的空间中，亦即投影到$\text{Col}(A)$空间中。因为对于一个向量$b$，它可能不在$\text{Col}(A)$中，但是$AA^+b$一定在$\text{Col}(A)$中。那么条件三要求投影矩阵是对称的——也就是说$AA^+$是一个正交投影矩阵。这解决了一个很大的问题——目标向量没有原向量与之对应的情况。如果这样，我们就对于一个无法精确产生的向量，先把它沿垂直方向投影到能够产生的空间中。最后一个Penrose条件有点棘手，直观来看，我们只知道，$A^+A$是一个正交投影矩阵，但是这有什么用呢？那么这里我需要要求读者死记硬背下一个结论，那就是，这个矩阵将向量投影到：$$ \operatorname{Col}(A^+) = \operatorname{Col}(A^T) = \operatorname{Row}(A) = \operatorname{ker}(A)^\perp $$这个空间，也就是$A$的零空间的正交补空间，这个空间和零空间的方向彼此垂直。举个例子，设$$ A=\begin{pmatrix}1&1\end{pmatrix}. $$它把二维向量变成一个数：$$ A\begin{pmatrix}x_1\\x_2\end{pmatrix}=x_1+x_2. $$例如原向量是$$ x=\begin{pmatrix}3\\1\end{pmatrix}, $$那么$$ Ax=3+1=4. $$这里有个问题：看到4，能恢复出原来的$(3,1)$吗？不能，因为以下向量经过$A$都得到4：$$ \begin{pmatrix}4\\0\end{pmatrix}, \quad \begin{pmatrix}3\\1\end{pmatrix}, \quad \begin{pmatrix}2\\2\end{pmatrix}, \quad \begin{pmatrix}1\\3\end{pmatrix}. $$更一般地，所有解都是$$ \begin{pmatrix}2+t\\2-t\end{pmatrix}. $$把它拆开：$$ \begin{pmatrix}2+t\\2-t\end{pmatrix} = \begin{pmatrix}2\\2\end{pmatrix} + t\begin{pmatrix}1\\-1\end{pmatrix}. $$其中$$ A\begin{pmatrix}1\\-1\end{pmatrix}=1-1=0. $$所以$(1,-1)^T$是$A$的零空间方向。这意味着：无论在$(1,-1)$方向上增加多少，输出都不会改变。那么，第四条约束就表明，我要把这些零空间方向，全置0。详细一点说，设任意输入向量 $x$ 都可以唯一分解为$$ x=x_{\perp}+x_0, $$其中$$ x_{\perp}\in \ker(A)^\perp, \qquad x_0\in \ker(A). $$因为$x_0$属于零空间，所以$$ Ax_0=0. $$于是$$ Ax=A(x_{\perp}+x_0)=Ax_{\perp}. $$也就是说，经过$A$后，$x_0$这部分的信息彻底消失了。只看到$Ax$，无法知道原来的$x_0$是多少，既然不知道，我就把它设成0，那么这就有一个好处——能够找到范数最小的解。为什么？令$$ x_*=A^+b, \qquad \hat b=Ax_*=AA^+b. $$因为$AA^+$是到$\operatorname{Col}(A)$的正交投影，所以$$ b-\hat b\perp\operatorname{Col}(A). $$对于任意$x$，都有$Ax\in\operatorname{Col}(A)$，因此$$ b-Ax=(b-\hat b)+(\hat b-Ax), $$且等号右边的两个向量互相正交。根据勾股定理，$$ \|b-Ax\|^2 = \|b-\hat b\|^2+\|\hat b-Ax\|^2 \geq \|b-\hat b\|^2. $$因此$$ x_*=A^+b $$是一个最小二乘解。接下来，设$y$是任意另一个最小二乘解。由于列空间中的最近点是唯一的，所以$$ Ay=\hat b=Ax_*. $$于是$$ A(y-x_*)=0, $$即存在$z\in\ker(A)$，使得$$ y=x_*+z. $$另一方面，$$ x_*=A^+b\in\ker(A)^\perp. $$所以$x_*\perp z$，从而$$ \|y\|^2 = \|x_*+z\|^2 = \|x_*\|^2+\|z\|^2 \geq \|x_*\|^2. $$只有当$z=0$ 时取等号。因此$$ \boxed{ A^+b = \arg\min \left\{ \|x\|: x\in\arg\min_y\|Ay-b\| \right\}. } $$即$A^+b$是所有最小二乘解中唯一的最小范数解。
奇异值分解之所以厉害，之所以常用，是它将变换拆成了旋转-缩放-旋转三个步骤，在缩放的过程中，能够找到对形状改变最大的方向，从而舍弃一些不重要的方向。笔者在这一节会讲一些奇异值分解的应用，如果能给读者带来一点灵感，一点启发，再好不过了。朝花夕拾：酉相似与酉等价Takeaway:酉相似是酉等价一个特例。两个矩阵酉等价，表明一个形状经过两个矩阵的线性变换之后，形状是一样的，只是有了旋转/翻转。在矩阵论的几何理解：矩阵转置与酉相似一文中，我写道：酉相似的定义是，若两个矩阵$A$与$B$酉相似，就相当于存在一个酉矩阵$U$，使得：$$ A=U^*BU $$$U^*$表示$U$的共轭转置，不过我们主要讨论实数域，那么就是正交相似，存在一个正交矩阵$Q$，使得：$$ A=Q^TBQ $$这个就很好理解了，先把矩阵换到一套新的标准正交基上，也就是$Q$变换，然后在这组基下描述线性变换，也就是$B$，随后转到常用的坐标轴下，也就是$Q^T$。那么酉等价——我们讨论实数域情况，也就是正交等价——其实就是对于两个矩阵$A$和$B$，存在两个正交矩阵$Q$和$P$，使得：$$ A=Q^TBP $$其实这个公式的意思也很简单，矩阵$A$代表的变换，相当于我们先选择一组坐标系，也就是$P$变换，然后在这组坐标系下描述一下线性变换，也就是$B$，然后再换到一个坐标系下，也就是$Q^T$。当然这个过程是不改变形状的，比如一个半径为1的圆形，经过$A$和$B$的变换，都会变成同样的形状，比如一个长轴2，短轴0.5的椭圆，二者的差别无非就是旋转的角度不同罢了。那么这样的矩阵关系，就称作酉等价。酉相似是酉等价的一个特例，代表输入输出的坐标系都是同一个，酉等价则是输入和输出可以分别用不同的坐标变换。旧酒新瓶：奇异值分解Takeaway:奇异值分解将变换拆成了旋转-缩放-旋转三个步骤。奇异值分解就是将矩阵$A\in\mathbb{R}^{m\times n}_r(r>0)$，分解为：$$ A=U^T\begin{bmatrix}\Sigma & 0\\ 0 & 0\end{bmatrix}V $$的形式，其中$U$和$V$是正交矩阵，$\Sigma$是一个对角矩阵。这就相当于把一个变换拆成了旋转-缩放-旋转三个步骤。这里有一个东西叫做奇异值，奇异值就是矩阵$\Sigma$对角的元素，为什么？奇异值是什么，奇异值在书上是这么记的：设矩阵$A\in\mathbb{R}^{m\times n}_r(r>0)$，那么这个矩阵的奇异值就是$A^TA$特征值开根号。为什么？这里可以通过范数的知识来理解，我们要求缩放，就要求矩阵在一些特别方向上的缩放程度，我们通过$V$换了一组基，那么就要在这些方向上考量缩放程度。缩放，就必须是单纯的缩放，不应该掺入旋转，那么很显然，这些方向就是矩阵$A$特征方向……吗？对于这样一个矩阵：$$ \begin{bmatrix} 1 & 10 \\ 0 & 1 \end{bmatrix} $$它特征值都是1，这表明，有两个方向，变换前后方向不变，缩放倍数是1，但是这不是我们的需求，因为单位圆在这个变换中会被拉成一个很长的椭圆状图形。特征值在这里没有很好地反映“最大拉伸程度”。这里读者一定要区分：特征值关心的是某些方向是否保持方向不变；奇异值关心的是所有方向中真正的长度拉伸。那么，我们的问题就变成了：矩阵在一些方向上对向量缩放了多少倍？落到形式上，就是：$$ N=\frac{||Ax||}{||x||} $$看分子的平方：$$ ||Ax||^2=(Ax)^T(Ax)=x^TA^TAx $$那么很显然，$A^TA$的特征值就是就是伸缩长度的平方，所以开个根号，就变成了伸缩长度。具体问题：最小二乘Takeaway:奇异值分解通过把问题进行拆分，给出了最小二乘解的通用公式。最小二乘问题是什么？其形式是给定$Ax=b$，当方程没有精确解的时候，求一个$x$，让其尽可能接近真实解：$$ x=\min_x||Ax-b||^2 $$最小二乘怎么起作用？假设我们求取了$A$的奇异值分解：$$ A=U\Sigma V^T $$那么最小二乘问题变成：$$ \min_x \|U\Sigma V^Tx-b\|^2 $$因为$U$是正交矩阵，不改变长度，所以可以在范数里面左乘$U^T$：$$ \|U\Sigma V^Tx-b\| = \|\Sigma V^Tx-U^Tb\| $$令：$$ y=V^Tx,\qquad c=U^Tb $$于是问题变成：$$ \min_y \|\Sigma y-c\|^2 $$也就是说，原来复杂的最小二乘问题：$$ \min_x \|Ax-b\|^2 $$被 SVD 变成了：$$ \min_y \|\Sigma y-c\|^2 $$而 $\Sigma$ 是对角矩阵，所以这个问题被拆成了一堆互不干扰的一维问题。具体来看，如果：$$ \Sigma= \begin{bmatrix} \sigma_1 & 0 & 0\\ 0 & \sigma_2 & 0\\ 0 & 0 & \sigma_3 \end{bmatrix} $$那么：$$ \Sigma y= \begin{bmatrix} \sigma_1 y_1\\ \sigma_2 y_2\\ \sigma_3 y_3 \end{bmatrix} $$所以最小二乘变成：$$ \sigma_i y_i \approx c_i $$如果 $\sigma_i\neq 0$，最自然的解就是：$$ y_i=\frac{c_i}{\sigma_i} $$最后再变回原来的坐标：$$ x=Vy $$所以：$$ x=V\Sigma^+U^Tb $$其中 $\Sigma^+$ 是把非零奇异值取倒数之后转置得到的矩阵。于是：$$ \boxed{x=A^+b} $$这里的：$$ A^+=V\Sigma^+U^T $$这个东西是啥？如果您学过相关内容，您就知道——这是伪逆矩阵呀！也叫做Moore-Penrose 伪逆。所以 SVD 和最小二乘最直接的关系是——SVD 给出了最小二乘解的通用公式。具体问题：词向量Caution:这一节用大模型代劳了，懒……orzTakeaway:SVD通常用于降维。词向量是什么？词向量是自然语言处理的关键步骤，将词语转换成向量的形式，那么一个词语的词向量需要满足一个非常直觉的想法——如果两个词的上下文分布相似，那么它们的行向量就相似。假设我们有很多文本，比如：I like deep learning I like machine learning deep learning is powerful我们可以先统计每个词和哪些上下文经常一起出现。比如构造一个矩阵：$$ X \in \mathbb{R}^{|\mathcal V|\times |\mathcal C|} $$其中：行：词；列：上下文；$X_{ij}$：词 $i$ 和上下文 $j$ 的共现强度。比如：$$ X_{\text{deep},\text{learning}}=10 $$表示 deep 和 learning 在窗口里共同出现了 10 次。这个矩阵可能长这样：$$ X= \begin{bmatrix} & \text{learning} & \text{machine} & \text{powerful} & \cdots\\ \text{deep} & 10 & 1 & 5 & \cdots\\ \text{machine} & 8 & 9 & 1 & \cdots\\ \text{cat} & 0 & 0 & 0 & \cdots\\ \text{dog} & 0 & 0 & 0 & \cdots \end{bmatrix} $$如果两个词的上下文分布相似，那么它们的行向量就相似。比如：“cat” 和 “dog” 经常出现在 eat、run、pet、animal 附近；“deep” 和 “machine” 经常出现在 learning、model、neural 附近。所以原始的词向量其实可以直接看作矩阵 $X$​ 的一行。问题是：这个向量太高维、太稀疏、噪声也多。很多次可能就出现1次，词表可能很大，那么我们可以用 SVD 降维。对矩阵 $X$ 做奇异值分解：$$ X=U\Sigma V^T $$其中：$U$：词这一侧的主方向；$\Sigma$：每个方向的重要程度，也就是奇异值；$V$：上下文这一侧的主方向。然后只保留前 $k$ 个最大的奇异值即可：$$ X\approx U_k\Sigma_k V_k^T $$几何角度的理解就是原始情况下，每个词是一个很长的上下文向量。比如：$$ \text{cat}=[0,3,0,10,1,0,\dots] $$它们很高维，而且很多位置是 0。SVD 做的事是：找出这些词向量变化最大的几个方向，然后把词投影到这些方向上。也就是说：$$ \text{高维稀疏上下文空间} \longrightarrow \text{低维稠密语义空间} $$所以 SVD 词向量本质上是：共现矩阵的低秩语义表示。
【Rethink Math】矩阵论的几何理解：线性方程组与满秩分解
这一节没什么难的，牢记秩的几何意义就可以啦！Hermite标准形 a.k.a. 行最简形Takeaway:行最简形实际上是为了在空间中找一组最简单的基。行最简形，保留了原来的零空间，但把描述这个空间的方程换成最简单的形式。正因为行最简形的作用，也就利于我们求解方程组。行最简形是什么？就是对一个矩阵$A$，如果它的秩是$r$，通常记作$A\in \mathbb{R}^{m\times n}_r(r>0)$那么对它进行初等行变换，使其变成矩阵$H$，使其满足：前$r$行每一行至少一个非零元，且第一个非零元是1，下面全是0。若$H$中第$i$行第一个非零元素1位于第$j_i$列，那么：$j_1<j_2<\cdots<j_r$$H$的$j_1,j_2,\cdots,j_r$列为$I_m$的前$r$列。那么$H$就是$A$的行最简形。举个例子吧，比如一个矩阵的行最简形是$$ \begin{bmatrix} 1 & 0 & -1\\ 0 & 1 & 2\\ 0 & 0 & 0 \end{bmatrix} $$它对应的方程是：$$ x_1-x_3=0 $$$$ x_2+2x_3=0 $$所以我们立刻能看出：$$ x_1=x_3,\quad x_2=-2x_3 $$令 $x_3=t$，得到解空间：$$ x=t \begin{bmatrix} 1\\ -2\\ 1 \end{bmatrix} $$这说明行最简形，把复杂的约束变成了主变量+自由变量的形式。至于这俩东西是什么，我们暂且按下不表。突发新闻：线性方程组Takeaway:求线性方程组的解就是求，经过线性变换后，落到目标向量的所有向量。有读者又要说啦，「你都没讲线性方程组，怎么就扯到了主变量」！好好好，现在讲——「你这蠢货，怎么现在才讲线性方程组！」——没招，行最简形和线性方程组是息息相关的，但是在矩阵论教材里，它的确被安排到了这里。Whatever，首先我们来想一想，线性方程组是什么？很简单，是这个样子：$$ Ax=b $$读过我前几篇blog/知乎文章的读者肯定会说——「嗨！我知道，这无非就是求经过线性变换后，落到目标向量的所有向量嘛！」没错！You are absolutely right!那么我们知道，线性方程组会出现三种情况——无解、唯一解和无穷多解。实际上，这对应着线性变换的三种性质，且听我慢慢道来。如果线性变换前后，没有压缩到零向量的向量，那么根据线性变换的性质，线性变换后的一个向量$b$，只对应着变换前的一个向量$x$。如果读者觉得难以理解，那就想，没有压缩到零向量的向量，那么说明空间只是扭曲了，原来的向量如果不同，那么变换之后的向量也不同——这个可以通过反证法证明。这就是说如果变换前后秩没变，就表明空间没有压缩到零向量的向量，方程组就一个解。如果线性变换前后，有压缩到零向量的向量，那么我们知道，线性变换会把一条线上的向量全压缩到零向量——这就表明，在这些方向上，随意变换，不会影响变换后的位置——这个解就是非齐次的解。但是，在没有压缩到零向量的方向上，是不可以随意变换的——这个解就是一个特解。这就是说如果变换前后有压缩到零向量的向量，方程组在压缩至死的方向上可以随意移动，但是在其他方向上不可以，所以有无穷多解，且解的结构是齐次的解+一个特解。那么无解又是什么情况？如果$b$不在$\text{Col}(A)$里，那显然是无解的，这就是为什么——当方程组的系数矩阵的秩小于方程组增广矩阵的秩的时候，方程组无解。因为$b$有了一个列空间没有的方向，压根走不到那里。回归主线：主变量与自由变量Takeaway:自由变量的个数确定解空间的维数。为了让自由变量生成的方向仍然留在解空间里，主变量必须配合出来的坐标。值得一提的是，自由变量和主变量之间，不是完全无关的，而是先对自由变量进行一个确定，然后根据自由变量的取值，主变量被限制到一个值上。举个例子。假设一个方程组化简之后变成了：$$ x_1+x_2+x_3=0 $$那我们就可以把它写成：$$ x_1=-x_2-x_3 $$现在问题来了，三个变量里面，谁可以自由选择？显然，$x_2$和$x_3$可以随便给。比如你让：$$ x_2=1,\quad x_3=2 $$那$x_1$就没得选了，它必须是：$$ x_1=-3 $$否则这个点就不在方程规定的空间里了。所以这里的$x_2,x_3$就是自由变量，$x_1$就是主变量。自由变量体现了解空间的维数，对于我们的例子，系数矩阵秩为1，那么就有两个自由变量，这表示解空间的维数就是2，也就是一个平面。读者在这里不要混淆解空间和列空间的概念，解空间实际上就是零空间，所以是自由变量确定了解空间的维数。满秩分解Takeaway:满秩分解的几何含义就是，把一个低秩的线性变换，拆成输入维度->秩维度->输出维度的变换。我们知道，矩阵$A\in\mathbb{R}^{m\times n}_r$表示一个线性变换，是一个从$n$维到$m$维的线性变换，但是当这个矩阵的秩是$r$的时候，是什么情况呢？假设这个$r$小于$n$和$m$，这个时候就表明$A$的输出实际上没办法填满整个输出空间，因为输出空间是$m$维的。变换只能填满这个空间的一个子空间，这个子空间的维度数是$r$。那么这个映射实际上可以拆分为两个，一个映射是从$n$维到$r$维，另外一个映射就是从$r$维到$m$维。用矩阵表示，也就是：$$ A=F^{m\times r}G^{r\times n} $$难以理解……我们举个例子！对于下面这个变换：$$ A=\begin{bmatrix} 5 & 0 \\ 2 & 0 \end{bmatrix} $$在空间上的含义就是把二维空间的向量，变到(0,0)-(5,2)这条直线上，它的满秩分解是：$$ A=\begin{bmatrix} 5 & 0 \\ 2 & 0 \end{bmatrix}=\begin{bmatrix}5\\ 2\end{bmatrix}\times\begin{bmatrix}1 & 0\end{bmatrix}=FG $$我们知道变换要从右向左看，那么矩阵$G$表示什么呢？很显然，这个变换就是把二维向量的x轴分量提取出来，这样就完成了核心的降维变换。那么$F$阵的作用就是把提取出来的x轴分量，放到(0,0)-(5,2)这条线上。这其实就是把所有向量的x轴分量提取出来，然后放到一条歪着的数轴上面。当然，满秩分解也不唯一，比如上面的分解可以写成：$$ A=\begin{bmatrix} 5 & 0 \\ 2 & 0 \end{bmatrix}=\begin{bmatrix}1\\ \frac{2}{5}\end{bmatrix}\times\begin{bmatrix}5 & 0\end{bmatrix}=F'G' $$这个含义就是把二维向量的x轴提取出来，扩大5倍，然后放到(0,0)-(1,2/5)这条直线上。
【Rethink Math】矩阵论的几何理解：施密特正交化与QR分解
正交是一个非常好的性质呀！Householder矩阵Takeaway:Householder矩阵实际上描述了关于某个超平面的镜面反射。关于某平面的镜面反射，就是保持垂直分量不变，而平行分量反向。首先给出Householder矩阵的定义，同样，我们只考虑实数域上的事情。设$u\in \mathbb{R}^n$是单位向量，那么称：$$ H=I-2uu^T $$为Householder矩阵或初等反射矩阵。当时笔者学到这里，就想，为什么这样一个公式，就表示了一个反射变换呢？实际上，书中给的这个呈现形式非常烂，笔者认为合理的定义方法是：如果一个向量$u\in \mathbb{R}^n$是一个非零向量，那么称：$$ H=I-2\frac{uu^T}{u^Tu} $$为Householder矩阵或初等反射矩阵。为什么这个形式好？或许有些读者已经看出来了——减号后面这一项，不就是投影公式嘛！考虑两个非零向量$x$和$v$，要求$x$在$v$方向上的投影，也就是求：$$ x_{\parallel}=\alpha v $$那么：$$ x_{\perp}=x-x_{\parallel} $$亦即：$$ v^Tx_{\perp}=0 $$亦即：$$ v^T(x-\alpha v)=0 $$亦即：$$ v^Tx-\alpha v^Tv=0 $$也就是：$$ \alpha=\frac{v^Tx}{v^Tv} $$哈哈，也就有了我们的投影公式：$$ x_{\parallel}=\frac{v^Tx}{v^Tv}v $$因为分子是一个标量：$$ x_{\parallel}=\boxed{\frac{vv^T}{v^Tv}}x $$框起来的不就是我们Householder矩阵减号右边的东西吗？这个东西就叫做投影矩阵，能够把向量变换为向量在$v$上的投影向量。那我们想要求一个向量关于$v$的反射，该怎么做？这里有一个事情，需要告诉各位读者，一点便通——关于某平面的镜面反射，就是保持垂直分量不变，而平行分量反向！这一点笔者不再展开，读者自己画画图就能理解。那么当Householder作用到一个向量上，就应该满足我们镜面反射的性质：$$ Hx=x-x_{\parallel}-x_{\parallel} $$那么代入上面的结果，不正是我们Householder矩阵的定义嘛！Gram-Schmidt正交化Takeaway:Gram-Schmidt正交化就是把一组不正交的向量，变成为一组互相垂直的单位向量。笔者在本科阶段，被这个东西折磨了很久，太难算了！不过笔者已经上完了所有的课程，现在可以静下心来想想这个东西到底是什么？Schmidt正交化方法的流程是这样的，对于向量组$\alpha_1,\alpha_2,\cdots,\alpha_n$，构造新的正交单位向量组：$$ \beta_1=\frac{\alpha_1}{||\alpha_1||} $$$$ \beta_2=\alpha_2-(\beta_1^T\alpha_2)\beta_1 $$$$ \cdots $$$$ \beta_n=\alpha_n-(\beta_1^T\alpha_n)\beta_1-(\beta_2^T\alpha_n)\beta_2-\cdots-(\beta_{n-1}^T\alpha_n)\beta_{n-1} $$熟悉吗？这里减去的每一项，不就是$\alpha_n$在之前各个方向上的投影吗？没错，不断选择向量，把它在前面所有已选择向量上的平行分量都减掉，最后就彼此垂直了。也就是说：新向量就是旧向量减掉它在其他方向上的投影。QR分解Takeaway:QR分解是在给一组斜的列向量重新建立一个正交坐标系。读者可能会问：「嘿，你这家伙，为什么到现在才讲Schmidt正交化？」哈哈，没错，因为Gram-Schmidt正交化本质上就是对矩阵做QR分解；也可以这么说，QR分解实际上就是Gram-Schmidt正交化的矩阵表示。QR分解就是把一个矩阵$A$，分解为一个正交矩阵$Q$和一个上三角矩阵$R$的乘积的形式。我们对矩阵$A$所有的列向量进行Gram-Schmidt正交化，就会生成一个正交矩阵$Q$，那么我们将矩阵都看作列向量的形式：$$ A=[a_1,a_2,\cdots,a_n]=[q_1,q_2,\cdots,q_n]M $$这里$M$我们暂时还不知道是什么，不过可以确定的是，我们当前做了这样一件事，我们把矩阵$A$——可以看作向量组的一种排列形式——变换到了一组标准正交基上。那么$M$就应该是列向量的坐标。那么根据Gram-Schmidt正交化方法的公式我们知道：$$ a_i=k_{1i}q_1+k_{2i}q_2+\cdots+k_{ii}q_i $$这无非是把公式进行移项而已。那么很明显$M$是一个上三角矩阵，每一个元素满足：$$ M_{ij}=q_i^Ta_j $$
【Rethink Math】矩阵论的几何理解：矩阵分解之三角分解
这一章节是我觉得整个矩阵论中，最有趣的章节之一。三角矩阵的几何意义Takeaway:三角矩阵的几何含义就是按照坐标顺序，逐层发生的线性变换，也可以看作缩放变换与剪切变换的结合。二维情况下，如果对角线的元素为1，那么上三角矩阵代表一个水平剪切的线性变换，而下三角矩阵就代表着一个竖直剪切的线性变换。三角矩阵可以看作缩放变换和剪切变换的加和，那么只有缩放变换部分改变有向面积的大小，故行列式只与对角元素有关。在讲矩阵分解的第一种分解——三角分解之前，我想简要地谈一谈三角矩阵的几何意义。实际上，在我们之前谈论Jordan标准型的时候，就已经大概说明了三角矩阵的含义：首先假设我们有了一个$n$阶Jordan块，那么我们的基要满足什么样的条件——对于每一个基，向量在上面的变换，都可以看作该方向上的缩放和在前一个方向的平移分量。那么三角矩阵的几何含义其实就相当于Jordan块的一种推广，三角矩阵代表着一种按照坐标顺序，逐层发生的线性变换。您可以把它看作一种有单向依赖的结构。口说无凭，我们来举几个例子吧，首先是上三角矩阵，假设一个上三角矩阵为：$$ U=\begin{bmatrix} a & b\\ 0 & d\\ \end{bmatrix} $$当它作用在一个向量上：$$ U \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} ax+by\\ dy \end{bmatrix} $$也就是说：$$ x'=ax+by $$$$ y'=dy $$这里我们看到，新的纵轴坐标，是只由原来的纵轴坐标决定的；而新的横轴坐标，就要由原来的横轴坐标和纵轴坐标一起来决定。也就是说，如果原来的向量，高度越高，那么它对于变换之后，横轴的分量的影响可能就要稍微大一些。如果$a=d=1$，那么这个上三角矩阵就是一个典型的水平剪切矩阵，点的高度不变，但是横轴的分量却要发生改变。我们再来举一个下三角矩阵的例子，假设一个下三角矩阵为：$$ L = \begin{bmatrix} a & 0 \\ c & d \end{bmatrix} $$当它作用到一个向量的时候，比如：$$ L \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} ax\\ cx+dy \end{bmatrix} $$也就是说：$$ x'=ax $$$$ y'=cx+dy $$这次结构反过来了，这里，横轴方向的分量只由原来的横轴分量决定，但是纵轴方向的分量却由原来的横轴分量和纵轴分量一起决定。同样的，当$a=d=1$，那么向量的水平坐标不变，而竖直方向上的坐标就改变了，这就形成了一个竖直剪切矩阵。那么三角矩阵也可以看作一个对角矩阵和另一个矩阵的加和，那么对角矩阵就代表单纯的缩放变换，那么另一个矩阵就代表着不同方向上的剪切操作。那么这个看法也可以很好地帮助我们理解三角矩阵的行列式的值，只与对角线元素有关——因为只有缩放变换会影响有向面积的大小，而剪切变换不会。三角分解Takeaway:由于三角矩阵把变量拆成了有序依赖的形式，所以便利于我们求解线性方程组。LDR分解相当于把矩阵拆成了剪切-缩放-剪切的一个变换链。对于我们之前的例子，比如上三角的例子，我们发现，这很利于我们求解线性方程组，当我们求解：$$ Ux=b $$的时候，我们只需要求出$x$的最后一个元素，然后逐层往回代入即可。因为对于上三角矩阵，我们把$x$的求解，拆成了$x_1\to x_2\to \cdots\to x_n$的形式，这里的箭头代表依赖关系。我们把本来没有顺序、没有规律的变量，变成了一种有序的依赖关系。当然，很多时候，我们求解的线性方程组是：$$ Ax=b $$这里面的矩阵$A$往往不是一个上三角矩阵或者下三角矩阵，为了依靠三角矩阵的便利性，我们可以将矩阵$A$拆成两个三角矩阵：$$ A=UL $$那么当我们求解：$$ Ax=b $$的时候，就相当于求解：$$ ULx=b $$那么我们先求解：$$ Uz=b $$然后再求解：$$ Lx=z $$即可。那么把一个矩阵拆成两个三角矩阵的方法，就叫做矩阵的三角分解。三角分解这部分通常会涉及到三个分解方法：Crout分解、Doolittle分解和LDR分解，前两个分解笔者觉得没有太大意思，主要来谈一谈LDR分解。LDR分解是把一个矩阵分解为下三角矩阵（对角为1）、对角矩阵和上三角矩阵（对角为1）的乘积，那么这个分解的几何意义其实非常直观，先做一个上三角矩阵的变换，也就是水平剪切，再做一个缩放，最后再进行一个竖直剪切。LDR分解把缩放和剪切变换分隔开来，不像Crout分解和Doolittle分解那样，把两个变换揉在了一起。这样的一种——把一个变换拆成若干变换的组合——思想，我们在后面的SVD分解中依然会遇到。三角分解到这里还没结束，因为我们还没有涉及到如何给一个矩阵做三角分解，如何将其分解。我们对一个矩阵做三角分解的步骤通常是这样的，解方程：$$ Ax=b $$的时候，我们先用高斯消元法，把系数矩阵变成一个上三角矩阵，也就是：$$ TA=U $$于是：$$ A=T^{-1}U=LU $$其实在这个过程中，高斯消元本身就是对矩阵的变换，进行一个坐标层面的拆解。因为，高斯消元法用前面的行向量去剪切后面的行向量，使得后面的行在某些坐标方向上的分量变成0，从而得到一个坐标层面的依赖关系。
推荐在知乎阅读此文。说实话我不知道怎么称呼这一章节比较好，这一章在教材中的标题就是「矩阵分析」。这一篇文章笔者写得有点吃力，高数和大物笔者学得真是不太好，如果哪里出现了错误，请指出！矩阵序列Takeaway:矩阵序列代表一串线性变换在逐渐逼近某个线性变换。如果只研究实数域，那么矩阵序列的概念是这个样子的：设有$\mathbb{R}^{m\times n}$中的矩阵序列$\{A^{(k)}\}$，其中$A^{(k)}=(a_{ij}^{(k)})_{m\times n}$，如果$\lim_{k\to+\infty}a_{ij}^{(k)}=a_{ij}(i=1,2,\cdots,m;j=1,2,\cdots,n)$，则称矩阵序列$\{A^{(k)}\}$收敛于$A=(a_{ij})_{m\times n}$，或称$A$是矩阵序列$\{A^{(k)}\}$的极限，记作：$$ \lim_{k\to+\infty}A^{(k)}=A $$不收敛的矩阵序列称为发散。如果读者静下心来观察这个概念，就会很轻易地通过，我在第一篇文章中给出的矩阵的理解方法，来理解这个概念：在实现中，我把标量、向量和张量都看作一个一维数组，它们的形状也就是说，它们是且仅是数字的组合方式而已。没错，矩阵序列在代数上，似乎可以看成是 $mn$ 个标量数列的共同收敛。当然，这样理解有点太没意思了，不够直观，我们想想几何层面，矩阵序列代表什么含义？贯穿我们整个系列始终的一个概念便是矩阵的概念——矩阵代表线性变换。在很多时候，我们的向量可能要经过多次的变换，只有一次变换，可能并不足以满足我们的要求。比如优化算法，需要经过多次矩阵的乘法。Whatever，这些过程可以抽象为：$$ x_{k+1}=Ax_k $$那么也就是：$$ x_k=A^kx_0 $$几何上就是研究这样一件事情：一个向量，经过多次相同的线性变换后，会到哪个位置？这通常代表矩阵内部元素有幂级数的场景。举个例子，比如一个简单的缩放变换：$$ A=\begin{bmatrix}\frac{1}{2} & 0 \\ 0 & \frac{1}{3} \end{bmatrix} $$那么，我们就可以通过矩阵序列的形式，研究多次经过这个变换后，会到哪个位置，我们就可以把微积分那一套拿过来：$$ A^{(k)}=\begin{bmatrix}(\frac{1}{2})^k & 0 \\ 0 & (\frac{1}{3})^k \end{bmatrix}\to \begin{bmatrix}0 & 0 \\ 0 & 0 \end{bmatrix} $$也就是说，经历无穷多次变换后，所有的变量都会变成零向量。这也很好理解，不停缩小，不停缩小，最后就是零向量。矩阵序列完全可以通过微积分那一套来理解，笔者的理解就是，把高等数学的知识拿到了矩阵层面。矩阵级数Caution:呃啊，笔者高等数学级数这一部分学得很差，这一节可能会出现很多错误。Takeaway:矩阵级数代表许多线性变换的累积效果。矩阵级数的收敛，代表矩阵级数代表的变换，最终效果很稳定，而绝对收敛，代表矩阵每一步的影响也有限。首先我们来举一个例子，来表示为什么矩阵级数是有必要的。一个比较恰当的例子是在反馈系统中，系统状态$x$可能是外部输入$b$和内部反馈$Ax$组成的，反馈可能产生很多次，那么就产生了：$$ x_k = (I+A+A^2+A^3+\cdots)b $$这里就产生了类似级数的结构。还有什么有意思的东西呢……嘿，有啦！我们知道在高等数学里是有绝对收敛的概念的，那么到矩阵级数这里也是通用的，矩阵级数收敛，不仅要求$\sum_{k=1}^\infty A_k$收敛，也要求$\sum_{k=1}^\infty ||A_k||$收敛，那么这是什么意思？矩阵级数收敛，很简单，那就是一个向量，经过所有线性变换后，得到的结果是稳定的。那么绝对收敛呢？我们知道，矩阵范数的几何含义是对单位向量最多能造成多大的位移/拉伸效果。那么，如果矩阵范数的级数也收敛，就表示，每一步的缩放倍数，或者说是影响程度，的加和，也是有限的。举个例子，一个收敛且绝对收敛的例子：$$ A_k=\frac{1}{2^k}I $$那么：$$ \sum_{k=1}^\infty A_k=\sum_{k=1}^\infty \frac{1}{2^k}I $$它代表着沿着标准基方向，不断缩小一半，所有这样的影响的加和，这当然是很稳定的，也就是普通收敛，而且每一步也不会产生特别大的影响，所以也是绝对收敛。那么我们举一个普通收敛，但不绝对收敛的例子：$$ A_k=\frac{(-1)^k}{k}I $$这个级数普通收敛，这是因为正负方向的变化不断抵消，但是每一层变换本身的影响强度，加起来实际上是无限大的。按照高等数学的知识，如果只是条件收敛，那么它的收敛可能依赖于特定排列方式，本质上更脆弱。绝对收敛可以理解为无限多个线性变换的总效果不仅存在，而且这个总效果不是靠偶然抵消维持的，而是因为每一层影响本身足够小。矩阵微积分Caution:呃啊，算了……笔者高等数学学得都很差。我也不保证这一节不出现很多错误。Takeaway:矩阵的微积分研究线性变换如何随着时间连续变化。函数矩阵的微分对一个向量的变换，表示这个向量点的瞬时速度。函数矩阵的积分表示一段时间上变换效果的累积。矩阵序列代表矩阵的强度不断增大，那么矩阵的微积分就代表矩阵的变换随着时间的变化。矩阵的微积分是以函数矩阵为基础的，其定义为：以变量$t$的函数为元素的矩阵$A(t)=(a_{ij}(t))_{m\times n}$称为函数矩阵，其中$a_{ij}(t)$都是变量$t$的函数。笔者很喜欢把这个$t$理解为time，也就是时间。这样理解，我们就可以从几何上理解函数矩阵——这个矩阵所代表的线性变换是随时间变化而变化的。那么函数矩阵的微分，就是给当前的时间一个微小的扰动，观察整个线性变换的微小变化。如果一个线性变换$A$，作用到向量$x$上，就有：$$ \mathrm{d}y=\mathrm{d}Ax $$也就是：$$ y'(t)=A'(t)x $$这个公式的几何含义就是固定向量$x$被不断变化的线性变换$A(t)$作用时，这个点被线性变换本身的变换拖拽，形成的瞬时运动速度。为了让问题更有趣一些，我们研究一下当向量$x$也随时间变化，即$x(t)$的时候，又是什么含义，根据相应的公式，我们有：$$ y'(t)=A'(t)x(t)+A(t)x'(t) $$那么前一项就是$A(t)x(t)$这个点的瞬时速度，而后一项则表示向量本身运动的速度，经过线性变换之后，在输出空间的速度。一个是线性变换本身改变了，形成了一个速度，另一个则是输入本身变了，形成的速度。积分就很简单，就是一段时间上线性变换的效果的累积，这里有一个比较有趣的公式：$$ (\int A(t)\mathrm{d}t)x=\int A(t)x\mathrm{d}t $$这个公式表示这个总线性变换对$x$的作用，等于所有瞬时变换对$x$的作用结果的连续叠加。应用：一阶常系数微分方程组Takeaway:一阶常系数微分方程组在空间中定义了一个速度场。一阶常系数微分方程组常写成如下形式：$$ \frac{\mathrm{d}x}{\mathrm{d}t}=Ax $$这个公式笔者浅显的理解是：用线性变换$A$，把当前的位置$x$，映射为此刻的速度$x'(t)$。那么这个公式实际上是在空间中定义了一个速度场，对于二维的情况，那么$x'(t)$的两个分量就分别代表$x$轴和$y$轴方向的速度。那么常系数为什么要常系数呢？那是因为，常系数表明这个速度场本身不随时间变化——同一个位置有不同的速度，不同的运动规律，但是每个点的运动规律是固定的。如果我们把这个速度、运动规律画出来，就得到了控制理论里面的一种东西——相图。笔者并不是控制系的，所以不多展开。
范数这里感觉轻松不少，因为范数天然就是和几何联系在一起的。理解范数要比理解矩阵转置的含义要简单得多。向量范数Takeaway:向量范数用于衡量向量的广义长度以及向量之间的距离。向量范数必须满足的性质，在一定程度上可以体现为满足距离本身的直觉、尊重向量的数乘运算、尊重向量的加法运算。$p$-范数中的$p$不断增大，代表向量最大分量的权重不断提升。在日常情况下，距离似乎是个很浅显的东西，如果想要测量哈尔滨到北京的距离，只需要在地图上测量一下两点之间的线段长度，然后根据比例尺缩放即可，这相当于我们测量了一个从哈尔滨到北京的向量的长度。如果我们坐直达飞机，那么距离很有可能和这个向量的长度差不多，可是，我们想要从哈尔滨步行走到北京，要走的距离往往远大于这个测量的长度。这两个城市之间有高山，有河流，我们很多时候没有办法直接朝着目标的方向行走。那么，也就是说——对于不同的实际情况，我们可能需要不同的测量距离的方式。落到抽象的矩阵论的角度也是一样，两个向量之间的距离，可能需要多种的测量方法，那么不同的测量方法，就叫做不同的范数。我们拿一个抽象向量来举例子：$$ \vec{x}=(x_1, x_2, \cdots, x_n) $$当然，一个向量的长度也可以看作零向量和这个向量之间的距离，whatever，对于我们的例子，一个很朴素的测量长度/距离（下面统称为距离）的方法就是应用欧几里得距离，也是2-范数的计算方法：$$ ||x||_2=\sqrt{x_1^2+x_2^2+\cdots+x_n^2} $$它就相当于我们开头所说的「直线距离」，比如二维空间中的一个向量$(3,4)$，其直线长度就是5，也就等于这样计算出来的欧几里得距离。这当然是一种衡量距离的方法，如果我们只能沿着坐标轴行走，那么就又有一种衡量距离的办法：$$ ||x||_1=|x_1|+|x_2|+\cdots+|x_n| $$这就是曼哈顿距离，也就是1-范数的计算方法。这个方法也相当于测量向量在不同基上的分量，把所有的分量加和作为最终的长度。到这里，我们只需要理解——范数是一种衡量距离的方法。当然，衡量距离的方法有很多，不过需要满足几个性质：非负性：距离不能是负的，且只有零向量长度为0，亦即$||x||\geq 0$。齐次性：距离的衡量必须兼容向量的数乘运算，向量拉伸了多少倍，那么范数也需要变为原来的多少倍。亦即$||\lambda x|| = |\lambda|\cdot||x||$。三角不等式：直接走不会比绕路更长，亦即$||x+y||\leq ||x|| +||y||$。笔者对于这三点的理解分别是——满足距离本身的直觉、尊重向量的数乘运算、尊重向量的加法运算。对于第三点，如果分开走比直接走还要短，那么这不算是一种距离，而是一种很奇怪的度量方法。满足这三点的度量，就可以称作一个向量范数。那么，不同的向量范数，落在几何层面，又是什么样子呢？同样，我们以二维空间的不同范数形状来理解。范数本身没有形状，我们要想理解它，就只能从等值线的角度入手，对于1-范数，也就是我们之前提到的曼哈顿距离，它在几何角度是这个样子：图里展示了标准二维xOy坐标系下，1-范数为4的等值线，它是一个菱形。对于2-范数，长这个样子：它是一个圆，哈哈，这很符合我们日常的理解，从一点算起，距离相等的地方，就形成了一个球，那么二维空间就是一个圆，很合理！值得一提，这些形状都是凸的，这也是三角不等式在几何层面的体现！敏锐的读者可能看出来了，这两个范数有一些共性，计算方法貌似差不多，都是先给分量提升次数，然后加和统一开方。的确如此，不同的范数，可以总结为$p$-范数，其公式为：$$ ||x||_p=\sqrt[p]{x_1^p+x_2^p+\cdots+x_n^p},p\geq 1 $$这个公式不仅覆盖了我们的1-范数和2-范数，也覆盖了后面无限多个范数，那么这些范数在几何中又是什么样子？就请读者自行画画看，3-范数是一个圆角方形。随着$p$无限变大，当$p$趋向于无穷的时候，这个形状会逐渐偏向于一个正方形——这个正方形所代表的范数我们就叫做$\infty$-范数，当然，你也可以从$||x||_p$的公式中推出它的定义：$$ ||x||_\infty = \max_i|x_i| $$无穷范数的含义很简单——给出向量最大的分量。到这里，很多文章的讨论就结束了，当然笔者认为到这里是不太够的，凭什么$\infty$-范数就是取出最大分量？其实这部分理解已经隐含在之前$p$变大的描述中了，$p$不断变大，等值线不断外推，注意到什么了吗……不过，这里笔者的理解是数值性的：$$ ||x||_p=\sqrt[p]{x_1^p+x_2^p+\cdots+x_n^p},p \geq 1 $$我们的公式中，首先给每个分量提升次数，那么在这个过程中，如果$p$越大，那么大分量对于整体加和的占比就更大，那么整体开方的值就更偏向于大分量一边。笔者的理解是，$p$控制着范数如何在大分量和小分量之间权衡，越大就更偏向于大分量，反之就偏向于小分量。那么有读者会问，$p$能不能是小数呢，可不可以小于1呢？小数当然可以，但是小于1不可以，因为小于1，等值线会形成凹图形，这个时候就不满足三角不等式了。矩阵范数Takeaway:矩阵范数衡量了线性变换对向量长度拉伸的最大倍数。矩阵范数是从向量范数诱导出来的，一个$p$-范数诱导出来的矩阵范数就是：$$ ||A||_p=\max \frac{||Ax||_p}{||x||_p} $$也可以记作：$$ ||A||_p=\max_{||x||_p=1}||Ax||_p $$也就是说，先取所有$p$-范数为1的向量，然后求矩阵$A$所代表的线性变换，最长能把向量拉到多长。那么2-矩阵范数就是，把2-向量范数为1的等值线——单位圆，拉伸为一个椭球，长轴的长度。实际上一个衡量方式，只需要满足下面四条就可以称作矩阵范数：非负性。齐次性。三角不等式，亦即$||A+B||\leq ||A||+||B||$，这和向量范数的三角不等式含义不一样。这里是表明，两个线性变换叠加之后，整体最大作用的强度不会超过它们各自最大作用强度的总和。相容性，亦即$||AB||\leq ||A||\cdot||B||$，这个含义就是，两个变换连续作用后的强度，不超过两个最大放大倍数的乘积。因为两个变换所拉伸到最长的向量，不一定是一个方向的。这里的三四点需要做一点区分，三角不等式的加法是说，两个变换做叠加；而相容性的含义是，先做$B$变换，再做$A$变换。二者的含义需要读者理解一下，我很难完全用语言讲透彻。最后，谈谈几个范数的简便运算公式吧。对于1-矩阵范数，有一个很简单的计算公式：$$ ||A||_1=\max_j\sum_{i=1}^j|a_{ij}| $$也就是找所有列的绝对值和中最大的那个，这很好理解，我们只有单位长度为1的向量，那么我们需要把这1单位权重全部放到“最强的一列”上。二维情况下，1-范数等值线是个以标准基为对角线的菱形，那么变换之后也是一个菱形，以更换后的基——矩阵的列向量——为对角线，那么最大的方向就在最长的列向量上。对于2-范数，暂且按下不表，等后续二次型章节再展开。对于无穷范数：$$ ||A||_1=\max_i\sum_{i=1}^j|a_{ij}| $$注意到$\max$下面的下标改变了吗？这是因为，经过矩阵作用后，我们看变换结果在横向或纵向上最多能伸出去多远。而输出的每个坐标都是由矩阵的一行决定的——这是矩阵乘法的定义——所以最后得到最大行和。
【Rethink Math】矩阵论的几何理解：矩阵转置与酉相似
推荐在知乎阅读此文矩阵的转置是我认为最难以从几何上理解的线性代数的概念之一。矩阵论的很多内容就是实数域上的概念到复数域上的推广，我想，我只需聚焦于实数域上的概念即可。矩阵的转置Takeaway:矩阵的转置就是把测量方向当作变换方向。测量方向就是等值线的法线方向，就是等值线变换最快的方向。在研究矩阵的转置的几何意义之前，我们先来看一下矩阵乘法到底做了一件什么事情。我们依旧考虑二维方阵的情况：$$ \begin{bmatrix}1 & 0 \\ 1 & 1\end{bmatrix}\times \begin{bmatrix}3\\ 4\end{bmatrix} = \begin{bmatrix}3 \\ 7\end{bmatrix} $$等号右边两个数分别代表什么含义？上面的这个3实际代表向量(3,4)在(1,0)方向上的点积，下面的这个7就代表向量(3,4)在(1,1)方向上的点积。通过之前的讨论我们知道，A向量与B向量的点积不一定等于投影长度，而是相当于A向量在B向量方向上的投影乘以B向量的长度，并且点积的操作是满足交换律的。那么这样的每一行，就形成了一种我们看待向量在不同方向上点积的一种视角，我们不妨把行向量所代表的方向看作一种测量方向。那么矩阵的转置就相当于把测量方向变作了变换方向。我们再进一步考察一下测量方向这个东西到底是什么。我们接着举一个例子：$$ \begin{bmatrix}1&2 \\ 3 & 4\end{bmatrix}\times\begin{bmatrix}a \\ b\end{bmatrix}=\begin{bmatrix}a+2b \\ 3a+4b\end{bmatrix} $$这里我们其实规定了两个测量方向：$$ y_1 = a+2b\\ y_2 = 3a+4b $$在这些方向上，会形成等值线，当$y_1$和$y_2$分别固定的时候，我们就有了等值线。它们的含义是：在同一条直线上的所有点，经过某一行向量的测量后，得到的值都相同。那么行向量是什么方向呢？很显然就是等值线变化最快的方向，也就是等值线的法线方向。行向量是和这些等值线是垂直的。所以，矩阵的每一行都可以这样理解：它画出了一套等值线。行向量本身那就是这套等值线的法线方向，也就是测量值增长最快的方向。总结一下，原矩阵在变换基向量的基础上，也暗含了用行向量在输入空间中铺设等值线这样一个变换；转置矩阵则把这些等值线的法线方向拿出来，当作新的生成方向来组合。事到如今，我们知道了转置在方阵上的含义，那么非方阵呢？其实只需要一句话来表示——行向量在输入空间里，负责测量输入；列向量在输出空间里，负责生成输出。一个瘦高矩阵，输入维度少，输出维度多，可以理解对输入做更多次测量，得到更多个数字。反之也可以同理理解。正交矩阵Takeaway:正交矩阵代表一类不改变长度、角度和形状的线性变换。首先给出正交矩阵的概念，一个正交矩阵记录为$A$，其必满足：$$ A^T=A^{-1} $$这一类矩阵的理解，我想直接通过其表示的变换展开，逐步推出它的定义。正如Takeaway里面说的，正交矩阵正交矩阵代表一类不改变长度、角度和形状的线性变换——也就是只有旋转和镜面反射变换。那么，这就表示，坐标系的网格，在变换前后，形状、大小是完全不变的。那么，这要求选择的基必须要长度都为1，必须也要都彼此垂直，假设我们的基是$p_1,p_2,\cdots,p_n$，那么我们就必须要有：$$ p_i\cdot p_j=0,i\neq j, \forall i,j\in[1,n] $$以及：$$ \text{Length}(p_i)=1,\forall i\in[1,n] $$这里我们还没引入范数的概念，那么就先用Length来表示吧，其实Length就是向量的坐标值每一个分量的平方和开根号。那么根据$A$矩阵所代表的线性变换类型，每一个等值线的法线方向，也是彼此垂直的，亦即——该矩阵的行向量也是彼此正交的。通过转置矩阵的含义我们知道，行向量是测量方向，是等值线增长最快的方向，那么其长度就是增长的速度，在标准坐标系下，你会发现每条坐标轴上的变化量，都是单位1的，那么该矩阵的行向量长度也是1，也就是说，$A$矩阵的转置矩阵$A^T$，也代表了一类不改变长度、角度和形状的线性变换。这么写，我自己看都难以理解，我们形式化表达一下，假设：$$ A=(p_1,p_2,\cdots,p_n) $$那么这就相当于把标准坐标系的第一个轴挪到$p_1$，第二个轴挪到$p_2$，……。每一个轴都和其他轴垂直，每一个轴上的单位刻度都是1。好，我们随便放一个向量：$$ Ax = x_1p_1+x_2p_2+\cdots+x_np_n $$那么每一个向量的长度是：$$ (x_1p_1+x_2p_2+\cdots+x_np_n)^2 $$由于不同$p$之间彼此正交，那么最后：$$ (x_1p_1+x_2p_2+\cdots+x_np_n)^2=x_1^2p_1^2+x_2^2p_2^2+\cdots+x_n^2p_n^2=\text{Length}(x) $$所以，这说明$A$不改变长度。类似地，它也不改变向量之间的角度。所以，列向量构成单位正交组的矩阵，几何上就是一类不改变长度和角度的刚性线性变换。那么行向量呢，我们把A变成：$$ A=\begin{bmatrix} - & r_1^T & - \\ - & r_2^T & -\\ \cdots & \cdots & \cdots \\ - & r_n^T & - \end{bmatrix} $$那么：$$ y=Ax= \begin{bmatrix} r_1\cdot x\\ r_2\cdot x\\ \cdots\\ r_n\cdot x \end{bmatrix} $$也就是说，$A$的第$i$个行向量$r_i$，就是第$i$个输出坐标$y_i$的测量方向，对应的等值线/平面/Whatever you call it就是：$$ r_i\cdot x = c $$这组等值线的法线方向就是$r_i$。现在，由于$A$不改变长度和角度，它只是把标准坐标网格旋转或反射了一下。因此，标准坐标系中那些彼此垂直、间距为1的坐标网格，在变换前后仍然应该保持彼此垂直、间距为1。也就是说，$y=Ax$实际上是用$A$的行向量去测量向量$x$，而$A$的行向量又是标准正交基，那么这就相当于求了每个方向上的投影。既然如此，为了还原$x$，就沿着对应方向拼回去就可以了，也就是：$$ x=A^Ty $$那么：$$ y=Ax=AA^Ty $$那么也就是：$$ A^T=A^{-1} $$总结一下：矩阵$A$的行向量给出了各个坐标函数的等值线法线方向。如果这些法线方向构成单位正交基，那么$Ax$就是在一组新的正交坐标轴上测量$x$。而$A^T$的作用，就是把这些测量值沿着对应的法线方向重新拼回原向量。因此，对于正交矩阵来说，转置矩阵天然就是逆矩阵。酉相似Takeaway:酉相似就是用一组新的标准正交基来描述线性变换。酉相似的定义是，若两个矩阵$A$与$B$酉相似，就相当于存在一个酉矩阵$U$，使得：$$ A = U^*BU $$$U^*$表示$U$的共轭转置，不过我们主要讨论实数域，那么就是正交相似，存在一个正交矩阵$Q$，使得：$$ A=Q^TBQ $$这个就很好理解了，先把矩阵换到一套新的标准正交基上，也就是$Q$变换，然后在这组基下描述线性变换，也就是$B$，随后转到常用的坐标轴下，也就是$Q^T$。
【Rethink Math】矩阵论的几何理解：矩阵的相似变换
推荐到知乎阅读此文。到这里我们就正式进入矩阵论的环节了，笔者参考的教材是《矩阵论简明教程（第三版）》。这一部分没有很好的参考资料，几何理解基本上都是笔者自己想的，如果有误，欢迎在评论区指出，我们一起学习，共同进步。相似矩阵Takeaway:相似矩阵描述了同一个线性变换在不同基下的表示。我们之前的视角是，把一个标准基下的向量$\vec{a}$通过变换$A$，变成一个新的向量$\vec{b}$。那么同样的变换$A$，用另外一组基来描述，是什么样子呢？也就是说，我们有一组标准基下的变换方式，要通过某种方法，求它在另一组基下的矩阵表示。举个例子，比如标准基下顺时针旋转90°的变换，用矩阵描述就是$A=\begin{bmatrix}0 & 1\\ -1 &0\end{bmatrix}$，那么标准基下的向量(1,1)，经过变换，就变成了标准基下的(1,-1)——这是我们之前就讨论过的内容，那么假设同样的一个向量，但是选的基不同，其坐标也会改变，比如选取基(1,0)和(1,1)，那么这个向量的坐标就变成了(0,1)，那么最终的变换结果，就应该是(2,-1)，很显然，我们之前的$A$没法在这组基上表示同样的变换，那么我们该怎么求？我们可以这样，我们首先把标准基下的坐标变到另一组基上，那么这一步变换就相当于做了一次线性变换：$$ Px=y $$这里$P$是线性变换，用来把标准基下的坐标转化为另一组基下的坐标，$x$是标准基下的坐标，$y$是另一组基下的坐标，这两个坐标实际上是描述了同一个向量。假设我们已知了另一组基下的相同线性变换的表示方法，记作$B$，那么在另一组基下，这个向量经过变换就变成了$By$，那么我们最后要求的是这个向量在标准基下的坐标，所以需要把基再变回来，就得到了$P^{-1}By$，那么又因为$Px=y$，所以这个向量最终变为了标准基下的$P^{-1}BPx$向量，这个变换和标准基下的$A$变换实际执行了同一个效果，那么我们就称$A$和$B$相似，也就是：$$ Ax=P^{-1}BPx $$相似对角化Takeaway:相似对角化也就是把一个矩阵所代表的线性变换，表达为另一组基下的缩放变换。相似对角化要求一个矩阵的线性无关的特征向量的数目，和阶数相等。相似对角化的对角矩阵为特征值组成，两个矩阵分别由特征向量变换得来。在讲相似对角化之前，我们先想想对角矩阵做了一件什么事情。我们依旧从标准坐标系xOy入手，这个坐标系下最常用的一组基是(1,0)和(0,1)，那么对角矩阵$\begin{bmatrix}a & 0 \\ 0 & b\end{bmatrix}$，就相当于把每个向量，x轴的分量，拉伸为原来的$a$倍，y轴方向拉伸为原来的$b$倍。这种变化改变了向量的方向，但也只是把向量的不同方向的长度进行缩放了，这样我们就可以一定程度上简化运算。在相似对角化之前，我们还需要在脑子里装上这样一件事——如果一个变换可以看作在另外一组基下的缩放，那么这个变换满足什么条件？这个条件也就是相似对角化的条件。那么，对于一个矩阵，我们可不可以在另一组基下，进行缩放，再变换回来呢？进行这样一件事，就是对一个矩阵进行相似对角化，即：$$ A = P^{-1}\text{diag}(\cdots)P $$现在问题就来了，我们的这组基该怎么找？如果找到了这组基，每个基方向上的缩放倍数又该如何确定？一个很显然的想法是，我们可以利用特征值和特征向量来完成这件事！因为特征向量是线性变换前后，不变的那些方向，而特征值恰好是缩放的倍数！好的，回到我们之前的问题，特征值和特征向量，满足什么条件，才可以相似对角化？一个很直觉的想法就是——线性无关的特征向量应该足够多，更准确地说，如果$A$是一个$n$阶矩阵，那么我们需要找到$n$个线性无关的特征向量。只有这样，这些特征向量才能组成整个$n$维空间的一组基。如果特征向量不够多，就说明我们找不到一整套坐标轴，使得每条坐标轴在变换之后仍然落在自己原来的方向上。此时这个变换就不能完全解释成“沿若干个方向分别缩放”。比如二维空间，如果只有一个线性无关的特征向量，那么这就说明，只有落在那个特征方向上的向量，才会被单纯缩放；其他方向上的向量会被拖拽、剪切或被进行一些其它的变换，不能作为独立缩放方向。到这里我们也很容易看出一个推论——如果一个矩阵有$n$个互不相同的特征值，那么它一定能相似对角化。这是因为，特征值代表某个方向上的缩放倍数，那么缩放倍数不同，那么方向也一定不同，那么这些特征向量一定是线性无关的。到这里，我们也可以得出相似对角化的计算方法，首先计算出特征向量，然后把特征向量看作新的一组基，然后在这组基上，把每个特征向量对应的特征值当作对角元素构建对角矩阵，这就确定了不同方向上缩放的倍数，最后再把坐标变回标准基下的坐标，就完成了计算。Jordan相似对角化、几何重数与代数重数Takeaway:Jordan块用于对付特征向量不足的情况，它相当于在特征方向上缩放+特征方向附近方向的滑动。Jordan基的选择就是，每一个方向的变化只产生前一个方向的额外分量。几何重数表示该特征值下实际有多少个独立方向可以看作缩放。代数重数表示该特征值理应控制多少个独立方向的缩放。在上一节中，我们说到，如果线性无关的特征向量足够多，那么我们可以把一个矩阵代表的变换看作这些特征向量锁代表的方向上的缩放。那么如果特征向量不够，就没办法进行相似对角化了。但是，缩放操作是极其便利的，那么没法相似对角化，我们可不可以做一些妥协？对相似对角化进行一些改变？能不能达到类似的目标？为了解答这个问题，我们还得重新回看相似对角化做了什么。相似对角化就是把变换拆成了不同方向上的缩放，那么没法相似对角化，就表明在某些方向上，除了缩放，还有其它的变换。我们依旧考虑二维变换的情形，依旧考虑标准基的情形，如果x轴方向能看作缩放，但是y轴无法看作单纯的缩放，这说明什么？这说明y轴方向的变化，引入了x轴的分量，也就是说：$$ A = P^{-1}\text{diag}(\lambda,\lambda)P + c\begin{bmatrix}0 & 1\\ 0 & 0\end{bmatrix} $$细心的读者会发现，这里的对角矩阵对角线元素相等，那这是因为，如果对角线元素不相等，就表明特征值不相等，不同特征值对应的特征向量一定线性无关。特征值相等的那么我们可以把y轴方向的变换，引入x轴的分量，看作这样一种近似的相似对角化：$$ \begin{bmatrix}\lambda & 0 \\ 0 & \lambda\end{bmatrix}\to \begin{bmatrix}\lambda & c \\ 0 & \lambda\end{bmatrix} $$为了方便计算，我们只在x轴引入单位为1的分量，也就是$\begin{bmatrix}\lambda & 1 \\ 0 & \lambda\end{bmatrix}$。So far so good，那么三维的情况呢？如果我们只可以把线性变换看作x轴上的缩放，y和z轴都不可以，那么我们可以构造这样一个矩阵：$$ \begin{bmatrix} \lambda & 1 & 0\\ 0 & \lambda & 1\\ 0 & 0 & \lambda \end{bmatrix} $$这样，每一个轴都在前一个轴的方向上加上一个分量，这样就把一个独立的方向（x轴）和两个不独立的轴（y与z轴）关联起来了。这样，对角线下元素全为0，对角线上一层斜线为1的块，就叫做Jordan块，记作$J$。那么我们的相似对角化，就变成了一种广义的对角化，这种对角化就叫做Jordan相似对角化：$$ A = P^{-1}JP $$到这里，整个故事还没结束，细心的读者可能已经发现整个故事有一个问题——嘿！对于三维的例子，你凭什么假设z轴的变换只产生y轴的分量？如果这个变换也产生x轴的分量，那么第三列第一行不应该也是1？？？没错，这就要引入Jordan相似对角化的计算方法了——的确，某一方向的变换可能产生多个方向上的分量，但是我们可以选择一组基，让每一个方向的变化，只落在前一个维度的方向上，因为在这里，$P$矩阵的构造是很有趣的。首先假设我们有了一个$n$阶Jordan块，那么我们的基要满足什么样的条件——对于每一个基，向量在上面的变换，都可以看作该方向上的缩放和在前一个方向的平移分量，假设这组基为$v_1,v_2,\cdots,v_n$，那么线性变换所代表的Jordan块是$J$，那么这个矩阵的每一列，都代表$A$作用在对应基向量上的结果，那么它表达了这样一个关系：$$ Av_1=\lambda v_1\\ Av_2=\lambda v_2+v_1\\ \cdots $$这组向量就是我们要求的$P$阵的来源，我们需要找到这样一组基，使得每一个方向的变化，只与前一个方向有关。这里，$v_1$是真正的特征向量，而其它的向量则不是普通特征向量，它们叫做广义特征向量。它们的特点是：虽然自己不是单纯被$A$缩放，但是在减掉纯缩放部分之后，会逐级滑向前一个向量。这个向量组的求法，就可以根据Jordan对角化的定义，解线性方程组即可。最后，我们还有一个问题没有解决，就是对于一个矩阵，其Jordan块的组合该怎么确定，比如一个三阶矩阵，有一个特征值，那么我是选择一阶+二阶呢，还是选择三阶呢？我们知道，Jordan块是对于相同特征值的处理方法。一个特征值理应控制的维度数就是其代数重数，如果代数重数为3，就表示理应控制3个维度的缩放，这个时候如果几何重数为1，就表明我们实际只有一个方向上的缩放，那么这个时候，我们就能推导出：理应控制的额外两个维度，实际上是和求出来的单个特征向量有关联的，所以这个时候块数为1，并且我们要补充两个广义特征向量。举个例子，如果四阶矩阵有两个特征值，代数重数分别是1和3，几何重数分别是1，那就是一个一阶Jordan块和一个三阶Jordan块的拼接；如果代数重数是2和2，几何重数分别是1，那就是两个二阶Jordan块的拼接。也就是说，代数重数是指一个特征值理应控制多少个维度的缩放，几何重数表示实际有多少个独立维度的缩放，二者之差就是我们要补足的广义特征向量数。多说一嘴，我们知道几何重数是$A-\lambda I$的零空间的维数，也就是变化之后，哪些方向被压到零向量了，这些向量就是实际有的，独立维度的缩放。对于代数重数的理解，我更倾向于用行列式的几何意义来理解，我们知道行列式是衡量线性变换前后，有向面积/体积/Whatever you call it积的变化倍数，那么一个特征值的次数就表示它控制着多少个维度对于最终变化的贡献，也就是理应控制多少个维度的缩放。总结实际上这本书里还有一个哈密顿-凯莱定理的内容，不过笔者觉得这部分的几何意义，如果明白了特征值和特征向量的含义，就很容易自行理解了。（其实是太懒了，赫赫
线性代数势必要从几何层面理解，否则难以捕捉其妙处。推荐在知乎阅读本文这一部分的内容参考了3B1B的「线性代数的本质」一作品，加入了很多笔者自己的想法。逆矩阵、秩、列空间和零空间Takeaway:矩阵相乘代表线性变换的复合。逆矩阵将某矩阵变换得来的向量，变回标准基。一个空间的维度，就是这个空间中任意一组基所包含的向量个数。矩阵的秩就是指线性变换后的空间的维度。列向量张成的空间就是矩阵的列空间。零空间就是所有被矩阵 $A$ 压到零向量的输入向量组成的空间。列空间是变换保留下来的维度，零空间是变换压没的维度，二者之和为原维度。上期我们说到，矩阵代表的是一种变换，一种基的替换。那么将这种变换变回标准坐标系、标准基的变换，就叫做该矩阵的逆矩阵。我们先不仔细想这句看起来很冗长的话，我们先来考虑简单的情况，也就是——两个矩阵相乘代表什么？举个例子：$$ \begin{bmatrix}2 &0\\ 2&6\end{bmatrix}\times\begin{bmatrix}1&2\\3& 4\end{bmatrix}=\begin{bmatrix}2&4\\ 20&28\end{bmatrix} $$我们依旧认为矩阵代表线性变换，那么两个矩阵相乘，就代表两个变换的复合。举个例子，向量$\begin{bmatrix}1\\ 0\end{bmatrix}$经过等式左右侧的变换，结果是一致的。这里我们通常规定，先经历最右边的变换，再逐步进行左侧的变换，因为我们会通常写作$ABx=y$的形式，那么就先做$B$的变换。那么这样，我们就会发现一种特殊的变换复合，即复合之后相当于什么都没变：$$ \begin{bmatrix}2 &0\\ 2&6\end{bmatrix}\times\begin{bmatrix}\frac{1}{2}&0\\ -\frac{1}{6}& \frac{1}{6} \end{bmatrix}=\begin{bmatrix}1&0 \\ 0 & 1\end{bmatrix} $$那么这对应着，这两个矩阵所代表的线性变换，是彼此互逆的，就称作两个矩阵互为彼此的逆矩阵。也就是说，一个标准基下的向量经过这两次变换之后，还是原来的向量本身。那么为什么行列式等于0的矩阵没有逆矩阵呢？还记得我们上期提到的吗——行列式衡量变换前后有向面积的变化。如果行列式等于0，就表明一个形状在当前维度中没有面积，也就是降维了。很显然，无法通过一个线性变换将一个点变成一条线、一条线变成一个平面——这样的不存在性质导致了行列式为0的矩阵没有逆矩阵。更进一步地讲，一条线变成一个平面，相当于把线上的一个向量，变成了空间中的若干向量，这很显然是不可能通过线性变换做到的。那么我们如何评估降到了多少维呢？通过秩来衡量。我们先不直接触及这个概念，先从几何上考虑一下，降到多少维是什么意思，空间的维度是什么意思？如果是一维，那么说明向量可以在一个方向上自由延展；二维就是向量可以在两个方向自由延展。一个空间的维度，就是这个空间中任意一组基所包含的向量个数。一维空间就是数轴，我们需要一个向量就足以描述这个空间了；二维空间就是平面，两条线确定一个平面，那么我们需要两个向量来描述这个空间，所以是二维。矩阵的秩就是指线性变换后的空间的维度。如果秩为1，就表明变换将一个空间压缩到了一个数轴上；如果是2，就表示变换将空间变成了一个平面上。当我们把矩阵看作列向量的时候，它的秩就是这些列向量中的最大线性无关组的元素个数，也就是在这些列向量中找到一组列向量，它们之间线性无关，并且成员数是能找到的最大的。为什么这两个相等？因为最大线性无关组的成员个数，就表示这些向量最多能够在几个独立方向上产生贡献，表示矩阵变换后的空间最多能够在几个独立方向上延伸——这就是维度的概念。在线性代数的教材上，我们通常会采用阶梯消元法，也就是把矩阵化作行阶梯型，然后通过查非零行的个数获得秩。这是因为，每一行都有一个主元，这个主元代表了变换能够在新的方向肆意延伸。而一个主元对应一个非零行。到这里我们可以继续引入一个列空间的概念，我们将矩阵看作一种变换——把标准基换作矩阵的列向量，那么这些列向量张成的空间就是矩阵的列空间。形式化表达就是任意取一个向量$\vec{x}$，所有可能的$A\vec{x}$的集合，就是列空间了。通俗一点解释，就是原空间的所有向量，都经过$A$矩阵所表示的变换，变换后有一个能够覆盖到的区域，这个区域就叫做列空间：$$ \text{Column}(A)=\{y|Ax=y,\forall x\} $$当然，变换后，可能有很多向量被压缩到了零向量，那么这些输入向量的集合就叫做零空间：$$ \text{Null}(A)=\{x|Ax=0\} $$我们来仔细想一想这两个空间之间的联系。列空间是什么？其实就是变换之后被保留下来的维度，对吧？因为列空间是列向量张成的空间，在这个空间里向量可以自由自在地延展！但是零空间不一样，零空间是被压缩至死的维度，表示一些维度的信息，经过变换之后，消失不见了。那么二者的维度之和，就很显然是原维度了。这便是公式：$$ \dim(\text{Null}(A))=n-\dim(\text{Column}(A)) $$的由来，也就是零空间的维数（压缩至死的维度），等于原空间的维数减去矩阵秩/列空间的维数（保留下来的维度）。点积Takeaway:点积是一种求夹角的运算。3B1B在这里的解释我不是很满意，我觉得点积的几何意义需要从夹角入手。比如我们要考虑两个向量之间的夹角，该怎么算呢？我们考虑二维的过程，设$\vec{a}=AC=(x_1,x_2)$，$\vec{b}=AB=(y_1,y_2)$：这里我们要求$\ang CAB$的大小，记作$\theta$，那么很显然：$$ \cos{\theta}=\frac{\text{Length}(AD)}{\text{Length}(AC)}=\frac{\text{Length}(AD)}{\mid\mid\vec{a}\mid\mid} $$这里的问题就是，$AD$的长度该怎么求？我们使用余弦定理。我们考虑$||a-b||^2$（不想手敲箭头了，原谅我！）：$$ ||a-b||^2=||a||^2+||b||^2-2||a||||b||\cos{\theta}=(x_1-x_2)^2+(y_1-y_2)^2 $$然后展开：$$ ||a-b||^2=x_1^2+y_1^2+x_2^2+y_2^2-2(x_1x_2+y_1y_2) $$化简：$$ x_1x_2+y_1y_2=||a||||b||\cos{\theta} $$所以：$$ \cos{\theta}=\frac{x_1x_2+y_1y_2}{||a||||b||} $$随后，我们把分子规定为点积的形式即可。到这里我们也能明白，为什么点积是满足交换律的，因为实数的乘法本身就是满足交换律的。特征向量与特征值Takeaway:特征向量就是在线性变换前后，相当于原向量进行缩放的向量，缩放倍数即为特征值。在变换的过程中，可能会有一些向量，变换前后指向的方向仍和原向量共现，只是相当于缩放。那么，对于这些向量的运算，就可以简化成向量的数乘，这些向量就叫做特征向量，可以记作$\vec{v_i}$，数乘的倍数就叫做特征值，通常记作$\lambda$，也就是：$$ A\vec{v_i}=\lambda\vec{v_i} $$我们会经常碰见一种情况，就是矩阵有多个相同的特征值，这是什么意思？当然就是矩阵所代表的线性变换，在不同方向上缩放的倍数是一样的啦！总结到这里我们似乎把3B1B的视频里涉及到的大部分内容讲完了。