之前我们已经探讨过正交向量和正交space并且探讨了怎么把一个vector投影到一个subspace里。在这一讲里,我们会强化之前的学习,特别的,我们讨论一类特别的矩阵:正交矩阵。当一个subspace的一组基选用正交矩阵时 (即,基之间两两正交且长度均为 1),我们之前的计算将会被大大简化。这是正交矩阵带给我们的好处。
注意,正交矩阵我们叫orthogonal matrix 但是含义是他的列是orthonormal的。
什么是正交矩阵
正交矩阵
Q
m
×
n
\bm{Q}_{m\times n}
Qm×n 是拥有 orthonormal columns 的矩阵. 假设
Q
m
×
n
\bm{Q}_{m\times n}
Qm×n 的列是
q
1
\bm{q_1}
q1,
q
2
\bm{q_2}
q2, …,
q
n
\bm{q_n}
qn, 则
q
i
⊤
q
j
=
{
0
if
i
≠
j
1
if
i
=
j
(
1
)
\bm{q_i^\top q_j}=\begin{cases} 0 & \text{if}~i\neq j \\ 1 & \text{if}~i=j \end{cases}~~~~(1)
qi⊤qj={01if i=jif i=j (1)
实际上,正交矩阵的各列就是 R m \mathbb{R}^m Rm 空间中的一个subspace R n \mathbb{R}^n Rn 的一组 orthonormal bases。
正交矩阵有很好的性质:
- Q ⊤ Q = I n \bm{Q^\top Q=I_n} Q⊤Q=In 这从矩阵乘法的定义和 (1) 中很容易看出。
- 当 Q \bm{Q} Q 是一个方阵时, Q − 1 = Q ⊤ \bm{Q}^{-1}=\bm{Q}^\top Q−1=Q⊤
一个简单的例子是 permutation matrices,之前我们就说过 permutation matrix 的 inverse 很好求,就是他自己的转置。这背后的原因是,permutation matrices 本身是正交矩阵。因为它们是单位阵 row exchange 的结果。
正交矩阵带来了什么
好,接下来我们看下 how does the orthogonal matrix make our life easier. Prof. Strang 用的是之前 projection 课程中的例子。
我们之前讲过,如果把一个vector
b
\bm{b}
b 投影到矩阵
A
\bm{A}
A 的column space上,投影矩阵
P
\bm{P}
P 和 投影后得到的vector
d
\bm{d}
d 为
P
=
A
(
A
⊤
A
)
−
1
A
⊤
\bm{P}=\bm{A}(\bm{A}^\top\bm{A})^{-1}\bm{A}^\top
P=A(A⊤A)−1A⊤
d = A ( A ⊤ A ) − 1 A ⊤ b \bm{d}=\bm{A}(\bm{A}^\top\bm{A})^{-1}\bm{A}^\top\bm{b} d=A(A⊤A)−1A⊤b
现在,如果我们假设
A
\bm{A}
A 是一个正交阵,即我们选取subspace的一组orthonormal basis 组成
A
=
Q
\bm{A=Q}
A=Q,则有
P
=
Q
Q
⊤
\bm{P}=\bm{Q}\bm{Q}^\top
P=QQ⊤
d = Q Q ⊤ b \bm{d}=\bm{Q}\bm{Q}^\top\bm{b} d=QQ⊤b
可以看出计算被大大简化了。而且
Q
Q
⊤
\bm{Q}\bm{Q}^\top
QQ⊤ 确实是一个 projection
matrix,symmetric,
P
i
=
P
\bm{P}^i=\bm{P}
Pi=P 都是满足的。
注意此时 Q Q ⊤ \bm{Q}\bm{Q}^\top QQ⊤ 没法继续化简了,除非 Q \bm{Q} Q 是一个方阵 Q Q ⊤ = I \bm{Q}\bm{Q}^\top=\bm{I} QQ⊤=I。这个结论显然正确,因为 Q \bm{Q} Q是一个方阵时,他的column space是整个空间,投影结果还是原来的 d = b \bm{d=b} d=b.
怎样得到正交阵
正交阵确实很好,但是怎么得到正交阵尼?Gram and Schmidt 给出了下面两个processes 让我们从一个列满秩矩阵得到一个正交阵。
假设我们有一个列满秩矩阵 [ a 1 , a 2 , . . . , a n ] ⊤ [\bm{a_1},\bm{a_2}, ..., \bm{a_n}]^\top [a1,a2,...,an]⊤ 其中 a i \bm{a_i} ai 是各列.
- 首先,我们尝试得到一组正交的向量 A 1 , A 2 , . . . , A n \bm{A_1},\bm{A_2}, ..., \bm{A_n} A1,A2,...,An.
- 然后我们直接对正交向量归一化即可
q i = A n / ∥ A n ∥ \bm{q_i}=\bm{A_n}/\|\bm{A_n}\| qi=An/∥An∥
这些 q i \bm{q_i} qi 便是我们target vectors。
好,难点其实在第一步,怎么由 a 1 , a 2 , . . . , a n \bm{a_1},\bm{a_2}, ..., \bm{a_n} a1,a2,...,an 得到 A 1 , A 2 , . . . , A n \bm{A_1},\bm{A_2}, ..., \bm{A_n} A1,A2,...,An。
-
a 1 \bm{a_1} a1 方向我们不动 A 1 = a 1 \bm{A_1=a_1} A1=a1,从他开始构造其他向量。
-
a 2 \bm{a_2} a2 的构造方法其实就是把 a 2 \bm{a_2} a2 投影到 a 1 \bm{a_1} a1 上,只不过我们不要投影后的向量 d \bm{d} d, 而是要法向量 A 2 = e = a 2 − d \bm{A_2=e=a_2-d} A2=e=a2−d, 因为法向量是和 a 1 a_1 a1 正交的。
A 2 = a 2 − A 1 A 1 ⊤ A 1 ⊤ A 1 a 2 = a 2 − A 1 A 1 ⊤ a 2 A 1 ⊤ A 1 \bm{A_2}=\bm{a_2} - \frac{\bm{A_1}\bm{A_1}^\top}{\bm{A_1}^\top\bm{A_1}}\bm{a_2}=\bm{a_2} - \bm{A_1}\frac{\bm{A_1}^\top\bm{a_2}}{\bm{A_1}^\top\bm{A_1}} A2=a2−A1⊤A1A1A1⊤a2=a2−A1A1⊤A1A1⊤a2 -
a 3 \bm{a_3} a3 的构造那就是投影到 A 1 \bm{A_1} A1, A 2 \bm{A_2} A2 确定的 subspace 上,直接给出公式
A 3 = a 3 − A 1 A 1 ⊤ a 3 A 1 ⊤ A 1 − A 2 A 2 ⊤ a 3 A 2 ⊤ A 2 \bm{A_3}=\bm{a_3} - \bm{A_1}\frac{\bm{A_1}^\top\bm{a_3}}{\bm{A_1}^\top\bm{A_1}} -\bm{A_2}\frac{\bm{A_2}^\top\bm{a_3}}{\bm{A_2}^\top\bm{A_2}} A3=a3−A1A1⊤A1A1⊤a3−A2A2⊤A2A2⊤a3
and so on so forth 就能得到一组 A 1 , A 2 , . . . , A n \bm{A_1},\bm{A_2}, ..., \bm{A_n} A1,A2,...,An。
QR 分解
实际上 Gram-Schimdt process 是一个把列满秩矩阵 QR 分解的过程。
QR分解是说,任意一个实数方阵都能被分解为一个正交阵乘以上三角矩阵的形式 (非方阵和非实数情况也能QR分解,这里不详细讨论)。
A
=
Q
R
A=QR
A=QR
Gram-Schimdt process 能把一个列满秩矩阵变为正交阵, 所以用 Gram-Schimdt process只能处理满秩矩阵的QR分解。