正交
1. 正交的定义
- 正交向量 (Orthogonal Vectors):如果两个向量 v 和 w 正交,那么它们的点积为0:
vTw=0
- 正交子空间 (Orthogonal Subspaces):如果子空间 V 和子空间 W 是正交的,则 V 中的每一个向量都必须垂直于 W 中的每一个向量。
两个看上去垂直的平面并不一定是正交子空间,例如经典的“墙角”模型,虽然两个平面是垂直的,但是它们的交线属于这两个平面,一条线不可能垂直于它自己。
对于我们之前讨论的四个子空间:
- 行空间与零空间是正交的。
- 列空间与左零空间 (Nullspace of AT) 是正交的。
下面我们证明一下矩阵 A 的行向量所在的空间,会垂直于方程 Ax=0 的解空间。对于方程:
— row 1 —⋮— row m —[x]=0⋮0
这个矩阵乘法表明:
- (row 1)⋅x=0⇒x⊥(row 1)
- (row m)⋅x=0⇒x⊥(row m)
因为零空间向量 x 垂直于每一行,则 x 也垂直于这些行的任何线性组合,也即垂直于整个行空间。列空间与左零空间同理。
2. 正交补
正交补除了正交之外,还要求两个空间的维数相加等于整个空间的维数。一个子空间的正交补记作 V⊥,它包含了所有垂直于 V 的向量。
既然我们将 Rn 拆分成了两个正交补空间(这里我们以行空间和零空间为例),那么任意一个向量 x 都可以被唯一地拆分为
x=xr+xn
其中 xr 为属于行空间的分量,xn 为属于零空间的分量。当我们让矩阵 A 作用于 x 上时:
Ax=A(xr+xn)
xn 这个零空间向量变成了0,真正有作用的行空间向量被映射到了列空间中。更为重要的是,这个映射是一一对应且可逆的。也就是说我们可以通过剥离零空间得到一个可逆的核心部分。例如下面的矩阵:
A=300050000000000
实际有意义的部分为:
[3005]
一一对应的证明:假设存在两个不同行空间向量 xa、xb 满足 Axa=b 且 Axb=b,那么A(xa−xb)=0,则 xa−xb 这个向量在零空间中,但是因为 xa 与 xb 不相同的话,xa−xb 属于行空间,矛盾!
3. 投影
a. 直线上的投影
在研究到子空间的投影前,我们先从最简单的直线投影入手。假设我们想将 b 投影到 a 上,我们依照以下三个步骤计算投影:
- 找系数 x^。
- 找向量 p。
- 找矩阵 P。
首先是找系数 x^。投影点 p 既然在 a 所在的直线上,那么 p 一定是 a 的某个倍数。我们把这个倍数设为 x^。对于投影点 p 有如下重要性质:
- 误差向量 e=b−p=b−x^a 必须垂直于直线 a。
也即:
a⋅(b−x^a)=0oraT(b−x^a)=0
可解得:
x^=aTaaTb
将求得的倍数代回,便可得到投影向量 p:
p=ax^=aaTaaTb
将上面的式子改写成矩阵形式,有:
p⇒P=aTaa(aTb)=(aTaaaT)b=aTaaaT
P 即是投影矩阵。投影矩阵有如下的性质:
- 幂等性:P2=P
- 互补投影:I−P 将向量投影到误差向量 e 所在空间,也即投影到垂直于 a 的平面上:
(I−P)b=b−Pb=b−p=
b. 子空间中的投影
同样地,在多维子空间中,我们也按照前面的步骤进行投影,我们的目标是:给定向量 b 和矩阵 A, A 的列向量 a1,…,an 定义了子空间,找到系数向量 x^,使得投影 p=Ax^ 离 b 最近。
同样地,在多维子空间中,误差向量 e=b−Ax^ 也必须垂直于子空间。这意味着 e 必须垂直于子空间的每一个基向量(即 A 的每一列)。
a1T(b−Ax^)⋮anT(b−Ax^)=0=0
也即:
AT(b−Ax^)=0
整理上面的方程,我们得到了著名的正规方程:
ATAx^=ATb
接下来我们开始求解这个方程。如果 A 的列线性无关,则 ATA 可逆:
x^=(ATA)−1ATb
于是
p=Ax^=A(ATA)−1ATb⇒P=A(ATA)−1AT
注意:当 A 是长方形矩阵时,A 不可逆,因此不要随意把 P 的表达式中的 -1 打开!
4. 最小二乘法
a. 引入
在现实中,我们会想用直线来拟合数据。假设我们需要对一系列数据点用 y=Cx+D,我们会得到下面的方程组:
Cx1+DCx2+D⋮Cxn+D=y1=y2⋮=yn
写成矩阵形式:
Ax=b
但是当数据点不共线时,方程无解。使用前面投影的思路,我们可以不去找 b,而是找一个在 A 的列空间里、距离 b 最近 的向量,也即投影 p,于是我们的任务便变为求解:
Ax^=p
这个向量到 b 的距离就是我们前面提到的误差向量 e=b−p。同样地,e 垂直于 A 的列空间:
ATe=0
将 e=b−p 带入,就得到了和前面一模一样的正规方程:
ATAx^=ATb
这个拟合方法就是最小二乘法。我们只需要求解正规方程,即可得到最小二乘拟合直线。
b. 拟合步骤
给定数据点 (t1,y1),(t2,y2),…,(tm,ym),我们希望拟合直线 y=β0+β1t。具体步骤如下:
- 构造向量 b:这个就是我们的因变量:
b=y1y2⋮ym
- 构造矩阵 A:这个就是我们的自变量。由于线性方程里有一个截距项 β0,它相当于 β0×1。所以我们需要在 A 里人为添加一列全是 1 的列:
A=11⋮1t1t2⋮tm
我们需要求解:
x=[β0β1]
只需直接套用公式即可:
x^=(ATA)−1ATb
注意,最小二乘拟合方法不局限于直线,对二次曲线等也可以拟合。例如对于 y=Cx2+DX+E,我们依然可以将 (xi,yi) 带入,得到 C,D,E 的线性方程组,然后使用正规方程求解。
4. 正交化
a. 正交矩阵
- 如果一组向量 q1,…,qn 满足两个条件:
- 互相垂直:qiTqj=0 (i=j)。
- 长度为1:qiTqi=1 (i=j)。
那么它们就是标准正交向量。将这些向量放在矩阵 Q 的列中,则 QTQ 必然是单位矩阵。
如果 Q 为方阵,则 Q 被称为正交矩阵。
b. 使用正交基投影
我们前面的子空间投影公式以及对应计算结果如下:
ATAx^x^pP=ATb=(ATA)−1ATb=A(ATA)−1ATb=A(ATA)−1AT
当我们将 A 换成正交矩阵后,这些计算结果会变的非常简洁:
Ix^x^pP=QTb=QTb=QQTb=QQT
我们将 p 的计算式展开:
p=[q1…qn]q1Tb⋮qnTb=i=1∑nqi(qiTb)=q1(q1Tb)+⋯+qn(qnTb)
这里的 qiTb 是 b 在 qi 方向上的投影长度。整个投影 p 就是这些分量简单的叠加。因为 q 之间是垂直的,求 b 在 q1 上的分量时,完全不用管 q2。
c. Gram-Schmidt 正交化
i. 正交化过程
下面我们详细讲解怎么将普通的基转换成正交基。一个简单的思路是从每个新向量中,减去它在旧向量方向上的投影。。
假设我们有三个向量 a,b,c,则我们按照如下步骤进行变换:
- 确定第一个方向 A:直接取第一个向量 A=a。
- 然后确定第二个方向 B:我们希望 B⊥A,于是用 b 减去它在 A 上的投影:B=b−ATAATbA。
- 然后确定第三个方向 C:同样地,我们用 c,减去它在 A 上的投影,再减去它在 B 上的投影:C=c−projA(c)−projB(c)=c−ATAATcA−BTBBTcB。
- 最终我们将求得的向量归一化,即得标准正交基:
q1=∣∣A∣∣A,q2=∣∣B∣∣B,q3=∣∣C∣∣C
ii. QR 分解
如果说 LU 分解是高斯消元法的矩阵形式,那么 QR 分解就是 Gram–Schmidt 的矩阵形式。
我们从 A 的列向量 a1,…,an 出发,经过前面的 Gram–Schmidt 过程,得到一组标准正交向量 q1,…,qn,把它们放进矩阵 Q 中,有:
- a1=r11q1.
- a2=r12q1+r22q2.
- 第 k 步:ak=j=1∑krjkqj.
用矩阵表示,我们可以得到下面的分解:
A=QR=[q1q2⋯qn]r110⋮0r12r22⋮0⋯⋯⋱⋯r1nr2n⋮rnn=[r11q1r12q1+r22q2⋯r1nq1+r2nq2+⋯+rnnqn].
其中对角线元素 rkk 正好是 Gram-Schmidt 过程中计算出的那些长度(∣∣A∣∣,∣∣B∣∣,∣∣C∣∣)。它们都是正数。
QR 分解在最小二乘法中非常有用,回到我们的正规方程:
ATAx^=ATb
我们将 A=QR 带入:
⇒ATAATA=(QR)T(QR)=RTQTQR=RTR
⇒⇒ATbRTRx^Rx^=(QR)Tb=RTQTb=RTQTb=QTb
于是原方程化为:
RTRx^=RTQTb
由于 R 是可逆上三角矩阵,左右同乘 (RT)−1:
Rx^=QTb
这个式子非常好计算,由于 R 是上三角矩阵,直接用回代法就能很快解出 x^