【Rethink Math】矩阵论的几何理解：一口气把转置讲清楚
最近我躺在床上，翻来覆去想，「这转置到底是什么个含义？利用等值线解释，总感觉差一点东西。」这两天有了一个比较粗糙的想法，「等值线的确是个很取巧、很粗糙的理解方式，感觉有一种更加有趣深入的理解方式！」，这次就来和诸君交流一下。核心思想是——转置的核心性质是$$ \langle Ax,y\rangle=\langle x,A^Ty\rangle. $$这个公式表示，同一个标量测量既可以理解为先用 $A$ 变换输入 $x$，再用 $y$ 测量结果；也可以理解为先用 $A^T$ 将测量规则 $y$ 拉回输入空间，再直接测量 $x$。因此，转置保持的不是向量本身，而是向量与测量规则之间的配对结果。二十年重过南楼：矩阵乘法的两种理解方式考虑矩阵$A$：$$ A= \begin{bmatrix} 2&1\\ -1&3 \end{bmatrix} $$和向量$x$：$$ x=\begin{bmatrix} x_1\\ x_2 \end{bmatrix} $$二者相乘得到：$$ Ax = \begin{bmatrix} 2x_1+x_2\\ -x_1+3x_2 \end{bmatrix} $$我们通常会从列向量的角度看待矩阵的乘法——矩阵的列向量负责生成输出。输入向量中的第一个坐标$x_1$，控制第一列的权重；第二个坐标$x_2$，控制第二列的权重。最终的输出，是矩阵各列的线性组合。也就是：$$ Ax= x_1 \begin{bmatrix} 2\\ -1 \end{bmatrix} + x_2 \begin{bmatrix} 1\\ 3 \end{bmatrix} $$这太自然了，从行角度来理解就不是很自然，我们把矩阵写作行的形式：$$ A= \begin{bmatrix} r_1\\ r_2 \end{bmatrix} $$其中：$$ r_1= \begin{bmatrix} 2&1 \end{bmatrix}, \qquad r_2= \begin{bmatrix} -1&3 \end{bmatrix} $$那么就有：$$ Ax= \begin{bmatrix} r_1x\\ r_2x \end{bmatrix} $$从这个角度看，矩阵的每一行都在对输入向量进行一次测量。第一行读取出输出向量的第一个坐标，第二行读取出输出向量的第二个坐标。这恰恰就是我之前写的文章的结论——行向量在输入空间里，负责测量输入；列向量在输出空间里，负责生成输出。什么是测量呢？我们来好好说说考虑函数：$$ f(x_1,x_2)=2x_1+x_2 $$这个函数看起来没什么特别的，接收一个二维向量，输出一个实数，比如对于一个向量：$$ x^*=\begin{bmatrix} 8\\ 9 \end{bmatrix} $$就能得到：$$ f(x^*_1,x^*_2)=25 $$这个函数特别像我们第一部分说的$r_1x$和$r_2x$，它们并没有把一个向量变成另一个向量，而是从向量中读取出一个数值。而且，矩阵中的这样的行向量的形式，满足线性性质，也就是：$$ f(u+v)=f(u)+f(v) $$以及：$$ f(\lambda u)=\lambda f(u) $$那么很显然，$f$是一个从向量空间到标量域的线性映射。如果把普通向量理解成空间中的箭头，那么协向量可以理解成一把对向量进行测量的尺子。也就是对于给定的向量，我有这样一种测量方式——矩阵的行向量所声明的测量方式——能够给出一个什么样的标量值。这种测量方式在二维平面上，就是等值线，一条条等值线，线的位置和取值有关。向量在空间中移动时：如果沿着等值线移动，测量值不变；如果跨越等值线，测量值发生变化；跨越的刻度越多，测量值变化越大。到这里，我们其实还没有引入任何新的东西，这些东西在我之前的专栏文章中已经说过了。柳下系船犹未稳：测量一定只有一种吗？我们给出了一种测量的方法，这种方法是由矩阵的行向量决定的，每一个行向量决定了一种测量的方法，但是，测量方法貌似不只有这一种，我们可以把所有从向量空间$\mathbb V$到实数域$\mathbb R$的映射，都看作一种测量方法。我们于是得到了一种新的集合：$$ \{f:\mathbb V\to\mathbb R\mid f\text{ 是线性的}\ \} $$这个集合实际上也构成一个向量空间，因为每个元素都满足我们上面提到的线性性质，也就是说，每一个$f$都可以看作一个小向量。这个空间，我们一般称作向量空间$\mathbb V$的对偶空间，我们记作$\mathbb V^*$。我们偶然发现了看待坐标的一个新角度，设$\mathbb V$有一组基：$$ e_1,e_2,\dots,e_n. $$任何向量都能写成：$$ v=x_1e_1+x_2e_2+\cdots+x_ne_n. $$定义一组测量方法（测量方法可以叫做协向量）：$$ e^1,e^2,\dots,e^n, $$使得：$$ e^i(e_j)= \begin{cases} 1,&i=j,\\ 0,&i\ne j. \end{cases} $$这组测量方法称为对偶基。它们的作用极其直接，就是对基做测量，很简单的测量：$$ e^1(v)=x_1, \qquad e^2(v)=x_2, \qquad \dots, \qquad e^n(v)=x_n. $$啊哈，到这里我们明白了「行向量在输入空间里，负责测量输入；列向量在输出空间里，负责生成输出」是什么意思——基向量负责生成：$$ v=\sum_i x_i e_i. $$对偶基负责读取：$$ x_i=e^i(v). $$能几日：协向量的拉回设$\mathbb V$和$\mathbb W$是两个向量空间，并有线性映射$$ A:\mathbb V\to \mathbb W $$对于输入向量 $v\in \mathbb V$，线性映射产生输出$$ Av\in \mathbb W $$因此，向量沿着$A$从输入空间走向输出空间：$$ \mathbb V\xrightarrow{A}\mathbb W. $$举个例子，设：$$ A= \begin{bmatrix} 2&1\\ 0&3 \end{bmatrix}, \qquad x= \begin{bmatrix} x_1\\ x_2 \end{bmatrix} $$那么：$$ Ax= \begin{bmatrix} 2x_1+x_2\\ 3x_2 \end{bmatrix} $$假设有一个输出空间的测量方式，也就是输出空间的协向量，也就是输出空间的对偶空间的一个元素：$$ \beta \in \mathbb W^* $$它接收一个向量，返回一个标量——这正是协向量要做的事情。设这个协向量是：$$ \beta(y_1,y_2)=4y_1-y_2 $$在选定坐标后，它可以表示为行向量：$$ \beta= \begin{bmatrix} 4&-1 \end{bmatrix} $$我们知道，输出向量是由矩阵乘法得到的，也就是：$$ y=Ax $$那么，我们关心的测量就是$\beta(Ax)$，这个东西就是：$$ \beta(Ax)=4\times(2x_1+x_2)-3x_2=8x_1+x_2 $$这个结果非常amazing啊，因为它是输入空间的一个向量，也就是说——输出空间中的测量规则，经过线性变换以后，可以转换成输入空间中的测量规则。我们原本想测量输出中的某个量，但输出由输入决定。因此，可以把这个输出测量反向传回输入空间，得到一个直接测量输入的规则。这个过程就叫做协向量的拉回。又中秋：转置的谜底设：$$ A:\mathbb R^n\to\mathbb R^m $$矩阵表示为：$$ A= \begin{bmatrix} a_{11}&\cdots&a_{1n}\\ \vdots&&\vdots\\ a_{m1}&\cdots&a_{mn} \end{bmatrix} $$设输出空间中的协向量$\beta$用行向量表示：$$ \beta= \begin{bmatrix} b_1&\cdots&b_m \end{bmatrix}. $$那么对于输入列向量$x$，有：$$ \beta(Ax)=(\beta A)x. $$因此，拉回后的协向量是（这里我们用$A^*$记$A$的对偶映射，也就是把$A$做的变换反过来，也就是$A^*:\mathbb R^m\to \mathbb R^n$）：$$ A^*(\beta)=\beta A. $$这里似乎没有出现转置。这是因为我们将协向量自然地写成了行向量。如果将协向量的系数也写成列向量$$ b= \begin{bmatrix} b_1\\ \vdots\\ b_m \end{bmatrix} $$那么：$$ \beta(y)=b^Ty=b^TAx=(A^Tb)^Tx $$因此，拉回后的协向量系数为$$ A^Tb. $$这说明：$$ \boxed{[A^*]=A^T} $$即在线性映射对应的基与对偶基下，对偶映射的矩阵就是原矩阵的转置。因此，转置并不是一个首先存在的几何动作。更准确的逻辑顺序是：线性映射$A$作用于向量；$A$自然诱导出对偶映射$A^*$；对偶映射将输出协向量拉回输入空间；在坐标中，对偶映射由转置矩阵$A^T$表示。所以：转置矩阵是协向量反向传播在坐标中的样子。举个例子这个例子我就懒得打了，用L'intelligence artificielle代劳了。设：$$ A= \begin{bmatrix} 2&1\\ 0&3 \end{bmatrix}, \qquad x= \begin{bmatrix} x_1\\x_2 \end{bmatrix}. $$所以：$$ Ax= \begin{bmatrix} 2x_1+x_2\\ 3x_2 \end{bmatrix}. $$现在输出空间中有一个协向量：$$ \beta(y)=4y_1-y_2. $$用行向量表示：$$ \beta= \begin{bmatrix} 4&-1 \end{bmatrix}. $$它测量输出：$$ \beta(Ax) = 4(2x_1+x_2)-3x_2 = 8x_1+x_2. $$因此，被拉回输入空间的协向量是：$$ A^*\beta= \begin{bmatrix} 8&1 \end{bmatrix}. $$如果把协向量的系数暂时也写成列形式：$$ b= \begin{bmatrix} 4\\-1 \end{bmatrix}, $$那么：$$ A^Tb = \begin{bmatrix} 2&0\\ 1&3 \end{bmatrix} \begin{bmatrix} 4\\-1 \end{bmatrix} = \begin{bmatrix} 8\\1 \end{bmatrix}. $$所以：$$ \beta(Ax) = (A^T\beta)(x). $$更标准地写：$$ \langle \beta,Ax\rangle = \langle A^T\beta,x\rangle. $$这说明：转置并不是把矩阵沿对角线翻转的一种形式操作。它是对偶映射在坐标中的矩阵表示。
我之前以为我好像cover掉了所有的内容，翻翻课本，发现落下了一些东西。不知道读者的体验如何，当笔者学习线性代数的时候，最困扰的地方有两个：转置的几何意义——我需要声明的是，直到现在，哪怕我写了一章有关于转置的几何意义，我还是没有办法完全理解它，我后面可能会写一篇专门讲转置的文章。二次型。在我看来，二次型是矩阵论中，将几何与代数连接起来的东西，是一个桥梁，但是怎么连接的，我却难以说出个所以然来。这次就来探讨一下。本文首先只讨论正定二次型，因为它最容易通过几何理解。从圆与椭圆开始……Takeaway:二次型指定了一种距离的衡量方式。二次型是什么？其定义很简单，是关于一些变量的二次齐次多项式，比如：$$ Q_1(x,y)=4x^2+3xy+2y^2 $$就是一个二次型。很显然，对于两个变量而言，一个最基础的二次型是：$$ Q_2(x,y)=x^2+y^2 $$我们都知道——这是一个圆。如果给这个二次型设定一个值，比如$Q_2(x,y)=1$，那么它在标准直角坐标系xOy上花了一条线，这条线上的点就是所有从原点出发，长度/距离为1的点所形成的一条线。为什么它是一个圆？这个问题听起来很蠢，但是却和我们后面要讲的东西息息相关，其原因是——这个二次型指定了一种距离的衡量方式，它在所有方向上的尺度都一致。我们改一下这个二次型：$$ Q_3(x,y)=4x^2+y^2 $$这是一个什么形状？当$Q_3(x,y)=1$时，我们很容易发现——这是一个椭圆，而且是一个y轴长，x轴短的一个椭圆，为什么？这里我们指定了另一种距离的衡量方式——x轴移动的代价变高了。……到交叉项的迷思……Takeaway:交叉项不一定表示二次型本身很复杂，而很可能表示我们的观察方向不是最自然的方向。当然，二次型不仅仅只有上面的形式，还有这样的形式，比如一个二次型：$$ Q_4(x,y)=5x^2+4xy+2y^2 $$这是个什么形状？我们画一下：这是一个倾斜的椭圆。为什么？因为我们没有找到观察这个形状最自然的坐标轴，比如我们的这个椭圆，依靠椭圆的长轴和短轴方向观察最为自然，但是我们现在的观察方向并不是这两个轴，这造成了一定程度的偏移。对于一个圆而言，没有最自然方向这一说，因为每个方向行走，代价都是一样的。而椭圆则不一样，改变了一个方向的代价，那么最好以这个方向为观察方向，沿着其他方向移动，不仅会引入修改方向的分量，也会引入其他方向的分量，这就是交叉项的成因。为什么？我们从代数上解释一下。假设在它自己的主轴坐标 $(u,v)$ 中，二次型很简单：$$ Q=\lambda_1u^2+\lambda_2v^2. $$这里没有交叉项，因为 $u,v$ 正好沿着椭圆的长轴和短轴。现在假设主轴相对于 $x,y$ 坐标轴旋转了角度 $\theta$。那么：$$ u=x\cos\theta+y\sin\theta, $$注意，$u$ 已经不只是 $x$，而是 $x,y$ 的混合；$v$ 也是如此。代回二次型：$$ Q= \lambda_1(x\cos\theta+y\sin\theta)^2 +\lambda_2(-x\sin\theta+y\cos\theta)^2. $$展开第一项：$$ (x\cos\theta+y\sin\theta)^2 = x^2\cos^2\theta +2xy\sin\theta\cos\theta +y^2\sin^2\theta. $$展开第二项：$$ (-x\sin\theta+y\cos\theta)^2 = x^2\sin^2\theta -2xy\sin\theta\cos\theta +y^2\cos^2\theta. $$合起来：$$ Q= (\lambda_1\cos^2\theta+\lambda_2\sin^2\theta)x^2 $$所以交叉项的系数是：$$ 2(\lambda_1-\lambda_2)\sin\theta\cos\theta = (\lambda_1-\lambda_2)\sin 2\theta. $$……再到矩阵这家伙的登场……Takeaway:二次型矩阵的目的就是告诉你，每两个方向之间应该如何做测量。二次型所对应矩阵的特征向量方向，就是最自然的观测方向。「嘿，你这家伙，我明白了，矩阵这个东西不就是在一定程度上，形容方向的吗？」没错！我们发现，对一个二次型所示形状的观察，需要找到最自然的方向，那么我们可以先把观测方向变一下，然后再观察，岂不自然很多。这听起来就很像矩阵要干的事情！我们通过之前的论述知道，二次型其实指定了一种距离的测量方式，那么我们先来考虑，一个向量的距离该怎么衡量？是范数。而且我们最常用的范数是2-范数：$$ ||x||_2=\sqrt{x_1^2+x_2^2+\cdots+x_n^2} $$两边都给个平方：$$ ||x||^2_2=x_1^2+x_2^2+\cdots+x_n^2 $$这就变成了向量每一项的平方和的形式，这很显然就是：$$ ||x||_2^2=\langle x,x\rangle=x^Tx=x^TIx $$那么，改变不同的测量方式，就变成了：$$ Q(x)=x^TAx $$其中，$A$是一个正定对称矩阵。「你先慢点，凭什么把单位阵变成对称阵就能表示二次型了？」没错，让我们来解释一下。我们来看一下普通的内积是：$$ \langle x,y\rangle=x^TIy=x^Ty. $$单位矩阵$$ I= \begin{pmatrix} 1&0\\ 0&1 \end{pmatrix} $$表达了三件事：$$ \|e_1\|^2=1,\qquad \|e_2\|^2=1,\qquad \langle e_1,e_2\rangle=0. $$也就是说：不仅横轴单位向量长度为1，纵轴单位向量长度为1，而且横纵两轴互相垂直。因此，$I$ 代表的是“两个方向尺度相同、彼此正交”的普通欧氏测量规则。对于一个复杂点的二次型，比如：$$ A= \begin{pmatrix} 4&0\\ 0&1 \end{pmatrix}. $$定义：$$ \langle x,y\rangle_A=x^TAy. $$那么两个标准基向量的长度变成：$$ \|e_1\|_A^2=e_1^TAe_1=4, $$所以：$$ \|e_1\|_A=2. $$而：$$ \|e_2\|_A^2=e_2^TAe_2=1, $$所以：$$ \|e_2\|_A=1. $$这意味着在这个二次型的测量标准下，横向走一个坐标单位，被认为走了长度2；纵向走一个坐标单位，仍然被认为走了长度1。这就是为什么这个形状对应着一个椭圆。实际上，这个椭圆是另一个空间中的圆。okok，到这里读者应该理解这个矩阵的基本作用了——这个矩阵的目的就是告诉你，每两个方向之间应该如何做测量。所以这个矩阵必须是对称的，因为在我们一般的空间中，两个方向之间的测量，必须需要满足交换律。到这里，我们可以拉开这个矩阵脸上，蒙着的最后一层面纱了，这个矩阵就是Gram矩阵，其元素就是：$$ G= \begin{pmatrix} \langle e_1,e_1\rangle&\cdots&\langle e_1,e_n\rangle\\ \vdots&&\vdots\\ \langle e_n,e_1\rangle&\cdots&\langle e_n,e_n\rangle \end{pmatrix} $$有了矩阵，就很好找到最自然的观测方向了——那就是矩阵的特征向量方向，如果$x$为$A$的特征向量，那么：$$ Q(x)=x^TAx=x^T\lambda x=\lambda x^Tx $$就能把交叉项全部去掉了。换一个角度，特征向量满足：$$ Ax=\lambda x $$也就是在这个方向运动，不会产生其他方向的分量。……但二次型不都衡量距离Takeaway:二次型实际上描述沿着不同方向移动的代价的组合方式。特征值体现了这种组合方式的性格。到目前为止，我们讨论的二次型都是正定的，这种二次型被称为正定二次型。它之所以能够被解释为一种距离，是因为任何非零向量在这套测量规则下，都具有严格大于零的长度。这是因为，在不同方向走，都对距离有着正向的贡献。那么我们来看一个稍微奇怪一些的二次型：$$ Q(x,y)=x^2 $$如果令$Q(x,y)=1$，就能解出，$x=\pm 1$，这是两条平行于y轴的平行线。很难说这是一种空间上的距离测量方式，因为它只考虑了二维向量的一个维度的信息。我们甚至可以构造更加奇怪的二次型，比如：$$ Q(x,y)=x^2-y^2 $$如果取一个定值，比如$Q(x,y)=1$，很显然是一个双曲线的形式。这是因为，在x轴上运动，对距离的贡献是正向的，但是在y轴上运动，就是负向作用。此时，二次型不再描述一种通常意义上的距离，而是在区分空间中不同性质的方向。也就是说，二次型并不是描述了距离，而是一种通用层面的……呃……沿着不同方向移动的代价的组合方式。那么，根据之前的论述，不难明白，判断一个二次型属于哪一类，本质上只需要观察特征值的符号：如果所有特征值都大于零，二次型正定；如果所有特征值都大于等于零，但至少一个等于零，二次型半正定；如果既有正特征值，又有负特征值，二次型不定。特征值不只是某些抽象的代数参数。它告诉我们，沿着相应特征向量方向移动时，二次型如何评价这一方向，为正？那就是正向的影响；为零？那就不考虑这个方向；为负？那就是负向影响。
呃啊！好难写！至于字母混乱，您多担待。通过之前的论述，我们知道，一个矩阵的逆矩阵就是一个线性变换的逆变换。比如一个向量$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$。