正交矩阵
小象实战讲义 · 人工智能数学基础
在人工智能的诸多算法中,例如主成分分析(PCA)和奇异值分解(SVD),我们常常需要处理一组“完美”的基向量:它们不仅线性无关,而且两两垂直且长度为1。这种基被称为标准正交基。本节我们将学习一种特殊的矩阵——正交矩阵,它的行(或列)向量组恰好构成一组标准正交基。正交矩阵在几何上代表旋转、反射等保长度变换,在计算上具有极佳的数值稳定性。掌握正交矩阵的性质及其构造方法(施密特正交化),是理解后续线性代数高级概念和算法的基础。
💡 核心导读
本节你将掌握:
- 正交矩阵的定义与性质:理解 ATA=I 的几何与代数含义,掌握正交矩阵的行列式、可逆性等核心性质。
- 正交矩阵与标准正交基的等价关系:认识到正交矩阵的本质是其行(或列)向量构成一组标准正交基。
- 内积、正交与正交向量组:回顾欧几里得空间中的内积定义,理解正交(垂直)的代数定义,并证明正交向量组必线性无关。
- 施密特正交化方法:学习如何将一组线性无关的向量,通过逐步投影和减法,构造为一组两两正交的向量(正交基),进而单位化得到标准正交基。
正交矩阵:定义与基本性质
在实数域上,一个 n×n 的方阵 A,如果满足其转置矩阵等于其逆矩阵,即: ATA=In 其中 In 是 n 阶单位矩阵,则称 A 为一个正交矩阵。
这个定义等价于 AAT=In,也等价于 A−1=AT。
一个经典的例子是二维旋转矩阵: R(θ)=[cosθsinθ−sinθcosθ] 容易验证 R(θ)TR(θ)=I2。从几何上看,左乘 R(θ) 的作用是将任意二维向量逆时针旋转 θ 角度,且不改变向量的长度。这正是正交矩阵在几何上的一种重要表现。
正交矩阵具有以下基本性质:
- 可逆性:由 ATA=I 可知 det(ATA)=det(I)=1。又因为 det(ATA)=det(AT)det(A)=[det(A)]2,所以 [det(A)]2=1,即 det(A)=±1=0。行列式非零,故 A 可逆。
- 逆等于转置:由定义 ATA=I 直接可得 A−1=AT。
- 转置与逆也是正交矩阵:若 A 正交,则 AT 和 A−1 也是正交矩阵。因为 (AT)TAT=AAT=I,且 (A−1)TA−1=(AT)TA−1=AA−1=I。
- 行列式为 ±1:已在性质1中证明。
- 乘法封闭性:若 A 和 B 都是 n 阶正交矩阵,则 AB 也是正交矩阵。 证明:(AB)T(AB)=BTATAB=BTIB=BTB=I。
内积、正交与标准正交基
为了深入理解正交矩阵,我们需要回到向量空间的基本概念。
标准内积与正交
在 Rn 空间中,对于向量 α=(a1,…,an)T 和 β=(b1,…,bn)T,定义它们的标准内积(点积)为: ⟨α,β⟩=αTβ=i=1∑naibi 配备了标准内积的 Rn 空间称为欧几里得空间(欧氏空间)。内积具有对称性、线性性和正定性。
基于内积,我们可以定义:
- 向量长度(模):∥α∥=⟨α,α⟩。
- 单位向量:长度为1的向量。
- 正交(垂直):若 ⟨α,β⟩=0,则称 α 与 β 正交,记作 α⊥β。零向量与任何向量正交。
在二维/三维空间中,两向量夹角 θ 的余弦满足 cosθ=∥α∥∥β∥⟨α,β⟩。因此,⟨α,β⟩=0 等价于 θ=90∘,这与我们几何上的垂直概念一致。“正交”是“垂直”在高维空间中的代数推广。
正交向量组与标准正交基
如果一个向量组 α1,α2,…,αs 中任意两个不同向量都正交,则称其为正交向量组。如果正交向量组中的每个向量都是单位向量,则称其为单位正交向量组或标准正交向量组。
重要定理:不含零向量的正交向量组一定是线性无关的。 证明:设 α1,…,αs 是正交向量组,且存在一组数 k1,…,ks 使得: k1α1+k2α2+⋯+ksαs=0 用 αi (i=1,…,s) 与上式两边做内积: ⟨k1α1+⋯+ksαs,αi⟩=⟨0,αi⟩=0 由内积的线性性及正交性(⟨αj,αi⟩=0,j=i)可得: ki⟨αi,αi⟩=0 由于 αi=0,由正定性知 ⟨αi,αi⟩>0,因此必有 ki=0。这对所有 i 都成立,故向量组线性无关。
在 Rn 中,由 n 个向量构成的正交向量组称为正交基;由 n 个单位向量构成的正交基称为标准正交基。 最经典的标准正交基是自然基 ϵ1=(1,0,…,0)T,ϵ2=(0,1,…,0)T,…,ϵn=(0,0,…,1)T。
正交矩阵的本质
现在我们可以揭示正交矩阵的几何本质:
定理:实数域上的 n 阶矩阵 A 是正交矩阵的充要条件是,A 的列向量组(或行向量组)构成 Rn 的一组标准正交基。
说明:将 A 按列分块为 A=[a1,a2,…,an]。则 ATA=I 等价于: a1Ta2T⋮anT[a1,a2,…,an]=⟨a1,a1⟩⟨a2,a1⟩⋮⟨an,a1⟩⟨a1,a2⟩⟨a2,a2⟩⋮⟨an,a2⟩……⋱…⟨a1,an⟩⟨a2,an⟩⋮⟨an,an⟩=In 这意味着:
- ⟨ai,ai⟩=1,即每个列向量都是单位向量(标准)。
- ⟨ai,aj⟩=0 (i=j),即不同列向量两两正交(正交)。 因此,列向量组是一组标准正交基。对行向量组的讨论类似。
回忆一下,可逆矩阵的列向量组是 Rn 的一组基(仅要求线性无关)。正交矩阵比可逆矩阵更强,它要求这组基不仅是基,还必须是标准正交基。
施密特正交化:构造标准正交基
在实际问题中,我们常常得到一组线性无关的向量 α1,…,αs(例如从数据中提取的特征方向),但它们可能并不正交。如何将它们改造为一组等价的正交基 β1,…,βs,进而得到标准正交基?施密特正交化(Gram-Schmidt Process)提供了系统的方法。
其核心思想是逐步投影与修正。我们从第一个向量开始,确保新向量与之前所有已构造的正交向量都正交。
算法步骤
设 α1,…,αs 线性无关。
- 取第一个向量:令 β1=α1。
- 构造第二个正交向量:将 α2 分解为平行于 β1 的分量(投影)和垂直于 β1 的分量。取垂直分量作为 β2。 β2=α2−⟨β1,β1⟩⟨α2,β1⟩β1 容易验证 ⟨β2,β1⟩=0。
- 迭代进行:对于 k=3,…,s,从 αk 中减去它在所有已构造的正交向量 1, \dots, \boldsymbol{\beta}{k-1}β1,…,βk−1 上的投影。 k - \sum{j=1}^{k-1} \frac{\langle \boldsymbol{\alpha}_k, \boldsymbol{\beta}_j \rangle}{\langle \boldsymbol{\beta}_j, \boldsymbol{\beta}_j \rangle} \boldsymbol{\beta}_jβk=αk−j=1∑k−1⟨βj,βj⟩⟨αk,βj⟩βj 这样得到的 βk 与所有 1, \dots, \boldsymbol{\beta}{k-1}β1,…,βk−1 都正交。
- 单位化(得到标准正交基):对每个 βi,令 ηi=∥βi∥βi,则 η1,…,ηs 构成一组标准正交基,且与原始向量组 α1,…,αs 等价(张成同一个子空间)。
示例
将向量组 α1=(2,−1,0)T,α2=(2,0,1)T 正交化并单位化。
- 正交化:
- β1=α1=(2,−1,0)T。
- β2=α2−⟨β1,β1⟩⟨α2,β1⟩β1=(2,0,1)T−54(2,−1,0)T=(52,54,1)T。
- 单位化:
- ∥β1∥=5,故 η1=51(2,−1,0)T。
- ∥β2∥=(52)2+(54)2+12=2545=535,故 η2=355(52,54,1)T=(352,354,35)T。
η1,η2 即为所求的标准正交向量组。
import numpy as np
# 定义原始向量组
alpha1 = np.array([2, -1, 0])
alpha2 = np.array([2, 0, 1])
# 施密特正交化
beta1 = alpha1.copy()
# 计算 alpha2 在 beta1 上的投影系数
proj_coef = np.dot(alpha2, beta1) / np.dot(beta1, beta1)
beta2 = alpha2 - proj_coef * beta1
print("正交化结果:")
print(f"β1 = {beta1}")
print(f"β2 = {beta2}")
print(f"验证正交性 (β1·β2): {np.dot(beta1, beta2):.6f}") # 应接近0
# 单位化
eta1 = beta1 / np.linalg.norm(beta1)
eta2 = beta2 / np.linalg.norm(beta2)
print("\n单位化结果(标准正交基):")
print(f"η1 = {eta1}")
print(f"η2 = {eta2}")
print(f"验证单位长度: ||η1|| = {np.linalg.norm(eta1):.6f}, ||η2|| = {np.linalg.norm(eta2):.6f}")
print(f"验证正交性 (η1·η2): {np.dot(eta1, eta2):.6f}")
# 使用numpy的QR分解验证(Q的列是标准正交基)
A = np.column_stack((alpha1, alpha2))
Q, R = np.linalg.qr(A, mode='reduced') # 经济型QR分解
print("\n使用NumPy QR分解验证(Q的列向量):")
print(f"Q = \n{Q}")
print("(注意:QR分解得到的Q列向量可能与手动计算差一个符号,这仍是标准正交基)")
📝 动手练一练
判断与验证:判断矩阵 A=312−2−112−2212 是否为正交矩阵。如果是,它的行列式是多少?它代表什么类型的几何变换(旋转或反射)? 参考答案:计算 ATA 或验证其列向量是否为单位向量且两两正交。经计算,ATA=I3,故为正交矩阵。其行列式 det(A)=1(可通过计算验证),因此它代表一个旋转变换。
施密特正交化:对 R3 中的向量组 v1=(1,1,0)T,v2=(1,0,1)T 进行施密特正交化,并给出对应的标准正交基。 参考答案:
- 正交化:u1=(1,1,0)T;u2=(1,0,1)T−21(1,1,0)T=(21,−21,1)T。
- 单位化:e1=21(1,1,0)T;e2=36(21,−21,1)T=(66,−66,36)T。
本章小结
本节我们深入探讨了线性代数中一个结构“优美”且应用广泛的对象——正交矩阵。
要点回顾:
- 正交矩阵定义为满足 ATA=I 的方阵,等价于 A−1=AT。其行列式为 ±1。
- 几何意义:正交矩阵对应欧氏空间中的保距变换(旋转或反射),不改变向量的长度和夹角。
- 代数本质:正交矩阵的列(或行)向量组构成 Rn 的一组标准正交基。这比可逆矩阵(仅要求列向量组是基)条件更强。
- 正交与线性无关:不含零向量的正交向量组一定是线性无关的。标准正交基是线性无关性加上“单位长度”和“两两垂直”的强化。
- 施密特正交化:提供了从任意一组线性无关向量构造出等价的正交基,进而得到标准正交基的系统化方法。其核心是“减去在前序正交方向上的投影”。
行动清单:
- 验证与理解:任选一个二维旋转矩阵,手动验证其满足 ATA=I,并思考其行列式为 1 的几何意义。
- 动手实现:尝试不借助 NumPy 的
qr 函数,仅使用基础运算,编写代码实现施密特正交化过程,并对一组三维向量进行测试。 - 建立联系:回顾主成分分析(PCA)或奇异值分解(SVD)算法,找出其中哪些步骤用到了正交矩阵或标准正交基的思想(例如,PCA中协方差矩阵的特征向量构成一组正交基)。
— 小象教研组