QR 分解
我们想要对 A∈Rn×n 进行 QR 分解,也即:
A=QR
其中 Q 为正交阵,R 为上三角阵。
Householder 变换
对单位向量 w∈Rn,Householder 矩阵定义为:
H=I−2wwT
性质:
- 对称:HT=H
- 正交:HTH=I⇒H2=I
几何意义:将向量 x 关于与 w 正交的超平面 {y∣wTy=0} 镜像反射。
定理:
对非零向量 x∈Rn,存在 Householder 矩阵 H,使得:
Hx=−σe1,σ=sign(x1)∥x∥2
其中 e1=[1,0,…,0]T。
证明:
只需证明如下引理:对非零向量 x,y∈Rn 且 ∥x∥2=∥y∥2,存在 Householder 矩阵 H,使得:
Hx=y
由几何直观,构造 w=∥x−y∥x−y 即可。
Householder QR 分解
输入:A∈Rn×n
输出:正交矩阵 Q 和上三角矩阵 R,使得 A=QR
- 初始化 A(1)=A,Q(1)=In
- 对 k=1,2,…,n−1:
- 取 x(k)=A(k)[k:n,k]∈R(n−k+1)
- 构造 Householder 矩阵 H(k)∈R(n−k+1)×(n−k+1) 使
H(k)x(k)=sign(x1(k))∥x(k)∥2e1
- 令 H~(k)=[Ik−100H(k)],注意其仍为 Householder 矩阵
- A(k+1)=H~(k)A(k)
- Q(k+1)=Q(k)(H~(k))T
- 令 Q=Q(n),R=A(n),输出 Q,R 即为所求
证明:
下归纳证明第 k−1 步后,A(k) 具有以下结构:
A(k)=[R(k)0C(k)D(k)]
其中 R(k)∈R(k−1)×(k−1) 是上三角矩阵,D(k)∈R(n−k+1)×(n−k+1)。
k=1 时,A(1)=A,R(1) 为空,成立。假设 k−1 时成立,下证 k 时成立。
设 x(k)=D(k)[:,1]。
构造 H(k) 使 H(k)x(k)=∥x(k)∥2e1。
令 H~(k)=diag(Ik−1,H(k)),则:
A(k+1)=H~(k)A(k)=[R(k)0C(k)H(k)D(k)]
由于 H(k)D(k) 的第一列变为 ∥x(k)∥2e1,故 A(k+1) 的左上角 k×k 块
[R(k)0C:,1(k)∥x(k)∥2]
是上三角矩阵。记此块为 R(k+1),则:
A(k+1)=[R(k+1)0C(k+1)D(k+1)]
满足归纳假设。
复杂度:O(2n3/3) 次浮点运算,优于 Givens。但稀疏时 Givens 更优。
Givens 旋转变换
Givens 旋转用于有选择地消去矩阵中的特定元素,每次只影响两行(列)。
2×2 Givens 旋转:
对向量 [ab],构造旋转矩阵:
G=[c−ssc],c=a2+b2a,s=a2+b2b
则:
G[ab]=[a2+b20]
也即将向量 (a,b) 旋转到 x 轴正方向。
n×n Givens 旋转:
构造 Gij(θ)∈Rn×n,仅在以下位置非单位元:
- Gii=c,Gjj=c
- Gij=s,Gji=−s
- 其余对角元为 1,其余非对角元为 0
从而:
- 左乘 GijT:只修改第 i 行和第 j 行
- 右乘 Gij:只修改第 i 列和第 j 列
注:
显然之前的 Jacobi 法求特征值也是利用了 Givens 旋转。
Givens QR 分解
输入:A∈Rn×n
输出:正交矩阵 Q 和上三角矩阵 R,使得 A=QR
- 初始化 A(1)=A,Q(1)=In
- 对 k=1,2,…,n−1,
对 i=k+1,…,n:
- 取 a=A(k)[k,k],b=A(k)[i,k]
- 计算 c=a2+b2a,s=a2+b2b
- 构造 Givens 矩阵 Gik∈Rn×n:
Gik=1⋱c⋮−s⋯⋱⋯s⋮c1
其中非零元位于 (k,k),(k,i),(i,k),(i,i) 位置
- A(k+1)=GikTA(k)
- Q(k+1)=Q(k)Gik
- 令 Q=Q(n),R=A(n),输出 Q,R 即为所求
证明:
第 k 步固定,对 i=k+1,…,n 依次消去 A[i,k]。
设消去 A[i,k] 前,当前矩阵为 A。取 a=A[k,k],b=A[i,k],构造 Gik 使得:
GikT[ab]=[a2+b20]
左乘 GikT 只修改第 k 行和第 i 行,故:
- 新 (i,k) 位置变为 0
- 第 k 行第 k 列变为 a2+b2
- 其他已消零的位置不受影响
对 k=1,…,n−1 依次执行,最终 A(n) 下三角全为 0,即为上三角矩阵 R。
且正交阵乘积 Q=G12G13⋯Gn−1,n 仍为正交阵。
复杂度:O(4n3/3) 次浮点运算,比 Householder 多约一倍。但 Givens 每次只改两行,适合稀疏矩阵和并行计算。
两种 QR 分解对比
| 方法 | 每次操作 | 适用场景 |
|---|
| Householder | 消去一整列 | 稠密矩阵 |
| Givens | 消去单个元素 | 稀疏矩阵、并行计算 |
QR 算法
我们知道:
- 容易求特征值的矩阵:对角阵、上三角阵、分块上三角阵(对角块小)
- 保持特征值的变换:相似变换,正交相似变换(数值稳定)
我们利用好的变换把原矩阵化为好的矩阵,这就是 QR 算法。
实 Schur 分解
定义拟上三角矩阵(quasi-upper triangular)为对角块为 1 阶或 2 阶的分块上三角矩阵。
实 Schur 分解:
对任意 A∈Rn×n,存在正交矩阵 Q∈Rn×n,使:
QTAQ=S
其中 S 为拟上三角矩阵,且:
- 1 阶对角块对应一个实特征值
- 2 阶对角块对应一对共轭复特征值
证明:略
QR 算法步骤
迭代步骤:
- QR 分解:A(k)=Q(k)R(k)
- 更新:A(k+1)=R(k)Q(k)=(Q(k))TA(k)Q(k)
显然 A(k+1) 与 A(k) 正交相似,故特征值不变。
收敛性:
设 A 是 n×n 实矩阵,特征值满足:
∣λ1∣≥∣λ2∣≥⋯≥∣λn∣
且等号仅出现在共轭复特征值对(即 λ=a±bi,b=0)的情形。
则 QR 迭代产生的 A(k) 收敛到拟上三角矩阵(实 Schur 标准型)。
证明:略
注:实际中常加入位移(shift)加速收敛。
QR 算法实现
k = 0
while k < N:
k += 1
# QR 分解
Q, R = qr_decomposition(A)
# 进行迭代
A = R @ Q
# 检查收敛
if np.all(np.abs(np.diag(A, k=-1)) < EPS): # 次对角线
break
3×3 实对称矩阵的特征对
3×3 实对称矩阵的特征值
对实对称矩阵 A=[aij]∈R3×3,特征方程为:
P(λ)=λ3−I1λ2+I2λ−I3=0
其中:
- I1=tr(A)=a11+a22+a33
- I2=21[(trA)2−tr(A2)]=a11a22+a22a33+a33a11−a122−a232−a132
- I3=detA
令:
pqϕ=I12−3I2=227I3+I13−29I1I2=31arctan(qp3−q2)
则三个实特征值为:
λ1λ2λ3=32pcosϕ+3I1=32pcos(ϕ+32π)+3I1=32pcos(ϕ+34π)+3I1
注:对于实对称阵而言,p3−q2≥0 恒成立。
3×3 实对称矩阵的特征向量
对特征值 λi,解 (A−λiI)vi=0。
取转置:
viT(A−λiI)=0
右乘 e1,e2 得:
viT(a1−λie1)viT(a2−λie2)=0=0
当 a1−λie1,a1−λie1 线性无关时,取:
vi=(a1−λie1)×(a2−λie2)
即可。
注:当两向量线性相关时(如重特征值),需改用其他列组合或 SVD 求解
SVD 分解
SVD 分解的数学原理
对 A∈Rm×n,若存在 σ≥0, u∈Rm, v∈Rn 满足:
Av=σu,ATu=σv
且 ∥u∥2=∥v∥2=1,则称 σ 为奇异值,u/v 为对应的左/右奇异向量。
SVD 分解:
任意 A∈Rm×n 存在正交矩阵 U∈Rm×m, V∈Rn×n 和
Σ=[diag(σ1,…,σr)000]∈Rm×n
使得
A=UΣVT
其中 σ1≥σ2≥⋯≥σr>0。
证明:略
性质:
-
σi2 是 ATA(以及 AAT)的非零特征值。
证明:
ATAvi=AT(σiui)=σiATui=σi(σivi)=σi2vi
类似:
AATui=A(σivi)=σiAvi=σi2ui
所以 σi2 是特征值,vi, ui 是对应特征向量。
-
vi 是 ATA 的特征向量,ui 是 AAT 的特征向量。
证明:由上一步直接得出。
-
ui=σi1Avi
证明:
从 Avi=σiui,两边除以 σi>0 即得。
-
对 i=j:
uiTuj=0,viTvj=0
证明:
取 i=j:
σjuiTuj=uiTAvj=(ATui)Tvj=σiviTvj
若 σi=σj 或 i=j 对应不同特征值,由对称矩阵 ATA 的特征向量正交性得 viTvj=0,进而 uiTuj=0。
若特征值相同,可通过 Gram–Schmidt 正交化选正交基。
-
设 r=rank(A),则:
- {v1,…,vr} 张成行空间 C(AT)
- {vr+1,…,vn} 张成零空间 N(A)
- {u1,…,ur} 张成列空间 C(A)
- {ur+1,…,um} 张成左零空间 N(AT)
证明:
- Avi=σiui=0⟹vi⊥N(A),且 dimC(AT)=r,因此 {v1,…,vr} 是 C(AT) 的一组正交基。
- vr+1,…,vn 对应 σ=0,即 Avi=0,故属于 N(A),维数 n−r。
- 类似得 ui 的结论。
-
rank(A)=#{σi>0}
证明:
Avi=σiui,前 r 个 ui 线性无关且属于 C(A),后 n−r 个 vi 映射到 0。因此 dimC(A)=r。
-
∥A∥2=σ1
证明:
对任意单位 x∈Rn,x=∑αivi,则
∥Ax∥2=∑σi2αi2≤σ12
且 x=v1 时等号成立。
Eckart-Young-Mirsky 定理
设矩阵的谱分解为 A=∑i=1rσiuiviT,对 k<r,定义截断 SVD:
Ak=i=1∑kσiuiviT
则 Ak 是所有秩 ≤k 矩阵中,在谱范数(2-范数)下对 A 的最佳逼近:
∥A−Ak∥2=rank(B)≤kmin∥A−B∥2=σk+1
证明:略
注:也即能量集中在前几个奇异值。
应用1:图像压缩
- 灰度图等价于矩阵 A∈Rm×n
- 作低秩近似,计算 Ak=UkΣkVkT
- 压缩率:原存储 mn,压缩后 k(m+n+1)(Uk,Vk 各 k 列,Σk 有 k 个值)
- 质量:由 σk+1 决定,k 越大越清晰
应用2:Netflix 推荐系统
- 用户-电影评分矩阵 A∈RN×M(稀疏)
- 用SVD分解 A≈UkΣkVkT
- Uk 的行:用户隐因子向量
Vk 的列:电影隐因子向量
- 预测用户 i 对电影 j 的评分:(UkΣkVkT)ij
应用3:LLM 微调中的 LoRA
-
全参数微调:Wfine=W0+ΔW,ΔW 存储成本高
-
关键观察:ΔW 的奇异值衰减极快,故可作低秩近似
-
LoRA 公式:
Wfine=W0+BA
其中:
- W0∈Rd×k 为预训练权重矩阵,不参与微调,冻结。
- B∈Rd×l,A∈Rl×k,l≪min(d,k) 为人为选定维数,训练时仅更新 A,B。
-
ΔW 的最优低秩近似为 ΔW≈UlΣlVlT。
在数学上,我们可取 B=UlΣl1/2 和 A=Σl1/2VlT,使得 BA=UlΣlVlT。
这表明,最优低秩近似确实能被分解为 LoRA 所采用的 BA 形式。
应用4:潜在语义分析(LSA)
- 文档-词项矩阵 A∈Rm×n(稀疏,元素为 TF-IDF)
- 用 SVD 分解 A≈UkΣkVkT
- UkΣk 的行:文档的语义向量(m×k)
- VkΣk 的行(或 ΣkVkT 的列):词的语义向量(n×k)
- 查询 q(词的集合)的语义向量:
qsem=qTVkΣk−1
这样 qsem 与文档语义向量在同一空间,可计算余弦相似度。
复杂度与方法对比总结
| 方法 | 适用问题 | 时间复杂度 | 空间复杂度 |
|---|
| QR 算法 | 一般矩阵特征值 | O(n3) / 迭代 | O(n2) |
| Householder QR | QR 分解(稠密) | O(2n3/3) | O(n2) |
| Givens QR | QR 分解(稀疏/并行) | O(n3)(系数更大) | O(n2) |
| 3×3 解析法 | 3×3 实对称矩阵 | O(1) | O(1) |
| SVD | 低秩近似、非方阵 | O(mn2) (m≥n) | O(mn) |