3008 字
15 分钟
矩阵分析基础

前言#

上一篇把降维看成选择少数方向:同样压到一维,沿点云延伸的方向投影,往往比直接保留一个原始特征损失更少。但数据矩阵为什么能呈现出这些方向?要回答这个问题,先得看懂矩阵怎样作用于向量,以及哪些方向在变换后仍然有规律可循。

我们沿一条线走:从矩阵改变空间的方式出发,认识正交的坐标系,再找出变换中特别稳定的方向。最后把这些想法用到长方形的数据矩阵上。

矩阵如何改变向量#

输入与输出的维数#

矩阵不仅是一张数字表,也是一条把输入向量变成输出向量的规则。设 A∈Rm×nA\in\mathbb{R}^{m\times n},输入 x∈Rnx\in\mathbb{R}^n,则

y=Ax∈Rm.y=Ax\in\mathbb{R}^m.

nn 是输入维数,mm 是输出维数,两者不必相等。把 AA 按列写作 A=[a1,…,an]A=[a_1,\ldots,a_n],矩阵乘法就是 Ax=x1a1+⋯+xnanAx=x_1a_1+\cdots+x_na_n。所以矩阵的第 ii 列 aia_i,恰好是第 ii 个原始坐标轴的单位向量 eie_i 经变换后的结果 AeiAe_i。知道坐标轴被送往哪里,就知道空间里任何向量会被送往哪里。

例如 C=[100111]C=\begin{bmatrix}1&0\\0&1\\1&1\end{bmatrix} 把二维向量 [x1x2]\begin{bmatrix}x_1\\x_2\end{bmatrix} 送到三维向量 [x1x2x1+x2]\begin{bmatrix}x_1\\x_2\\x_1+x_2\end{bmatrix}。输出多出一个坐标,却没有多出一个独立的输入自由度:第三个坐标由前两个决定。这和上一篇的特征冗余是同一件事,只是现在从变换而非数据表的角度观察。

乘法与转置#

矩阵连乘时,先作用的是右边的矩阵。若 B∈Rn×pB\in\mathbb{R}^{n\times p},那么 AB∈Rm×pAB\in\mathbb{R}^{m\times p},表示先用 BB 把 pp 维输入送到 nn 维,再用 AA 送到 mm 维。矩阵顺序通常不能交换;只需按维度检查一遍,就能避开不少公式里的错误。

转置 A⊤A^\top 则把行与列交换,形状从 m×nm\times n 变为 n×mn\times m。乘积转置时顺序也要倒过来:

(AB)⊤=B⊤A⊤.(AB)^\top=B^\top A^\top.

可以把它记成先作用的矩阵,转置后放在最后。后文我们会用这条规则检查某些方阵的对称性。

行列式与空间大小#

想知道一个二维方阵把平面改变了多少,先别盯着元素计算,不妨看一块单位正方形变换后的面积。这正是行列式回答的问题:从原点出发的两个单位坐标轴围成面积为 11 的正方形,经过 AA 后,两条边分别变成 AA 的两列,围成平行四边形。新面积与原面积之比是 ∣det⁡A∣|\det A|,高维时对应体积的缩放倍数。

拿 A=[2112]A=\begin{bmatrix}2&1\\1&2\end{bmatrix} 举例,两条边变成 [21]\begin{bmatrix}2\\1\end{bmatrix} 和 [12]\begin{bmatrix}1\\2\end{bmatrix},新面积为 ∣2⋅2−1⋅1∣=3|2\cdot2-1\cdot1|=3。也就是说,同一块平面区域经它变换后面积扩大为原来的 33 倍:

方阵把单位正方形变成平行四边形,行列式表示面积缩放

图中两条变换后的边独立,才围得出非零面积。如果边被压到同一条直线上,面积就变为 00,也就是 det⁡A=0\det A=0;这与矩阵的秩小于维数相呼应。行列式的正负还区分方向是否翻转,空间大小看绝对值。长方形矩阵把空间送往不同维数的空间,没有这里所说的行列式。

正交矩阵与换坐标#

正交矩阵#

上一篇用过两两垂直、长度为 11 的方向。若一个 n×nn\times n 方阵 QQ 的列恰好组成这样的完整坐标系,它就是正交矩阵。所有列两两内积为零,各自与自己的内积为一,合写为

Q⊤Q=In.Q^\top Q=I_n.

由于方阵的 nn 列已构成完整的基,也有 QQ⊤=InQQ^\top=I_n,因此 Q−1=Q⊤Q^{-1}=Q^\top。InI_n 是 nn 维单位矩阵。旋转、镜像都可以用正交矩阵表示:它们会改变坐标轴的朝向,但不会把两条互相垂直的轴挤在一起,也不会改变长度。面积或体积同样保持不变,所以 ∣det⁡Q∣=1|\det Q|=1。

完整换基与投影#

若用 QQ 的列作为新坐标轴,向量 xx 在这组轴下的坐标是 z=Q⊤xz=Q^\top x,乘回去即可还原:Qz=QQ⊤x=xQz=QQ^\top x=x。这是换一种方式记录同一个向量,没有丢掉方向。

上一篇的 W∈Rd×kW\in\mathbb{R}^{d\times k} 则只有 k<dk<d 列,虽然 W⊤W=IkW^\top W=I_k,但 WW⊤WW^\top 并非 IdI_d。它把 xx 投影到选出的 kk 个方向上,WW⊤xWW^\top x 可能不等于 xx。两者画在一起,区别会更直观:

完整正交基只换坐标,选取部分方向则产生投影误差

图中左边的两个正交方向足以还原整个平面中的向量;右边只留下一个方向,另一个方向上的分量就成了残差。正交保证各坐标互不重复,是否完整决定能否无损还原。

长度为什么不变#

正交矩阵还有一个直接的好处。向量长度的平方等于它与自己的内积,故换到完整的正交坐标系后

∥Q⊤x∥22=(Q⊤x)⊤(Q⊤x)=x⊤QQ⊤x=x⊤x=∥x∥22.\|Q^\top x\|_2^2 =(Q^\top x)^\top(Q^\top x) =x^\top QQ^\top x =x^\top x =\|x\|_2^2.

同样的计算也说明两个向量的内积不变,因而它们之间的夹角也不变。注意这里依赖的是 QQ⊤=IQQ^\top=I;对只保留部分列的 WW,WW⊤≠IWW^\top\ne I,不能把这段推导照搬过去。

特征值与特征向量#

不改变方向的向量#

如果逐个追踪向量经过方阵 AA 后去了哪里,很难看出变换的规律:长度和方向都可能变化。不如先找那些仍落在原来直线上的方向。有些非零向量 vv 满足

Av=λv.Av=\lambda v.

这样的 vv 称为特征向量,λ\lambda 是对应的特征值。它们描述变换中沿同一条直线运动的特殊方向:λ>0\lambda>0 时方向不反转,λ<0\lambda<0 时反向,λ=0\lambda=0 时被压到原点。这里讨论的两侧向量必须同维,所以这个等式针对方阵。

一个二维例子#

继续看前面面积扩大 33 倍的矩阵

A=[2112].A=\begin{bmatrix}2&1\\1&2\end{bmatrix}.

沿 [11]\begin{bmatrix}1\\1\end{bmatrix} 方向,A[11]=[33]=3[11]A\begin{bmatrix}1\\1\end{bmatrix}=\begin{bmatrix}3\\3\end{bmatrix}=3\begin{bmatrix}1\\1\end{bmatrix};沿 [1−1]\begin{bmatrix}1\\-1\end{bmatrix} 方向,A[1−1]=[1−1]A\begin{bmatrix}1\\-1\end{bmatrix}=\begin{bmatrix}1\\-1\end{bmatrix}。两条方向互相垂直,分别被放大 33 倍和保持不变。面积放大的 33 倍,正好是两个垂直方向上缩放倍数的乘积。

一般方向却未必如此。例如 A[10]=[21]A\begin{bmatrix}1\\0\end{bmatrix}=\begin{bmatrix}2\\1\end{bmatrix},结果不再沿原来的水平轴。这不是说矩阵只能沿两条方向作用,而是说换成这两条特征方向看,同一个变换会简单得多。

把变换拆成独立方向#

换到特征方向#

把上面两条方向单位化,得到 q1=12[11]q_1=\frac{1}{\sqrt2}\begin{bmatrix}1\\1\end{bmatrix}、q2=12[1−1]q_2=\frac{1}{\sqrt2}\begin{bmatrix}1\\-1\end{bmatrix}。让它们成为矩阵 Q=[q1,q2]Q=[q_1,q_2] 的两列,再将两个缩放倍数放进对角矩阵 Λ=diag⁡(3,1)\Lambda=\operatorname{diag}(3,1)。由 Aq1=3q1Aq_1=3q_1 和 Aq2=q2Aq_2=q_2,逐列合并得到

AQ=QΛ⟹Q⊤AQ=Λ⟹A=QΛQ⊤.AQ=Q\Lambda \quad\Longrightarrow\quad Q^\top A Q=\Lambda \quad\Longrightarrow\quad A=Q\Lambda Q^\top.

对角矩阵只有主对角线上的数不为零,作用是分别缩放对应坐标轴。这样,Ax=QΛ(Q⊤x)Ax=Q\Lambda(Q^\top x) 可按从右到左读作三步:先把 xx 换到特征方向的坐标系,再沿各方向缩放,最后换回原坐标系。图中展示的是同一个变换的三种动作,不是三个不同的矩阵问题:

正交换坐标、沿特征方向缩放、再换回原坐标系

图中四支箭头按相同的单位长度绘制,但使用的不是同一组坐标轴。首尾两格用原坐标 x1,x2x_1,x_2,中间两格用特征方向 q1,q2q_1,q_2 对应的坐标 z1,z2z_1,z_2。因此,xx 在第一格水平、zz 在第二格指向斜上方,并不意味着同一个几何向量在原平面里转了 45∘45^\circ;它只是换了一组坐标来表示。本例的 QQ 还包含镜像,不能仅凭不同坐标系下箭头的倾角把换基当成一次旋转。

对称矩阵的作用#

上例有个关键条件:A⊤=AA^\top=A,它是实对称矩阵。任意实对称方阵都有一组完整的标准正交特征向量,而且特征值是实数,因此总能按刚才的方式写成 A=QΛQ⊤A=Q\Lambda Q^\top。我们只需要记住这个结论的作用:它保证能找到一组互相垂直的方向,让变换逐方向地缩放。

为什么不同缩放值对应的方向会垂直?设 Aqi=λiqiAq_i=\lambda_iq_i、Aqj=λjqjAq_j=\lambda_jq_j,并且 A⊤=AA^\top=A。先看 AA 作用于右边的 qjq_j,直接代入特征向量的定义:

qi⊤Aqj=qi⊤(λjqj)=λjqi⊤qj.\begin{aligned} q_i^\top A q_j &=q_i^\top(\lambda_jq_j)\\ &=\lambda_jq_i^\top q_j. \end{aligned}

再看同一个式子,用转置把 AA 移到左边。由于 A⊤=AA^\top=A,它作用于 qiq_i 后同样可以换成缩放倍数:

qi⊤Aqj=(A⊤qi)⊤qj=(Aqi)⊤qj=(λiqi)⊤qj=λiqi⊤qj.\begin{aligned} q_i^\top A q_j &=(A^\top q_i)^\top q_j\\ &=(Aq_i)^\top q_j\\ &=(\lambda_iq_i)^\top q_j\\ &=\lambda_iq_i^\top q_j. \end{aligned}

左边是同一个数,因此 λjqi⊤qj=λiqi⊤qj\lambda_jq_i^\top q_j=\lambda_iq_i^\top q_j。把两边相减,就得到

(λi−λj)qi⊤qj=0.(\lambda_i-\lambda_j)q_i^\top q_j=0.

当 λi≠λj\lambda_i\ne\lambda_j 时,只能有 qi⊤qj=0q_i^\top q_j=0。如果两个方向的缩放值恰好相同,仍可在它们所在的空间里选互相垂直的方向;实对称矩阵的完整结论已经保证这一点。需要区分的是:对称保证正交方向,不保证缩放值非负,非负还需要矩阵满足更具体的性质。

从矩形矩阵找到方向#

两个对称方阵#

数据矩阵不一定是方阵。对 A∈Rm×nA\in\mathbb{R}^{m\times n},AxAx 属于 mm 维,不能直接要求它等于 nn 维的 λx\lambda x。不过把 AA 与它的转置接起来,就得到两个方阵:

A⊤A∈Rn×n,AA⊤∈Rm×m.A^\top A\in\mathbb{R}^{n\times n}, \qquad AA^\top\in\mathbb{R}^{m\times m}.

而且它们都是对称的。例如 (A⊤A)⊤=A⊤(A⊤)⊤=A⊤A(A^\top A)^\top=A^\top(A^\top)^\top=A^\top A。第一个矩阵作用于输入空间,第二个作用于输出空间。图中的箭头把维数也标了出来:

矩形矩阵及其转置在输入空间和输出空间构成两个对称方阵

特别要注意,A⊤A^\top 不是把 AA 的作用原路撤销的逆变换;A⊤AxA^\top Ax 一般不等于 xx。它把一个输入向量经过变换后,再带回输入空间进行比较,因此能告诉我们哪些输入方向经过 AA 后变化得更明显。

非负的缩放值#

取任意输入向量 x∈Rnx\in\mathbb{R}^n。由转置和内积的规则,有一个非常有用的等式:

x⊤A⊤Ax=(Ax)⊤(Ax)=∥Ax∥22≥0.x^\top A^\top A x=(Ax)^\top(Ax)=\|Ax\|_2^2\ge0.

若单位特征向量 vv 满足 A⊤Av=λvA^\top Av=\lambda v,代入上式得到 λv⊤v=∥Av∥22\lambda v^\top v=\|Av\|_2^2,于是 λ=∥Av∥22≥0\lambda=\|Av\|_2^2\ge0。缩放值不是负数,因为它对应的是输出长度的平方。同理,AA⊤AA^\top 的特征值也非负。这类对任意向量都让 x⊤Bx≥0x^\top Bx\ge0 的对称矩阵称为半正定矩阵。

回到开头的 3×23\times2 矩阵 CC,直接相乘可得 C⊤C=[2112]C^\top C=\begin{bmatrix}2&1\\1&2\end{bmatrix},恰好就是前面讨论过的对称矩阵。那里的两个单位特征方向对应特征值 33 和 11:现在它们有了新的含义,分别表示输入沿这两个方向变化时,经过 CC 后的长度平方会变为原来的 33 倍和 11 倍。

特别地,λ=0\lambda=0 当且仅当 Av=0Av=0:这个输入方向被整个变换压没了。多个独立方向被压没时,矩阵的秩就会减小;其余方向则以不同强度参与输出。只看原始矩阵的元素往往看不出这些信息,但看它作用于哪些正交方向,就能区分“真正传过去的变化”和“消失的变化”。

结语#

矩阵的列告诉我们坐标轴被送往哪里,行列式记录方阵怎样改变面积或体积;正交矩阵让我们安全地换坐标,特征方向让复杂的变换变成逐方向缩放。对矩形矩阵,A⊤AA^\top A 和 AA⊤AA^\top 把输入、输出两侧各自带回可寻找正交方向的空间,而 ∥Ax∥22\|Ax\|_2^2 则告诉我们缩放强度为何非负。这些方向和强度,正是理解 SVD 的起点。

参考资料#

博客桌宠