线性代数与矩阵之投影与子空间

线性代数与矩阵之投影与子空间

引子

注:本文中默认矩阵\(A\)的形式为:

bordermatrix

bordermatrix

《线性代数与矩阵之四类空间》笔记中,我们提到了四个空间与方程的可解性,讨论的都是解存在以及解系的情况。那如果\(Ax=b\)这个线性方程组中,解不存在怎么办?比如我们需要知道一个人的平面位置,但是我们经过多次间接测量\((x_i,y_i)\)(假设间接测量和实际位置存在某种线性关系),得到了很多组结果: \[ \begin{bmatrix} x_1&y_1\\x_2&y_2\\x_3&y_3\\\vdots&\vdots\\x_m&y_m\\ \end{bmatrix}\begin{bmatrix}\theta_1\\\theta_2\end{bmatrix}=\begin{bmatrix}b_1\\b_2\end{bmatrix} \] 显然,通常这个方程组时不可解的,那么有没有一种方法,能得出尽量精确的解呢?

答案是有的,尽量近似的解获得方式如下(暂时不考虑\(A^TA\)不可逆): \[ A^TA\Theta=A^Tb\Rightarrow \hat{\Theta}=(A^TA)^{-1}A^Tb \] 注意,这里的矩阵\(A\)并不是方阵,因此\((A^TA)^{-1}\neq A^{-1}(A^T)^{-1}\)\(A,A^T\)的逆不存在的。

其中,\(A^Tb\)和衍生出来的投影矩阵\(A(A^TA)^{-1}A^Tb\)的由来就是这篇笔记的重点。

投影——从向量到子空间投影

想象我们站在冬日的阳光下,阳光照在我们身上。在给我们带来温暖与惬意的同时,也在平地上留下了一个影子,这就是投影在生活中最常见的情形。而此时的影子是三维世界的我们在二维平面成的像,当然阳光的角度,地面是不是斜坡都会影响影子的最终形态。

投影影子

投影影子

线性代数与矩阵中也存在类似的过程——投影。投影是一种高维事物(如向量)往低维子空间投射影子的过程,而这个低维子空间中的影子应该是子空间中与原来事物相似的存在。如果用严格的数学语言描述:

投影:有一属于向量空间\(V\)的子空间\(W\),该子空间的一个投影\(P\)需使得\(\forall u\in V,P(u)\in W\),并且\(\forall u\in W\),有\(P(u)=u\)

上面这句话可解释为,\(P\)是向量空间\(V\)到子空间\(W\)投影,那么\(P\)将所有\(V\)中的元素都映射到\(W\)中,而且\(P\)\(W\)上是恒等变换。虽然这个定义没有问题,但是满足这个定义的投影\(P\)显然不是唯一的,如下图所示,各个\(p _i\)都可以算作投影的影子。

投影结果.drawio.svg

投影结果.drawio.svg

在这些影子中,总得有好有坏吧。我们可以设立一个指标:影子向量和原来向量的差别或误差。差别(误差)越小,也就是越近似,那么这个影子就保留了原向量尽可能多的信息,因此最好的投影会让二者具有“最近似性”关系。

其实,这种追求最小误差的投影,叫做正交投影,正交投影是我们用得最多的投影方式,一个子空间的正交投影是唯一的。斜投影有时用来提及非正交投影,斜投影常常会扭曲向量的尺寸,因此用的不多。我们这里先提一下这些概念,本文其实说的投影都是正交投影。

投影的最小误差要求

那么,如果体现投影的“最近似”特性呢?由于从高维空间到子空间的投影是不唯一的,就像阳光可以顺着不同的方向照射,同一个地面产生的影子也是不一样的。如果原来的向量\(\vec{b}\)产生的投影向量是\(\vec{p}\),那么它们之间的误差就是\(\vec{e}=\vec{b}-\vec{p}\)。“最近似”特性就是希望误差\(\vec{e}\)最小。根据点与空间的关系可知,最小化\(\vec{e}\)相当于让其成为向量到空间的距离

那么这个空间\(V\)到子空间\(W\)的投影\(P\)到底怎么求?以及如何在低维子空间中找到任意\(V\)中向量的影子呢?就是这一章节的阐述重点。

向量到向量的投影

空间中,最简单的子空间就是一维子空间(除了零向量),直接来说就是一个向量所在的过原点的直线,且该一维子空间由这个向量确定。一维子空间的投影是最基本的场景,也是其他更复杂场景的基础。一个向量往另一向量确定的一维子空间投影应该是什么呢?根据我们之前的要求,投影的影子应该是和原来向量差距最小的的。基本场景如下图所示:

向量投影

向量投影

在上面这个图中,\(\vec{b}\)为原向量,\(\vec{p}\)为其在向量\(\vec{a}\)所在的一维子空间的投影向量。根据向量的减法关系可知:\(\vec{b}-\vec{p}=\vec{e}\),其中\(\vec{e}\)\(\vec{b},\;\vec{p}\)的误差。用小学的知识也能知道,\(\vec{e}\)垂直于一维子空间所在直线的时候,误差最小。所以投影应该满足: \[ \vec{e}\perp\vec{a}\\ \Leftrightarrow \vec{a}^T\vec{e}=0或\vec{a}\cdot \vec{e}=0 \] 我们将\(\vec{e}=\vec{b}-\vec{p}\)代入,可得 \[ \vec{a}^T(\vec{b}-\vec{p})=0\Leftrightarrow \vec{a}^T\vec{b}=\vec{a}^T\vec{p} \] 并且,\(\vec{p}\)\(\vec{a}\)都是一维子空间的向量,二者共线,必然有\(\vec{p}=x\vec{a}\),其中\(x\)是一个标量。代入上式可得: \[ \vec{a}^T\vec{b}=\vec{a}^T(x\vec{a})\Leftrightarrow x=(\vec{a}^T\vec{a})^{-1}\vec{a}^T\vec{b} \] \(x\)\(\vec{p}\)\(\vec{a}\)的倍数关系,由\(\vec{p}=x\vec{a}\)可得: \[ \vec{p}=\vec{a}(\vec{a}^T\vec{a})^{-1}\vec{a}^T\vec{b} \] 那么,对于任意的\(\vec{b}\in \R^n\),为了追求误差最小化,其投影到\(\vec{a}\)所属的一维子空间投影矩阵为: \[ P_a=\vec{a}(\vec{a}^T\vec{a})^{-1}\vec{a}^T \] 其中,\(P_a\)表示投影到向量\(\vec{a}\)所在子空间的投影矩阵。由于从\(\vec{e}\perp\vec{a}\)到投影矩阵\(P_a\)的推导过程都是充要关系,因此这种最小化误差的投影与投影矩阵\(P\)是一一对应的。

向量的投影矩阵

上一小节,我们得到了某向量所在的一维子空间的投影矩阵\(P_a=\vec{a}(\vec{a}^T\vec{a})^{-1}\vec{a}^T\)。我们现在来研究一些\(P\)有哪些特性与性质。

首先,\(P_a\)\(\vec{a}\)的关系非常密切,由\(P_a=kaa^T,k=(\vec{a}^T\vec{a})^{-1}\)可知,\(P_a\)中的每个列向量都是\(\vec{a}\)的倍数,即列向量之间都是线性相关的。这意味着\(P_a\)的列空间(值域)等于\(\vec{a}\)所在的一维子空间,\(Col(P_a)=\R^1_a\)。这满足了投影定义中,将所有\(V\)中的元素都映射到子空间\(W\)中的要求。

同时,\(P_a\)的列向量的最大线性无关组为1,即\(P_a\)是个秩1矩阵。投影所保留的维度正好对应了一维子空间的维度,这也体现了\(P_a\)与一维子空间的映射关系。

我们之前,在定义投影的时候也提过,\(\forall u\in W\),有\(P(u)=u\),也就是子空间中向量的投影是其本身。如果对一个已经经过投影的向量再做一次投影操作(因为第一次投影操作以及让影子属于子空间了),应该不再有变化,这从几何观点很容易理解。不难发现,\(P_aP_a=\vec{a}(\vec{a}^T\vec{a})^{-1}[\vec{a}^T\vec{a}(\vec{a}^T\vec{a})^{-1}]_{=1}\vec{a}^T=\vec{a}(\vec{a}^T\vec{a})^{-1}\vec{a}^T=P_a\),即\(P_a^2=P_a\)。我们称这个性质为幂等性,满足这个性质的矩阵为幂等矩阵。投影矩阵的幂等性还可以从信息的角度理解,投影矩阵的作用是将与子空间无关的其他维度剥离,只留下子空间维度的信息。因此经过投影的向量已经没有了其他维度信息,在投影(剥离)一次不改变结果。

此外,我们还发现,投影矩阵是一个对称矩阵,即\(P_a^T=P_a\)。投影矩阵的对称性涉及到自伴随算子与空间的映射关系,是一个深刻且值得探讨的结论,但是需要的数学知识较深,这里不再讨论。

总结,向量到一维子空间的投影矩阵有如下性质:

  1. 投影矩阵\(P_a\)可有一维子空间所在向量\(\vec{a}\)构成,因此其列空间为该子空间。
  2. \(P_a\)的秩等于子空间维度。
  3. \(P_a\)是幂等矩阵;
  4. \(P_a\)是对称矩阵。

子空间投影

我们已经讨论了向量到向量所在的一维子空间的投影,那么当子空间维数不仅仅是一维的,而是高维的子空间,那么其投影该怎么求呢?

方法和一维子空间类似。假设我们要求矩阵\(A\)确定的投影矩阵\(P_A\),由于子空间等于由矩阵\(A\)的列空间,整体空间中有一任意非零向量\(\vec{b}\),其在子空间的投影为\(\vec{p}\),因为\(\vec{p}\)位于\(A\)的列空间,所以可以用\(A\)的列向量的线性组合\(\hat{x}_1\vec{c}_1+\hat{x}_2\vec{c}_2+\dotsb+\hat{x}_n\vec{c}_n\)表示,其中\(\vec{c}_i\)\(A\)的一个\(m×1\)的列向量,将其写成矩阵形式为:\(\vec{p}=A\hat{x}\)

3dim_projection.png

3dim_projection.png

同样的,我们希望误差\(\vec{e}=\vec{b}-\vec{p}\)最小,那么根据高中立体几何知识可知:只有当误差\(\vec{e}\)垂直与子空间时,\(e\)的长度最短。此时,\(\vec{e}\)应垂直于子空间中所有向量,包括\(A\)的所有列向量,即 \[ \vec{e}\perp Col(A)\\ \Leftrightarrow A^T\vec{e}=\vec{0}或 c_i\cdot \vec{e}=0\;\forall i\in\{1,\dotsb,n\} \] 其中,\(Col(A)\)表示矩阵\(A\)的列空间,\(c_i\)是矩阵\(A\)的一列。将\(\vec{e}=\vec{b}-\vec{p},\;\vec{p}=A\hat{x}\)代入上式可得: \[ A^T(\vec{b}-\vec{p})=0\Leftrightarrow A^T\vec{b}=A^T\vec{p}\Leftrightarrow A^T\vec{b}=A^TA\hat{x} \] 我们先只考虑\(A^TA\)是可逆的情形,可得: \[ \hat{x}=(A^TA)^{-1}A^T\vec{b} \]\(\hat{x}\)又是\(\vec{p}\)用矩阵\(A\)列向量线性表示的系数,即\(\vec{p}=A\hat{x}\)。综上可得,对于空间中任意向量\(\vec{b}\in \R^m\),在误差\(\vec{e}\)最小化的正交投影要求下,其投影到子空间\(Col(A)\)的结果为: \[ \vec{p}=A(A^TA)^{-1}A^T\vec{b} \] 相应的,由\(A\)所确定的投影矩阵可定义为: \[ P_A=A(A^TA)^{-1}A^T \]

投影矩阵与子空间关系

上一小节已经求出了投影矩阵\(P_A=A(A^TA)^{-1}A^T\),其中\(A_{m×n}\)\(m×n\)矩阵,那么投影矩阵与\(A\)所构成的子空间是什么关系呢?

我们首先研究\(P_A\)的列空间的秩。由于我们先假设\(A^TA\)是可逆的,因此其为一个\(n×n\)维可逆矩阵,因此有\(Rank(A^TA)=n\)。同时由于两个秩为\(r\)的矩阵乘积秩必然也不大于\(r\)(这是因为矩阵右乘或左乘分别是到其行空间或列空间的映射,因此矩阵乘法不可能升维),所以\(Rank(A)=Rank(A^T)\geq Rank(A^TA)=n\)。而又因为矩阵的秩小于等于行数和列数,即\(Rank(A)=Rank(A^T)\leq \min\{m,n\}\),所以有\(Rank(A)=Rank(A^T)=n\leq m\)

有了矩阵秩的信息,我们再来看看投影矩阵\(P_A\)的秩,我们发现\(P_A\)的秩并不好求,因此我们这里用一个夹逼的技巧,看看矩阵\(P_AA\)的秩,易得 \[ P_AA=A\underbrace{(A^TA)^{-1}A^TA}_{=I}=A \] 根据两个矩阵乘积的秩必然不大于任一个矩阵的秩这一特性,有: \[ \left . \begin{aligned} rank(P_A)≥rank(P_AA)=rank(A)=n\\ rank(P_A)=rank(A(A^TA)^{-1}A^T)≤rank(A)=n \end{aligned} \right \} \Rightarrow rank(P_A)=n \] 即投影矩阵\(P_A\)的秩为\(n\),等于子空间的维度。

有了\(P_A\)的秩,我们再由矩阵乘法的积的列空间特性进行进一步推导。对于矩阵乘法\(S=AX\),如果我们将\(X\)写成列向量组的形式\(X=(x_1,x_2,\dotsb,x_k)\),则\(S=AX\)的乘积为\((Ax_1,Ax_2,\dotsb,Ax_k)\)。显然,矩阵\(S\)的每一列\(s_i=Ax_i ∈ Col(A)\),因而\(S\)列向量组的线性组合也在\(Col(A)\)中,即\(Col(S)\subseteq Col(A)\)。依据此结论,我们可推断\(Col(P_A)\subseteq Col(A)\)。再综合\(P_A\)的秩为\(n\)等于\(rank(A)\),我们能够断定\(Col(P_A)=Col(A)\),即\(A\)所构成的子空间等于投影矩阵\(P_A\)的列空间。

最后我们来看看投影矩阵还有哪些性质。根据一维子空间中的投影研究应该具有幂等性和对称性。不难验证:

  1. 幂等性:\(P_AP_A=A(A^TA)^{-1}\underbrace{A^TA(A^TA)^{-1}}_{=I}A^T=A(A^TA)^{-1}A^T=P_A\)
  2. 幂等矩阵的迹等于幂等矩阵的秩,即\(tr(A)=rank(A)\)(通过特征值证明)
  3. 对称性:\(P_A^T=(A(A^TA)^{-1}A^T)^T=(A^T)^T((A^TA)^{-1})^TA^T=A(A^TA)^{-1}A^T=P_A\)

再谈投影和误差

通过投影,我们把空间中任一向量\(\vec{b}\)分成了投影子空间的部分\(\vec{p}\)和误差部分\(\vec{e}\)。从信息的角度,投影矩阵的作用就是保留子空间中的信息分量\(\vec{p}\),去掉非子空间中的分量\(\vec{e}\)。之前,我们已经分析出,投影子空间等于矩阵\(A\)的列空间\(Col(A)\)。那么误差\(\vec{e}\)所在的空间有没有什么特殊之处呢?

从之前的推导过程中,我们指出对于任意误差\(\vec{e}\),为了使其最小化,应让其垂直与列空间\(Col(A)\),即 \[ \forall \vec{e},有\vec{e}\perp Col(A) \] 哈,这里很直观的告诉我们,所有\(\vec{e}\)所组成的子空间,应该垂直于列空间。而根据笔记线性代数与矩阵之四类空间的内容,垂直于列空间的空间正是左零空间

投影分割空间.png

投影分割空间.png

这也就是说,我们永远可以把一个\(\R^m\)中的向量,通过投影拆分成两个分量:一个在\(A\)的列空间中,另一个分量垂直于\(A\)的列空间,即在\(A\)的左零空间中。同时这两个空间的直和,正好等于完整的空间\(\R^m\)

直和:设\(V_1,V_2\)是线性空间\(V\)的子空间,如果\(V_1+V_2\)中的每个向量分解式\(\vec{\alpha}=\vec{\alpha}_1+\vec{\alpha}_2\)唯一,其中\(\vec{\alpha}_1∈V_1,\vec{\alpha}_2∈V_2\)。那么称这个和为直和(direct sum),记为\(V_1⊕V_2\)

最小二乘法与(子)空间投影

我们说了这么长时间的投影,再回头看引子中的那个问题,是不是有点理解投影的作用了?

对于一个方程数大于变量数的线性方程组而言(\(m>n\)),一般是没有解的。而投影就是让这个线性方程组有一个最近似的解\(\vec{\hat{x}}\),使误差\(\vec{e}=\vec{b}-A\vec{\hat{x}}\)最小。这个方法在拟合方程如最小二乘法中得到了广泛应用。

最小二乘法

“最小平方法”是对线性方程组,即方程个数比未知数更多的方程组,以回归分析求得近似解的标准方法,其核心是将残差总和最小化,残差即观测值与模型提供的拟合值之间的差距,对应到矩阵化处理,就是使投影的误差最小。

下面我们用一个例子来说明最小二乘法的矩阵化处理方法。

假设在平面直角坐标系中有三个点\(p_1,p_2,p_3\),分别为\(\{(1,1), (2,2), (3,2)\}\)需要求一条直线尽可能的经过这三个点,虽然不可能有直线完全经过三点,但可以要求直线与这三个点的误差尽量小。我们假设这条直线可写成\(b=C+Dt\)的形式,将数据代入写成方程组: \[ \begin{cases} C+D=1\\ C+2D=2\\ C+3D=2 \end{cases}\Leftrightarrow \underbrace{\begin{bmatrix} 1&1\\1&2\\1&3\\ \end{bmatrix}}_A \underbrace{\begin{bmatrix} C\\D\\ \end{bmatrix}}_{\vec{x}}= \underbrace{\begin{bmatrix} 1\\2\\2\\ \end{bmatrix}}_{\vec{b}} \]

最小二乘法.png

最小二乘法.png

显然,这个的方程\(A\vec{x}=\vec{b}\)是无解的,我们根据之前向量投影思路,解决办法就是求其最优解,最优解的含义即为误差最小: \[ \min\|\vec{e}\|^2=\|A\vec{\hat{x}}-\vec{b}\|^2 \] 我们需要的就是寻找具有最小误差平方和的解\(\vec{\hat{x}}\),这也是“最小二乘”这一名称的由来。

前面投影章节已经指出,正交投影矩阵\(P_A\)能够最小化误差,所以\(\vec{\hat{x}}\)的值应该等于\(\vec{b}\)\(A\)所在子空间的正交投影,即: \[ \hat{x}=(A^TA)^{-1}A^T\vec{b} \] 根据上式解\(A\vec{\hat{x}}=\vec{b}\)可得: \[ \hat{x}=\begin{bmatrix} \hat{C}\\\hat{D}\\ \end{bmatrix}=\left (\begin{bmatrix} 1&1&1\\1&2&3\\ \end{bmatrix}\begin{bmatrix} 1&1\\1&2\\1&3\\ \end{bmatrix}\right)^{-1}\begin{bmatrix} 1&1&1\\1&2&3\\ \end{bmatrix}\begin{bmatrix} 1\\2\\2\\ \end{bmatrix}=\begin{bmatrix} \frac{2}{3}\\\\\frac{1}{2}\\ \end{bmatrix} \] 即为方程误差最小的最优解。我们也可以验证,误差\(\vec{e}=\vec{b}-A\vec{\hat{x}}=[1/6\; -1/3\; 1/6]^T\)\(A^T\vec{e}=\vec{0}\Rightarrow Col(A)\perp\vec{e}\),投影向量\(\vec{p}=A\vec{\hat{x}}\)\(\vec{e}\)正交,并且\(\vec{e}\)与矩阵\(A\)的列空间\(Col(A)\)正交。

最小二乘法是投影矩阵的典型应用,再补充一个小点,在实数空间\(\R^n\)中,投影矩阵\(P_A=A(A^TA)^{-1}A^T\);而在复数空间\(\mathbb{C}^n\)中,需要使用共轭转置代替,即\(P_A=A(A^HA)^{-1}A^H\)

\(A^TA\)不可逆时的处理

之前,我们一直假设\(A^TA\)是可逆的。然而,确实存在其不可逆的场景,比如一些未知量\(x_i,x_j\)存在线性关系。

最简单的方法当时是从中挑出一些列,筛选出线性无关的特征,不保留相同的特征,保证不存在线性相关的特征,从而组成一个更小的矩阵\(\tilde{A}\),使\(\tilde{A}^T\tilde{A}\)可逆。

其次,我们可以增加样本量,即多增加几个方程,看看能不能破坏未知量\(x_i,x_j\)存在线性关系。

最后,还可以采用正则化方法,对于正则化的方法,常见的是L1正则项和L2正则项。这超出了本文的阐述范围,有兴趣的读者可以找相关资料了解。