这部分我们有两个目标。一是了解正交性是怎么让 x^\hat xx^ 、ppp 、PPP 的计算变得简单的,这种情况下,ATAA^TAATA 将会是一个对角矩阵。二是学会怎么从原始向量中构建出正交向量。
1. 标准正交基
向量 q1,⋯ ,qnq_1, \cdots, q_nq1,⋯,qn 是标准正交的,如果它们满足如下条件:
qiTqj={0,if i̸=j(正交向量)1,if i=j(单位向量)q_i^Tq_j = \begin{cases} 0,&\text{if } i \not = j \quad(正交向量)\\ 1, &\text{if } i = j \quad(单位向量) \end{cases}qiTqj={0,1,if i̸=j(正交向量)if i=j(单位向量)
如果一个矩阵的列是标准正交的,我们称之为 QQQ。很容易,我们可以得到 QTQ=IQ^TQ=IQTQ=I。
当 QQQ 是方阵的时候,我们可以得到 QT=Q−1Q^T=Q^{-1}QT=Q−1,也即转置等于逆。
- 旋转(Rotation)
旋转矩阵 QQQ 就是将任意向量逆时针旋转 θ\thetaθ,其逆矩阵 Q−1Q^{-1}Q−1 就是将任意向量顺时针旋转 θ\thetaθ。
- 置换(Permutation)
置换矩阵的作用就是交换矩阵的行,在消元的时候有很大的作用。
- 镜像(Reflection)
如果 uuu 是任意单位向量,那么 Q=I−2uuTQ = I-2uu^TQ=I−2uuT 是一个正交矩阵。
Q2=QTQ=IQ^2=Q^TQ=IQ2=QTQ=I
绕对称轴镜像两次还是它本身。
取 u1=(1,0)u_1=(1, 0)u1=(1,0),u2=(1/2,−1/2)u_2=(1/\sqrt2, -1/\sqrt2)u2=(1/2,−1/2),然后,我们可以得到两个正交矩阵。
Q1Q_1Q1 将任意向量 (x,y)(x, y)(x,y) 变为 (−x,y)(-x, y)(−x,y),yyy 轴是镜像轴。Q2Q_2Q2 将任意向量 (x,y)(x, y)(x,y) 变为 (y,x)(y, x)(y,x),45°45°45° 轴是镜像轴。
可以看到,旋转、置换和镜像都不会改变一个向量的长度。实际上,乘以任意正交矩阵都不会改变向量的长度。
∣∣Qx∣∣=∣∣x∣∣||Qx||=||x||∣∣Qx∣∣=∣∣x∣∣
∣∣Qx∣∣2=(Qx)T(Qx)=xTQTQx=xTIx=∣∣x∣∣2||Qx||^2 = (Qx)^T(Qx) = x^TQ^TQx = x^TIx=||x||^2∣∣Qx∣∣2=(Qx)T(Qx)=xTQTQx=xTIx=∣∣x∣∣2
而且,正交矩阵也会保留两个向量的点积。
(Qx)T(Qy)=xTQTQy=xTy(Qx)^T(Qy) = x^TQ^TQy = x^Ty(Qx)T(Qy)=xTQTQy=xTy
2. 正交矩阵的投影
当矩阵 AAA 变成了正交矩阵 QQQ,那么投影就会变得非常简单,我们不需要求任何逆矩阵。
ATAx^=ATb→x^=QTbA^TA\hat x=A^Tb \to \hat x=Q^TbATAx^=ATb→x^=QTb
p=Ax^→p=Qx^=QQTbp=A\hat x \to p=Q\hat x = QQ^Tbp=Ax^→p=Qx^=QQTb
P=A(ATA)−1AT→P=QQTP = A(A^TA)^{-1}A^T \to P = QQ^TP=A(ATA)−1AT→P=QQT
当 QQQ 为方阵的时候,子空间为整个空间,有 QT=Q−1Q^T=Q^{-1}QT=Q−1。x^=QTb\hat x = Q^Tbx^=QTb 就等同于 x=Q−1bx=Q^{-1}bx=Q−1b,也就是有唯一解,bbb 的投影即为它本身。
这就是傅里叶变化和所有应用数学中各种变化的基础,它们将向量或者函数分解成正交的小片,将这些小片加起来之后就回到了原函数。
3. Gram-Schmidt 正交化和 AAA 的 QRQRQR 分解
从上面我们可以看到正交对我们是非常有利的,现在我们就要找到一个方法来创造出标准正交的向量。假设我们有三个不相关的向量 a,b,ca, b, ca,b,c,如果我们能构造出正交的三个向量 A,B,CA,B,CA,B,C,那么再除以它们的长度就得到了标准正交向量。
首先,我们选取 A=aA=aA=a,那么 BBB 必须垂直于 AAA 。我们用 bbb 减去其在 AAA 的投影,就得到了垂直于 AAA 的部分,这也就是我们要找的 BBB。
B=b−ATbATAAB = b - \frac{A^Tb}{A^TA}AB=b−ATAATbA
接着,我们再用 ccc 减去其在 AAA 和 BBB 的投影,就得到我们要找的 CCC。
C=c−ATcATAA−BTcBTBBC = c - \frac{A^Tc}{A^TA}A-\frac{B^Tc}{B^TB}BC=c−ATAATcA−BTBBTcB
如果我们有更多的向量,那我们就用新的向量减去它在已经设定好的所有向量上的投影即可,最后,我们再除以它们各自的长度就得到了标准正交向量。
可以看到,q1=a/∣∣a∣∣q_1=a/||a||q1=a/∣∣a∣∣,没有涉及到其它向量,aaa、q1q_1q1、AAA 都位于一条线上。第二步中 bbb 也只是 AAA 和 BBB 的线性组合,不涉及到后面的向量,a,ba,ba,b、q1,q2q_1,q_2q1,q2、A,BA,BA,B 都位于一个平面内。在每一个步骤中,a1,a2,⋯ ,aka_1, a_2, \cdots, a_ka1,a2,⋯,ak 只是 q1,q2,⋯ ,qkq_1, q_2, \cdots, q_kq1,q2,⋯,qk 的线性组合,后面的 qqq 没有涉及到。
联系 AAA 和 QQQ 的矩阵 RRR 是上三角形矩阵,有 A=QRA=QRA=QR。
任意 m×nm×nm×n 的矩阵 AAA,如果其列是不相关的,那么就可以分解成 QRQRQR,QQQ 的列是标准正交的,而 RRR 是上三角矩阵并且对角线元素为正,为向量 ⋯B,C⋯\cdots B,C\cdots⋯B,C⋯ 的长度。
然后,最小二乘就变成了
ATAx^=ATb→RTQTQRx^=RTQTb→RTRx^=RTQTb→Rx^=QTb→x^=R−1QTbA^TA\hat x=A^Tb \to R^TQ^TQR\hat x=R^TQ^Tb \to R^TR\hat x=R^TQ^Tb \to R\hat x=Q^Tb \to \hat x = R^{-1}Q^TbATAx^=ATb→RTQTQRx^=RTQTb→RTRx^=RTQTb→Rx^=QTb→x^=R−1QTb
获取更多精彩,请关注「seniusen」!