4.2 投影

一、投影和投影矩阵

我们以下面两个问题开始,问题一是为了展示投影是很容易视觉化的,问题二是关于 “投影矩阵”(projection matrices)—— 对称矩阵且 P2=PP^2=PP2=Pb\boldsymbol bb 的投影是 PbP\boldsymbol bPb

  1. b=(2,3,4)\boldsymbol b=(2,3,4 )b=(2,3,4)zzz 轴和 xyxyxy 平面的投影是什么?
  2. 什么样的矩阵 P1P_1P1P2P_2P2 可以产生这条直线和平面上的投影?
    b\boldsymbol bb 投影到一条直线上时,它的投影 p\boldsymbol pp 是沿着这条直线的一部分。如果 b\boldsymbol bb 投影到一个平面,p\boldsymbol pp 是这条平面的一部分。投影 p\boldsymbol pp 就是 PbP\boldsymbol bPb
    投影矩阵 PPPb\boldsymbol bb 得到 p\boldsymbol pp。这一节就是找到 p\boldsymbol ppPPP

我们将 zzz 轴上的投影称为 p1\boldsymbol p_1p1。第二个投影是垂直下降到 xyxyxy 平面的,图像如 Figure 4.5 所示。从 b=(2,3,4)\boldsymbol b=(2,3,4)b=(2,3,4) 开始,横向的投影 p1=(0,0,4)\boldsymbol p_1=(0,0,4)p1=(0,0,4),竖直的投影 p2=(2,3,0)\boldsymbol p_2=(2,3,0)p2=(2,3,0),它们分别是 b\boldsymbol bb 沿着 zzz 轴和在 xyxyxy 平面的部分。
在这里插入图片描述

投影矩阵 P1P_1P1P2P_2P2 都是 3×33\times33×3 的矩阵,它们乘上 b\boldsymbol bb333 个分量可以得到投影 p\boldsymbol pp(也有 333 个分量)。投影到一条直线上的矩阵是秩一矩阵,投影到一个平面上的矩阵是秩二矩阵:投影矩阵到 z 轴P1=[000000001]到 xy 平面P2=[100010000]\pmb{投影矩阵}\kern 10pt到\,z\,轴\kern 5ptP_1=\begin{bmatrix}0&0&0\\0&0&0\\0&0&\pmb1\end{bmatrix}\kern 10pt到\,xy\,平面\kern 5ptP_2=\begin{bmatrix}\pmb1&0&0\\0&\pmb1&0\\0&0&0\end{bmatrix}投影矩阵zP1=000000001xy平面P2=100010000P1P_1P1 筛选出每个向量的 zzz 轴分量,P2P_2P2 筛选出 xxxyyy 分量。为了求出 b\boldsymbol bb 的投影 p1\boldsymbol p_1p1p2\boldsymbol p_2p2,将 P2P_2P2P2P_2P2 分别乘上 b\boldsymbol bb(小写的 p\boldsymbol pp 是向量,大写的 PPP 是产生投影向量的矩阵):p1=P1b=[000000001][xyz]=[00z]p2=P2b=[100010000][xyz]=[xy0]\boldsymbol p_1=P_1\boldsymbol b=\begin{bmatrix}0&0&0\\0&0&0\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}\pmb0\\\pmb0\\\pmb z\end{bmatrix}\kern 10pt\boldsymbol p_2=P_2\boldsymbol b=\begin{bmatrix}1&0&0\\0&1&0\\0&0&0\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}\pmb x\\\pmb y\\\pmb0\end{bmatrix}p1=P1b=000000001xyz=00zp2=P2b=100010000xyz=xy0这种情况下的投影 p1\boldsymbol p_1p1p2\boldsymbol p_2p2 是垂直的,xyxyxy 平面和 zzz 轴是正交子空间,就像房间的地板和两面墙的交线一样。
它们不仅仅是正交的子空间,这条直线和平面嗨还是正交补,它们的维度相加是 1+2=31+2=31+2=3。整个空间的任意向量 b\boldsymbol bb 都是这两个子空间部分的和,投影 p1\boldsymbol p_1p1p2\boldsymbol p_2p2 就是 b\boldsymbol bb 的这两个部分:向量得到 p1+p2=b矩阵得到 P1+P2=I(4.2.1)向量得到\,\boldsymbol p_1+\boldsymbol p_2=\boldsymbol b\kern 10pt矩阵得到\,P_1+P_2=I\kern 15pt(4.2.1)向量得到p1+p2=b矩阵得到P1+P2=I(4.2.1)这很完美,对于这个例子,我们的目标达到了。对于任意直线、任意平面和任意的 nnn 维子空间,我们有相同的目标,就是寻找在每个子空间的部分 p\boldsymbol pp,还有可以得到这个 p\boldsymbol pp 的矩阵 PPP,即 p=Pb\boldsymbol p=P\boldsymbol bp=PbRm\pmb{\textrm R}^mRm 的每个子空间都有自己的 m×mm\times mm×m 投影矩阵。为了计算 PPP,我们需要一个好的可以描述投影到的目标子空间。
子空间的最好的描述就是基,将基向量放到 AAA 的列,现在我们投影到 AAA 的列空间zzz 轴就是 3×13\times13×1 矩阵 A1A_1A1 的列空间,xyxyxy 平面就是 A2A_2A2 的列空间,这个平面同样也是 A3A_3A3 的列空间(一个子空间有很多组基),所以 p2=p3\boldsymbol p_2=\boldsymbol p_3p2=p3P2=P3P_2=P_3P2=P3A1=[001],A2=[100100],A3=[122300]A_1=\begin{bmatrix}0\\0\\1\end{bmatrix},\kern 5ptA_2=\begin{bmatrix}1&0\\0&1\\0&0\end{bmatrix},\kern 5ptA_3=\begin{bmatrix}1&2\\2&3\\0&0\end{bmatrix}A1=001,A2=100010,A3=120230我们的问题是把任意的 b\boldsymbol bb 投影到任意的 m×nm\times nm×n 矩阵的列空间中。从一条直线开始(维度为 n=1n=1n=1)。矩阵 AAA 只有一列,称为 a\boldsymbol aa

二、投影到一条直线

一条过原点的直线方向是 a=(a1,a2,⋯ ,am)\boldsymbol a=(a_1,a_2,\cdots,a_m)a=(a1,a2,,am),我们要找到沿着这条直线的一点 p\boldsymbol pp,它离 b=(b1,b2,⋯ ,bm)\boldsymbol b=(b_1,b_2,\cdots,b_m)b=(b1,b2,,bm) 最近。投影的关键是正交:b\boldsymbol bbp\boldsymbol pp 的直线与向量 a\boldsymbol aa 垂直,就是 Figure 4.6左侧标识 e=b−p\boldsymbol e=\boldsymbol b-\boldsymbol pe=bp 的点线,它代表误差。现在我们使用代数计算 p\boldsymbol pp
在这里插入图片描述
投影 p\boldsymbol pp 会是 a\boldsymbol aa 的某个倍数,记为 p=x^a\boldsymbol p=\hat x\boldsymbol ap=x^a 读作 “x  hatx\,\,\textrm{hat}xhat” 乘 a\boldsymbol aa。通过计算 x^\hat xx^ 我们可以得到向量 p\boldsymbol pp,然后根据 p\boldsymbol pp 的公式可以得到投影矩阵 PPP。这三步可以求出所有的投影矩阵:x^\hat xx^;然后求向量 p\boldsymbol pp;再求出矩阵 PPP
点线 b−p\boldsymbol b-\boldsymbol pbp 就是“误差” e=b−x^a\boldsymbol e=\boldsymbol b-\hat x\boldsymbol ae=bx^a,它与向量 a\boldsymbol aa 垂直,由这个条件我们就可以求出 x^\hat xx^。由于 b−x^a\boldsymbol b-\hat x\boldsymbol abx^a 和向量 a\boldsymbol aa 垂直,所以它们的点积为零:

b 投影到 a 上,误差 e=b−x^aa⋅(b−x^a)=0 或 a⋅b−x^a⋅a=0x^=a⋅ba⋅a=aTbaTa(4.2.2)\begin{matrix}\boldsymbol b\,投影到\,\boldsymbol a\,上,误差\,\boldsymbol e=\boldsymbol b-\hat x\boldsymbol a\\\boldsymbol a\cdot(\boldsymbol b-\hat x\boldsymbol a)=0\,或\,\boldsymbol a\cdot\boldsymbol b-\hat x\boldsymbol a\cdot\boldsymbol a=0\end{matrix}\kern 20pt\begin{matrix}\hat x=\displaystyle\frac{\boldsymbol a\cdot\boldsymbol b}{\boldsymbol a\cdot\boldsymbol a}=\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}\end{matrix}\kern 10pt(4.2.2)b投影到a上,误差e=bx^aa(bx^a)=0abx^aa=0x^=aaab=aTaaTb(4.2.2)

乘法 aTb\boldsymbol a^T\boldsymbol baTba⋅b\boldsymbol a\cdot\boldsymbol bab 是一样的,转置的表示方法会更好些,因为它也可以应用在矩阵上。由公式 x^=aTbaTa\hat x=\displaystyle\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}x^=aTaaTb 可以得到投影 p=x^a\boldsymbol p=\hat x\boldsymbol ap=x^a

向量 b 在通过 a 的直线上的投影是向量p=x^a=aTbaTaa 特殊情况1:如果 b=a,则 x^=1。a 投影到 a 是它自己。Pa=a。特殊情况2:如果 b 垂直于 a,则 aTb=0。投影 p=0.{\color{Blue}向量\,\boldsymbol b\,在通过\,\boldsymbol a\,的直线上的投影是向量\kern 7pt\boldsymbol p=\hat x\boldsymbol a=\displaystyle{\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}\boldsymbol a}}\\\,\\特殊情况1:如果\,\boldsymbol b=\boldsymbol a,则\,\hat x=1。\boldsymbol a\,投影到\,\boldsymbol a\,是它自己。P\boldsymbol a=\boldsymbol a。\\特殊情况2:如果\,\boldsymbol b\,垂直于\,\boldsymbol a,则\,\boldsymbol a^T\boldsymbol b=0。投影\,\boldsymbol p=0.\kern 63pt向量b在通过a的直线上的投影是向量p=x^a=aTaaTba特殊情况1:如果b=a,则x^=1a投影到a是它自己。Pa=a特殊情况2:如果b垂直于a,则aTb=0。投影p=0.

例1】将 b=[111]\boldsymbol b=\begin{bmatrix}1\\1\\1\end{bmatrix}b=111 投影在 a=[122]\boldsymbol a=\begin{bmatrix}1\\2\\2\end{bmatrix}a=122 上,求出 Figure 4.6 中的 p=x^a\boldsymbol p=\hat x\boldsymbol ap=x^a
解: 数字 x^\hat xx^aTb=5\boldsymbol a^T\boldsymbol b=5aTb=5aTa=9\boldsymbol a^T\boldsymbol a=9aTa=9 的比值,所以投影 p=59a\boldsymbol p=\displaystyle\frac{5}{9}\boldsymbol ap=95a
b\boldsymbol bbp\boldsymbol pp 之间的误差向量是 e=b−p\boldsymbol e=\boldsymbol b-\boldsymbol pe=bp,向量 p\boldsymbol ppe\boldsymbol ee 相加可以得到 b=(1,1,1)\boldsymbol b=(1,1,1)b=(1,1,1)p=59a=(59,109,109)e=b−p=(49,−19,−19)\boldsymbol p=\displaystyle\frac{5}{9}\boldsymbol a=\left(\frac{5}{9},\frac{10}{9},\frac{10}{9}\right)\kern 15pt\boldsymbol e=\boldsymbol b-\boldsymbol p=\left(\frac{4}{9},-\frac{1}{9},-\frac{1}{9}\right)p=95a=(95,910,910)e=bp=(94,91,91)误差 e\boldsymbol ee 垂直于 a=(1,2,2)\boldsymbol a=(1,2,2)a=(1,2,2)eTa=49−29−29=0\boldsymbol e^T\boldsymbol a=\displaystyle\frac{4}{9}-\frac{2}{9}-\frac{2}{9}=0eTa=949292=0
直角三角形 b,p\boldsymbol b,\boldsymbol pbpe\boldsymbol ee,向量 b\boldsymbol bb 分成两部分 —— 沿着直线的分量是 p\boldsymbol pp,与直线垂直的部分是 e\boldsymbol ee。这两条边 p\boldsymbol ppe\boldsymbol ee 的长度是 ∣∣p∣∣=∣∣b∣∣cos⁡θ||\boldsymbol p||=||\boldsymbol b||\cos\theta∣∣p∣∣=∣∣b∣∣cosθ∣∣e∣∣=∣∣b∣∣sin⁡θ||\boldsymbol e||=||\boldsymbol b||\sin\theta∣∣e∣∣=∣∣b∣∣sinθ。与三角学的点积相匹配:p=aTbaTaa的长度∣∣p∣∣=∣∣a∣∣∣∣b∣∣cos⁡θ∣∣a∣∣2∣∣a∣∣=∣∣b∣∣cos⁡θ(4.2.3)\boldsymbol p=\displaystyle\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}\boldsymbol a\kern 5pt的长度\kern 5pt||\boldsymbol p||=\displaystyle\frac{||\boldsymbol a||||\boldsymbol b||\cos\theta}{||\boldsymbol a||^2}||\boldsymbol a||=||\boldsymbol b||\cos\theta\kern 20pt(4.2.3)p=aTaaTba的长度∣∣p∣∣=∣∣a2∣∣a∣∣∣∣b∣∣cosθ∣∣a∣∣=∣∣b∣∣cosθ(4.2.3)点积比上述带有 cos⁡θ\cos\thetacosθb\boldsymbol bb 长度的形式更简洁,本例中会在 cos⁡θ=533\cos\theta=\displaystyle\frac{5}{3\sqrt3}cosθ=335∣∣b∣∣=3||\boldsymbol b||=\sqrt 3∣∣b∣∣=3 出现平方根,而投影 p=59a\boldsymbol p=\displaystyle\frac{5}{9}\boldsymbol ap=95a 没有平方根出现。通过 aTbaTa\displaystyle\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}aTaaTb 得到 59\displaystyle\frac{5}{9}95 是比较好的一种方法。
现在来看投影矩阵,在 p\boldsymbol pp 的公式中,是哪个矩阵乘 b\boldsymbol bb 呢?如果将 x^\hat xx^ 放在 a\boldsymbol aa 的右侧,那么就很容易看出这个矩阵:

投影矩阵 P当矩阵 P=aaTaTa 时,p=ax^=aaTbaTa=Pb\pmb{投影矩阵\,P}\kern 10pt当矩阵\,{\color{Blue}P=\displaystyle\frac{\boldsymbol a\boldsymbol a^T}{\boldsymbol a^T\boldsymbol a}}\,时,{\color{Blue}p=\boldsymbol a\hat x=\boldsymbol a\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}=P\boldsymbol b}投影矩阵P当矩阵P=aTaaaT时,p=ax^=aaTaaTb=Pb

PPP 是一列乘一行!列是 a\boldsymbol aa,行是 aT\boldsymbol a^TaT,除以数字 aTa\boldsymbol a^T\boldsymbol aaTa。投影矩阵 PPP 是一个 m×mm\times mm×m秩一矩阵,我们对一维子空间做投影,这条直线通过 a\boldsymbol aa,它是 PPP 的列空间。

例2】求投影在通过 a=[122]\boldsymbol a=\begin{bmatrix}1\\2\\2\end{bmatrix}a=122 的直线上的投影矩阵 P=aaTaTaP=\displaystyle\frac{\boldsymbol a\boldsymbol a^T}{\boldsymbol a^T\boldsymbol a}P=aTaaaT
解:a\boldsymbol aa 乘行 aT\boldsymbol a^TaT 再除以 aTa=9\boldsymbol a^T\boldsymbol a=9aTa=9投影矩阵P=aaTaTa=19[122][122]=19[122244244]投影矩阵\kern 10ptP=\displaystyle\frac{\boldsymbol a\boldsymbol a^T}{\boldsymbol a^T\boldsymbol a}=\frac{1}{9}\begin{bmatrix}1\\2\\2\end{bmatrix}\begin{bmatrix}1&2&2\end{bmatrix}=\frac{1}{9}\begin{bmatrix}1&2&2\\2&4&4\\2&4&4\end{bmatrix}投影矩阵P=aTaaaT=91122[122]=91122244244这个矩阵可以将任意向量 b\boldsymbol bb 投影到 a\boldsymbol aa,验证例1中 p=Pb\boldsymbol p=P\boldsymbol bp=Pb,其中 b=(1,1,1)\boldsymbol b=(1,1,1)b=(1,1,1)p=Pb=19[122244244][111]=19[51010]正确\boldsymbol p=P\boldsymbol b=\frac{1}{9}\begin{bmatrix}1&2&2\\2&4&4\\2&4&4\end{bmatrix}\begin{bmatrix}1\\1\\1\end{bmatrix}=\frac{1}{9}\begin{bmatrix}5\\10\\10\end{bmatrix}\kern 10pt正确p=Pb=91122244244111=9151010正确如果向量 a\boldsymbol aa 加倍,矩阵 PPP 不变!它仍然是投影在相同的直线上。如果矩阵平方,P2=PP^2=PP2=P投影两次不会改变任何东西,所以 P2=PP^2=PP2=P。对角元素的和 19(1+4+4)=1\displaystyle\frac{1}{9}(1+4+4)=191(1+4+4)=1
矩阵 I−PI-PIP 也是投影矩阵,它可以得到三角形的另一边 e\boldsymbol ee,即 b\boldsymbol bb 的垂直部分。注意 (I−P)b=b−p(I-P)\boldsymbol b=\boldsymbol b-\boldsymbol p(IP)b=bp 就是左零空间中的 e\boldsymbol ee
PPP 投影到一个子空间,I−PI-PIP 会投影到垂直的子空间中。这里 I−PI-PIP 投影到垂直于 a\boldsymbol aa 的平面。

三、投影到一个子空间

下面我们将视角从一维移开,看一下投影在一个 nnn 维子空间的情况。
Rm\textrm{\pmb R}^mRm 中有 nnn 个向量 a1,a2,⋯ ,an\boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_na1,a2,,an,假设这些向量都是线性无关的。
问题:找到离给定向量 b 最近的组合 p=x^1a1+x^2a2+⋯+x^nan。{\color{Blue}\pmb{问题:}找到离给定向量\,\boldsymbol b\,最近的组合\,\boldsymbol p=\hat x_1\boldsymbol a_1+\hat x_2\boldsymbol a_2+\cdots+\hat x_n\boldsymbol a_n。}问题:找到离给定向量b最近的组合p=x^1a1+x^2a2++x^nan 我们要将 Rm\pmb{\textrm R}^mRm 中的每个向量 b\boldsymbol bb 投影到由 a′s\boldsymbol a'sas 所张成的子空间中。
n=1n=1n=1(只有一个向量 a1\boldsymbol a_1a1)时,就是投影到一条直线上,这条直线是 AAA 的列空间,此时 AAA 只有一列。一般情况下矩阵 AAAnnn 列,分别是 a1,a2,⋯ ,an\boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_na1,a2,,an
Rm\textrm{\pmb R}^mRm 中的组合是列空间中的向量 AxA\boldsymbol xAx,我们要找到一个特别的组合 p=Ax^\boldsymbol p=A\hat {\boldsymbol x}p=Ax^投影),它离 b\boldsymbol bb 是最近的。在 x^\hat{\boldsymbol x}x^ 上的一个帽子表示这是一个最好的选择,它可以得到子空间中最靠近 b\boldsymbol bb 的一个向量。当 n=1n=1n=1 时,选择就是 x^=aTbaTa\hat x=\displaystyle\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}x^=aTaaTb;当 n>1n>1n>1 时,就是我们现在要找到的最佳选择 x^=(x^1,x^2,⋯ ,x^n)\hat {\boldsymbol x}=(\hat x_1,\hat x_2,\cdots,\hat x_n)x^=(x^1,x^2,,x^n)
和一维的情况一样,我们同样用三个步骤来计算在 nnn 维子空间的投影:找到向量 x^\hat{\boldsymbol x}x^;找到投影 p=Ax^\boldsymbol p=A\hat{\boldsymbol x}p=Ax^;找到投影矩阵 PPP
这里的关键就在几何方面!Figure 4.6 中的点线是从 b\boldsymbol bb 到子空间最近的点 Ax^A\hat{\boldsymbol x}Ax^误差向量 b−Ax^\boldsymbol b-A\hat{\boldsymbol x}bAx^ 垂直于子空间。误差 b−Ax^\boldsymbol b-A\hat{\boldsymbol x}bAx^ 和所有的基向量 a1,a2,⋯ ,an\boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_na1,a2,,an 都有一个直角,这 nnn 个直角可以得到 nnnx^\hat{\boldsymbol x}x^ 的方程:

a1T(b−Ax^)=0⋮anT(b−Ax^)=0或[−a1T−⋮−anT−][b−Ax^]=[ 0 ](4.2.4)\begin{matrix}\boldsymbol a_1^T(\boldsymbol b-A\hat{\boldsymbol x})=0\\\vdots\\\boldsymbol a_n^T(\boldsymbol b-A\hat{\boldsymbol x})=0\end{matrix}\kern 5pt或\kern 5pt\begin{bmatrix}-\boldsymbol a_1^T-\\\vdots\\-\boldsymbol a_n^T-\end{bmatrix}\begin{bmatrix}\boldsymbol b-A\hat{\boldsymbol x}\end{bmatrix}=\begin{bmatrix}\,\\0\\\,\end{bmatrix}\kern 15pt(4.2.4)a1T(bAx^)=0anT(bAx^)=0a1TanT[bAx^]=0(4.2.4)

行是 aiT\boldsymbol a_i^TaiT 的据说是 ATA^TAT,这 nnn 个方程就是 AT(b−Ax^)=0A^T(\boldsymbol b-A\hat{\boldsymbol x})=\boldsymbol 0AT(bAx^)=0
AT(b−Ax^)=0A^T(\boldsymbol b-A\hat{\boldsymbol x})=\boldsymbol 0AT(bAx^)=0 改写成著名的形式 ATAx^=ATbA^TA\hat{\boldsymbol x}=A^T\boldsymbol bATAx^=ATb,这个就是 x^\hat{\boldsymbol x}x^ 的方程,系数矩阵是 ATAA^TAATA。现在我们就可以按照顺序求出 x^、p\hat{\boldsymbol x}、\boldsymbol px^pPPP

组合 p=x^1a1+x^2a2+⋯+x^nan=Ax^\boldsymbol p=\hat x_1\boldsymbol a_1+\hat x_2\boldsymbol a_2+\cdots+\hat x_n\boldsymbol a_n=A\hat{\boldsymbol x}p=x^1a1+x^2a2++x^nan=Ax^ 是由 x^\hat{\boldsymbol x}x^ 得到的距离 b\boldsymbol bb 最近的点:求 x^  (n×1)AT(b−Ax^)=0  或  ATAx^=ATb(4.2.5)求\,\hat{\boldsymbol x}\,\,(n\times1)\kern 10ptA^T(\boldsymbol b-A\hat{\boldsymbol x})=\boldsymbol 0\,\,或\,\,A^TA\hat{\boldsymbol x}=A^T\boldsymbol b\kern 15pt(4.2.5)x^(n×1)AT(bAx^)=0ATAx^=ATb(4.2.5)ATAA^TAATAn×nn\times nn×n 的对称矩阵,如果 a′s\boldsymbol a'sas 是无关的,则它可逆,解是 x^=(ATA)−1ATb\hat{\boldsymbol x}=(A^TA)^{-1}A^T\boldsymbol bx^=(ATA)1ATbb\boldsymbol bb 在子空间的投影p\boldsymbol pp求 p  (m×1)p=Ax^=A(ATA)−1ATb(4.2.6)求\,\boldsymbol p\,\,(m\times1)\kern 15pt\boldsymbol p=A\hat{\boldsymbol x}=A(A^TA)^{-1}A^T\boldsymbol b\kern 35pt(4.2.6)p(m×1)p=Ax^=A(ATA)1ATb(4.2.6)下个公式是投影矩阵,就是(4.2.6)中乘 b\boldsymbol bb 的部分:求 P  (m×m)P=A(ATA)−1AT(4.2.7)求\,P\,\,(m\times m)\kern 20ptP=A(A^TA)^{-1}A^T\kern 55pt(4.2.7)P(m×m)P=A(ATA)1AT(4.2.7)

对比一下在直线上的投影,当 AAA 只有一列时:ATAA^TAATA 就是 aTa\boldsymbol a^T\boldsymbol aaTa

当 n=1,x^=aTbaTa,p=aaTbaTa,P=aaTaTa当\,n=1,\kern 20pt\hat x=\displaystyle\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a},\boldsymbol p=\boldsymbol a\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a},P=\frac{\boldsymbol a\boldsymbol a^T}{\boldsymbol a^T\boldsymbol a}n=1,x^=aTaaTbp=aaTaaTbP=aTaaaT

这些公式和(4.2.5)、(4.2.6)、(4.2.7)是一致的,数字 aTa\boldsymbol a^T\boldsymbol aaTa 变成了矩阵 ATAA^TAATA,当它是数字时,我们可以直接除以它;当它是矩阵时,我们取它的逆。新的公式里是 (ATA)−1(A^TA)^{-1}(ATA)1 而不是 1/aTa1/\boldsymbol a^T\boldsymbol a1/aTa。列 a1,a2,⋯ ,an\boldsymbol a_1,\boldsymbol a_2,\cdots,\boldsymbol a_na1,a2,,an 的线性无关保证了逆矩阵的存在。
关键的步骤是 AT(b−Ax^)=0A^T(\boldsymbol b-A\hat{\boldsymbol x})=\boldsymbol 0AT(bAx^)=0,在这里使用了几何性质(e\boldsymbol ee 与每个 a\boldsymbol aa 正交)。线性代数用快速又漂亮的方法也给出了 “正态方程”(normal equation):

  1. 子空间是 AAA 的列空间
  2. 误差向量 b−Ax^\boldsymbol b-A\hat{\boldsymbol x}bAx^ 垂直于这个列空间
  3. 因此 b−Ax^\boldsymbol b-A\hat{\boldsymbol x}bAx^ATA^TAT 的零空间中!就是 AT(b−Ax^)=0A^T(\boldsymbol b-A\hat{\boldsymbol x})=\boldsymbol 0AT(bAx^)=0 的意思。

左零空间在投影中非常重要,ATA^TAT 的零空间包含误差向量 b−Ax^\boldsymbol b-A\hat{\boldsymbol x}bAx^。向量 b\boldsymbol bb 分成了投影 p\boldsymbol pp 和误差 e=b−p\boldsymbol e=\boldsymbol b-\boldsymbol pe=bp。投影产生了三个边分别是 p,e\boldsymbol p,\boldsymbol epeb\boldsymbol bb 的三角形。

例3】如果 A=[101112]A=\begin{bmatrix}1&0\\1&1\\1&2\end{bmatrix}A=111012b=[600]\boldsymbol b=\begin{bmatrix}6\\0\\0\end{bmatrix}b=600,求 x^、p\hat{\boldsymbol x}、\boldsymbol px^pPPP
解: 计算方阵 ATAA^TAATA 和向量 ATbA^T\boldsymbol bATbATA=[111012][101112]=[3335],ATb=[111012][600]=[60]A^TA=\begin{bmatrix}1&1&1\\0&1&2\end{bmatrix}\begin{bmatrix}1&0\\1&1\\1&2\end{bmatrix}=\begin{bmatrix}3&3\\3&5\end{bmatrix},A^T\boldsymbol b=\begin{bmatrix}1&1&1\\0&1&2\end{bmatrix}\begin{bmatrix}6\\0\\0\end{bmatrix}=\begin{bmatrix}6\\0\end{bmatrix}ATA=[101112]111012=[3335]ATb=[101112]600=[60]下面求解正态方程 ATAx^=ATbA^TA\hat{\boldsymbol x}=A^T\boldsymbol bATAx^=ATb,得到 x^\hat{\boldsymbol x}x^[3335][x^1x^2]=[60]解得 x^=[x^1x^2]=[5−3](4.2.8)\begin{bmatrix}3&3\\3&5\end{bmatrix}\begin{bmatrix}\hat x_1\\\hat x_2\end{bmatrix}=\begin{bmatrix}6\\0\end{bmatrix}解得\,\hat{\boldsymbol x}=\begin{bmatrix}\hat x_1\\\hat x_2\end{bmatrix}=\begin{bmatrix}\kern 7pt5\\-3\end{bmatrix}\kern 15pt(4.2.8)[3335][x^1x^2]=[60]解得x^=[x^1x^2]=[53](4.2.8)组合 p=Ax^\boldsymbol p=A\hat{\boldsymbol x}p=Ax^b\boldsymbol bbAAA 列空间上的投影:p=5[111]−3[012]=[52−1],误差是 e=b−p=[1−21](4.2.9)\boldsymbol p=5\begin{bmatrix}1\\1\\1\end{bmatrix}-3\begin{bmatrix}0\\1\\2\end{bmatrix}=\begin{bmatrix}\kern 7pt5\\\kern 7pt2\\-1\end{bmatrix},误差是\,\boldsymbol e=\boldsymbol b-\boldsymbol p=\begin{bmatrix}\kern 7pt1\\-2\\\kern 7pt1\end{bmatrix}\kern 10pt(4.2.9)p=51113012=521,误差是e=bp=121(4.2.9)在计算上要检查两个地方,第一,误差 e=(1,−2,1)\boldsymbol e=(1,-2,1)e=(1,2,1) 与两列 (1,1,1)(1,1,1)(1,1,1)(0,1,2)(0,1,2)(0,1,2) 都垂直;第二,矩阵 PPPb=(6,0,0)\boldsymbol b=(6,0,0)b=(6,0,0) 能够正确得到 p=(5,2,−1)\boldsymbol p=(5,2,-1)p=(5,2,1)。我们得到矩阵 PPP 后,就可以立刻对特定的 b\boldsymbol bb 的投影进行求解。
投影矩阵是 P=A(ATA)−1ATP=A(A^TA)^{-1}A^TP=A(ATA)1ATATAA^TAATA 的行列式是 15−9=615-9=6159=6,很容易就可以求出 (ATA)−1(A^TA)^{-1}(ATA)1AAA(ATA)−1(A^TA)^{-1}(ATA)1ATA^TAT 得到 PPP(ATA)−1=16[5−3−33],P=16[52−1222−125](4.2.10)(A^TA)^{-1}=\frac{1}{6}\begin{bmatrix}\kern 7pt5&-3\\-3&\kern 7pt3\end{bmatrix},P=\frac{1}{6}\begin{bmatrix}\kern 7pt5&2&-1\\\kern 7pt2&2&\kern 7pt2\\-1&2&\kern 7pt5\end{bmatrix}\kern 15pt(4.2.10)(ATA)1=61[5333]P=61521222125(4.2.10)一定有 P2=PP^2=PP2=P,因为第二次投影不会改变第一次投影。
警告: 矩阵 P=A(ATA)−1ATP=A(A^TA)^{-1}A^TP=A(ATA)1AT 会具有误导性,如果将 (ATA)−1(A^TA)^{-1}(ATA)1 分成 A−1A^{-1}A1(AT)−1(A^T)^{-1}(AT)1,然后将它们继续代入 PPP,则会发现 P=AA−1(AT)−1ATP=AA^{-1}(A^T)^{-1}A^TP=AA1(AT)1AT,此时全部都消去了,看起来就像是 P=IP=IP=I,是一个单位矩阵。但是这是错误的。
矩阵 AAA 是矩形,大部分情况下是没有逆矩阵的。我们不能将 (ATA)−1(A^TA)^{-1}(ATA)1 拆成 A−1A^{-1}A1(AT)−1(A^T)^{-1}(AT)1,因为 A−1A^{-1}A1 都不一定存在。
以我们的经验来看,牵涉到矩形矩阵的情况大多数都会得到 ATAA^TAATA,如果 AAA 的列是无关的,则 ATAA^TAATA 是可逆的。这个事实很重要,我们会清楚的描述并证明。

ATA 可逆当且仅当 A 的列是线性无关的。{\color{Blue}A^TA\,可逆当且仅当\,A\,的列是线性无关的。}ATA可逆当且仅当A的列是线性无关的。

证明: ATAA^TAATA 是一个方阵 (n×n)(n\times n)(n×n)。对于每个矩阵 AAA,下面会证明 ATAA^TAATAAAA 有相同的零空间。若 AAA 的列线性无关,则它的零空间只有零向量,由于 ATAA^TAATAAAA 有相同的零空间,可得 ATAA^TAATA 可逆。
对于任意的矩阵 AAA,如果 x\boldsymbol xx 在它的零空间中,则 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0,左乘 ATA^TATATAx=0A^TA\boldsymbol x=\boldsymbol 0ATAx=0,所以 x\boldsymbol xx 也在 ATAA^TAATA 的零空间中。
现在从 ATAA^TAATA 的零空间开始,我们由 ATAx=0A^TA\boldsymbol x=\boldsymbol 0ATAx=0 证明 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0。我们不能在左边乘上 (AT)−1(A^T)^{-1}(AT)1,一般来说它不存在。我们左乘 xT\boldsymbol x^TxT(xT)ATAx=0 即 (Ax)T(Ax)=0 或 ∣∣Ax∣∣2=0(4.2.11)(\boldsymbol x^T)A^TA\boldsymbol x=0\,即\,(A\boldsymbol x)^T(A\boldsymbol x)=0\,或\,||A\boldsymbol x||^2=0\kern 20pt(4.2.11)(xT)ATAx=0(Ax)T(Ax)=0∣∣Ax2=0(4.2.11)这里证明了若 ATAx=0A^TA\boldsymbol x=\boldsymbol 0ATAx=0,那么 AxA\boldsymbol xAx 的长度为零,所以 Ax=0A\boldsymbol x=\boldsymbol 0Ax=0。每个向量 x\boldsymbol xx 在其中一个的零空间中也在另外一个的零空间。所以 ATAA^TAATAAAA 有相同的零空间。如果 ATAA^TAATA 有相关列,那么 AAA 也一样;如果 ATAA^TAATA 是无关列,则 AAA 也是,这种情况很好,此时 ATAA^TAATA 可逆。当 A 的列线性无关时,ATA 是方形、对称且可逆的矩阵。{\color{Blue}当\,A\,的列线性无关时,A^TA\,是方形、对称且可逆的矩阵。}A的列线性无关时,ATA是方形、对称且可逆的矩阵。再次强调:ATAA^TAATA 是(n×mn\times mn×m)乘 (m×n)(m\times n)(m×n) ,则 ATAA^TAATA 是方阵(n×nn\times nn×n)。对称是因为 (ATA)T=AT(AT)T=ATA(A^TA)^T=A^T(A^T)^T=A^TA(ATA)T=AT(AT)T=ATA。我们刚刚证明了当 AAA 的列线性无关时,ATAA^TAATA 可逆。注意无关列和相关列的差别:ATAATAATAATA[110220][121200]=[2448][110221][121201]=[2449]相关奇异无关可逆\begin{matrix}\kern 14ptA^T\kern 31ptA\kern 37ptA^TA&\kern 13ptA^T\kern 31ptA\kern 35ptA^TA\\\begin{bmatrix}1&1&0\\2&2&0\end{bmatrix}\begin{bmatrix}1&2\\1&2\\0&0\end{bmatrix}=\begin{bmatrix}2&4\\4&8\end{bmatrix}&\begin{bmatrix}1&1&0\\2&2&1\end{bmatrix}\begin{bmatrix}1&2\\1&2\\0&1\end{bmatrix}=\begin{bmatrix}2&4\\4&9\end{bmatrix}\\\kern 51pt相关\kern 28pt奇异&\kern 51pt无关\kern 28pt可逆\end{matrix}ATAATA[121200]110220=[2448]相关奇异ATAATA[121201]110221=[2449]无关可逆非常简短的总结:为了求出投影 p=x^1a1+x^2a2+⋯+x^nan\boldsymbol p=\hat x_1\boldsymbol a_1+\hat x_2\boldsymbol a_2+\cdots+\hat x_n\boldsymbol a_np=x^1a1+x^2a2++x^nan,求解 ATAx^=ATbA^TA\hat{\boldsymbol x}=A^T\boldsymbol bATAx^=ATb,得到 x^\hat{\boldsymbol x}x^。投影 p=Ax^\boldsymbol p=A\hat{\boldsymbol x}p=Ax^,误差是 e=b−p=b−Ax^\boldsymbol e=\boldsymbol b-\boldsymbol p=\boldsymbol b-A\hat{\boldsymbol x}e=bp=bAx^。投影矩阵 P=A(ATA)−1ATP=A(A^TA)^{-1}A^TP=A(ATA)1AT 得到 p=Pb\boldsymbol p=P\boldsymbol bp=Pb投影矩阵满足 P2=P。从 b 到子空间 C(A) 的距离是 ∣∣e∣∣。\pmb{投影矩阵满足\,P^2=P。从\,\boldsymbol b\,到子空间\,\pmb C(A)\,的距离是\,||\boldsymbol e||。}投影矩阵满足P2=P。从b到子空间C(A)的距离是∣∣e∣∣

四、主要内容总结

  1. b\boldsymbol bb 在通过 a\boldsymbol aa 的直线上的投影是 p=ax^=aaTbaTa\boldsymbol p=\boldsymbol a\hat x=\boldsymbol a\displaystyle \frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}p=ax^=aaTaaTb
  2. 秩一的投影矩阵 P=aaTaTaP=\displaystyle\frac{\boldsymbol a\boldsymbol a^T}{\boldsymbol a^T\boldsymbol a}P=aTaaaTb\boldsymbol bb 得到 p\boldsymbol pp
  3. b\boldsymbol bb 投影到子空间会有 e=b−p\boldsymbol e=\boldsymbol b-\boldsymbol pe=bp 垂直于这个子空间。
  4. AAA 有列满秩 nnn 时,由方程 ATAx^=ATbA^TA\hat{\boldsymbol x}=A^T\boldsymbol bATAx^=ATb 可以得到 x^\hat{\boldsymbol x}x^p=Ax^\boldsymbol p=A\hat{\boldsymbol x}p=Ax^
  5. 投影矩阵 P=A(ATA)−1ATP=A(A^TA)^{-1}A^TP=A(ATA)1AT,有 PT=P、P2=P、Pb=pP^T=P、P^2=P、P\boldsymbol b=\boldsymbol pPT=PP2=PPb=p

五、例题

例4】将 b=(3,4,4)\boldsymbol b=(3,4,4)b=(3,4,4) 投影在一条过 a=(2,2,1)\boldsymbol a=(2,2,1)a=(2,2,1) 的直线上,然后将它投影在同时包含 a∗=(1,0,0)\boldsymbol a^*=(1,0,0)a=(1,0,0) 的平面上。验证第一个误差向量 b−p\boldsymbol b-\boldsymbol pbp 垂直于 a\boldsymbol aa,第二个误差向量 e∗=b−p∗\boldsymbol e^*=\boldsymbol b-\boldsymbol p^*e=bp 也垂直于 a∗\boldsymbol a^*a
求出将向量投影在包含有 a\boldsymbol aaa∗\boldsymbol a^*a 平面上的 3×33\times33×3 的投影矩阵 PPP。找到一个在这个平面上的投影是零向量的向量,为什么它就是误差 e∗\boldsymbol e^*e?
解: b\boldsymbol bb 在通过 a=(2,2,1)\boldsymbol a=(2,2,1)a=(2,2,1) 直线上的投影是 p=2a\boldsymbol p=2\boldsymbol ap=2a投影在直线p=aTbaTaa=189(2,2,1)=(4,4,2)=2a\pmb{投影在直线}\kern 20pt\boldsymbol p=\displaystyle\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}\boldsymbol a=\frac{18}{9}(2,2,1)=(4,4,2)=2\boldsymbol a投影在直线p=aTaaTba=918(2,2,1)=(4,4,2)=2a误差向量 e=b−p=(−1,0,2)\boldsymbol e=\boldsymbol b-\boldsymbol p=(-1,0,2)e=bp=(1,0,2) 垂直于 a=(2,2,1)\boldsymbol a=(2,2,1)a=(2,2,1),所以 p\boldsymbol pp 是正确的。
a=(2,2,1)\boldsymbol a=(2,2,1)a=(2,2,1)a∗=(1,0,0)\boldsymbol a^*=(1,0,0)a=(1,0,0) 所形成的平面是 A=[aa∗]A=\begin{bmatrix}\boldsymbol a&\boldsymbol a^*\end{bmatrix}A=[aa] 的列空间:A=[212010],ATA=[9221],(ATA)−1=15[1−2−29],P=15[500042021]A=\begin{bmatrix}2&1\\2&0\\1&0\end{bmatrix},\kern 5ptA^TA=\begin{bmatrix}9&2\\2&1\end{bmatrix},\kern 5pt(A^TA)^{-1}=\frac{1}{5}\begin{bmatrix}\kern 7pt1&-2\\-2&\kern 7pt9\end{bmatrix},\kern 5ptP=\frac{1}{5}\begin{bmatrix}5&0&0\\0&4&2\\0&2&1\end{bmatrix}A=221100,ATA=[9221],(ATA)1=51[1229],P=51500042021可得 p∗=Pb=(3,245,125)\boldsymbol p^*=P\boldsymbol b=\displaystyle(3,\frac{24}{5},\frac{12}{5})p=Pb=(3,524,512),误差向量 e∗=b−p∗=(0,−45,85)\boldsymbol e^*=\boldsymbol b-\boldsymbol p^*=(0,-\displaystyle\frac{4}{5},\frac{8}{5})e=bp=(0,54,58) 垂直于 a\boldsymbol aaa∗\boldsymbol a^*ae∗\boldsymbol e^*ePPP 的零空间,它的投影是零!注意 P2=P=PTP^2=P=P^TP2=P=PT

例5】假设测量你的心跳每分钟是 x=70x=70x=70,然后是 x=80x=80x=80,再然后是 x=120x=120x=120。这三个方程 Ax=bA\boldsymbol x=\boldsymbol bAx=b 只有一个未知数,且 A=[111]A=\begin{bmatrix}1&1&1\end{bmatrix}A=[111]b=(70,80,120)\boldsymbol b=(70,80,120)b=(70,80,120)。则最好的 x^\hat{\boldsymbol x}x^70,80,12070,80,12070,80,120 的 _____。使用微积分和投影:

  1. dEdx=0\displaystyle\frac{\textrm dE}{\textrm dx}=0dxdE=0,最小化 E=(x−70)2+(x−80)2+(x−120)2E=(x-70)^2+(x-80)^2+(x-120)^2E=(x70)2+(x80)2+(x120)2
  2. b\boldsymbol bb 投影到 a=(1,1,1)\boldsymbol a=(1,1,1)a=(1,1,1),求解 x^=aTbaTa\hat x=\displaystyle\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}x^=aTaaTb

解: 最接近高度 70、80、12070、80、1207080120 的水平线是平均值 x^=90\hat x=90x^=90dEdx=2(x−70)+2(x−80)+2(x−120)=0解得x^=70+80+1203=90\frac{\textrm dE}{\textrm dx}=2(x-70)+2(x-80)+2(x-120)=0\kern 5pt解得\kern 5pt\hat x=\frac{70+80+120}{3}=90dxdE=2(x70)+2(x80)+2(x120)=0解得x^=370+80+120=90用投影求解:x^=aTbaTa=(1,1,1)T(70,80,120)(1,1,1)T(1,1,1)=70+80+1203=90用投影求解:\hat x=\frac{\boldsymbol a^T\boldsymbol b}{\boldsymbol a^T\boldsymbol a}=\frac{(1,1,1)^T(70,80,120)}{(1,1,1)^T(1,1,1)}=\frac{70+80+120}{3}=90用投影求解:x^=aTaaTb=(1,1,1)T(1,1,1)(1,1,1)T(70,80,120)=370+80+120=90在递归最小二乘法中,第四个测量数据 130130130 将会把平均值 x^old=90\hat x_{old}=90x^old=90 变成 x^new=100\hat x_{new}=100x^new=100。验证新的公式 x^new=x^old+14(130−x^old)\hat x_{new}=\hat x_{old}+\displaystyle\frac{1}{4}(130-\hat x_{old})x^new=x^old+41(130x^old)。当我们有一个新的测量值时,不需要把旧的测量值再次平均。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值