释题
奇异值分解(Singular Value Decomposition, 简称:SVD)实际上是一种矩阵分解, 记得数值分析老师说过:
每一种「矩阵分解」都对应一种「解线性方程组」的算法, 例如 LU 分解, QR 分解和 Cholesky 分解等.
那么 SVD 分解也应对应一种求解线性方程组的算法.
准备工作
为推导该算法, 应有以下知识储备
线性方程组
假设 A 是一个 m×n 阶实矩阵, rankA=r,b∈Rm, 求解 x∈Rn 满足
Ax=b\labeleq:1- rankA=rank[A,b]⟹ 方程组有解
- 若 n=r (列满秩) ⟹ 存在唯一解
- 若 n>r⟹ 有无穷多解
- rankA+1=rank[A,b]⟹ 方程组无解
进一步地, 当方程组无解时, 我们可以找到其
「最小二乘解」
.
最小二乘解三维示意图设 p 为 b 在 C(A) 超平面的投影
Axˇ=p\labeleq:leastxˇ 即为最小二乘解. 类似地,
- 若 n=r (列满秩) ⟹ 存在唯一最小二乘解
- 若 n>r⟹ 有无穷多最小二乘解
对于无穷解情况, 用空间的角度解释为: 零空间 N(A) 非空. 其一般解的结构为:
一般解 = 特殊解 + 其次解
..线性方程组.. 和 ..最小二乘法.. 都是线性代数中所研究的核心问题.
奇异值分解
我们已经知道, 对于上述实矩阵 A 满足
⎩⎨⎧Av_i=σ_iu_i,Av_i=0,ATu_j=σ_jv_j,ATuj=0,i=1,⋯,ri=r+1,⋯,nj=1,⋯,rj=r+1,⋯,m- {v_1,⋯,v_r} 是行空间 C(AT) 的正交基底;
- {v_r+1,⋯,v_n} 是零空间 N(A) 的正交基底;
- {u_1,⋯ur} 是列空间 C(A) 的正交基底;
- {u_r+1,⋯um} 是左零空间 N(AT) 的正交基底.
其中, σ 称为..奇异值.. . 写成矩阵的形式:
A=[u_1,⋯,u_r,u_r+1,⋯,u_m]σ_1⋱Z_m−r,rσ_rZ_r,n−rZ_m−r,n−rv1T⋮v_rTv_r+1T⋮v_nT=UΣVT\labeleq:svd
四个正交基底算法推导
将式 (\ref{eq:1}) 中的系数矩阵 A 写成式 (\ref{eq:svd}) 的形式
UΣVTx=b左右同乘 UT
ΣVTx=UTb\labeleq:4记 x^=VTx 及 b^=UTb, 则式 (4) 改写为
Σx^=b^\labeleq:5这里需要注意的是: Σ 是对角矩阵. 对线性方程组 (\ref{eq:5}) 可分行和列来讨论:
- m>r 即 Σ 的 r+1 行至 m 行全部为 0.
所以, 式 (\ref{eq:5}) 有解, 当且仅当满足式 (\ref{eq:6})
b^_k=u_kTb=0, k=r+1,⋯,n\labeleq:6进而得到,
x^=VTx=[σ_1u_1Tb ⋯ σru_rTb0 ⋯ 0]T接着,
x=Vx^=[v_1,⋯,v_r,v_r+1,⋯,v_n]σ_1u_1Tb⋮σ_ru_rTb0⋮0=∑_i=1rσ_iu_iTbvi\labeleq:8若不满足式 (\ref{eq:6}), 则存在最小二乘解, 参考式 (\ref{eq:least}), 结合 Σ 的对角性, 投影向量 p 为舍去后 m−r 个元的向量 b^, 即此时最小二乘解有与式 (\ref{eq:8}) ..形式相同..
- n>r 即 Σ 列不满秩, 零空间 N(A) 非空. 此时, 存在不唯一解或不唯一的最小二乘解.
考虑 j>r
Av_j=UΣVTv_j=UΣej=0其中, e_j 为第 j 元素为 1, 其它元素为 0 的 n 维向量. 上式表示 {v_r+1⋯vn} 为零空间 N(A) 的基底. 所以, 一般解 = 特解 + 齐次解:
x=∑_i=1rσ_iu_iTbv_i+∑_i=r+1nc_ivi其中, ci 为任意数. 若 n=r, 就只剩下第一项, 即有唯一解或唯一最小二乘解.
因为 {vi} 是一组单位正交基, 所以
∥x∥2=xTx=∑_i=1r(σ_iu_iTb)2+∑_i=r+1nc_i2也就是说, 当方程组有解时, 存在唯一解 xˉ 长度最小, 且 xˉ∈C(AT), 写成矩阵形式:
xˉ=[v_1⋯v_r]1/σ_1⋱1/σ_ru_1T⋮u_rTb=VˉΣˉUˉTb对于任意矩阵 A 都可以计算
Aˇ=VˉΣˉUˉT从而有解或最小二乘解
xˇ=Aˇb总结
方程组有唯一解: x=A−1b
方程组有唯一解或唯一最小二乘解, 形式相同:
xˇ=∑_i=1rσ_iu_iTbvi=(ATA)−1ATb后一个等号参照
方程组有无穷多解, 一般解为:
x=∑_i=1rσ_iu_iTbv_i+∑_i=r+1nc_ivi前一项属于行空间 C(AT).
方程组可能有无穷多解或有无穷多最小二乘解.
xˇ=∑_i=1rσ_iu_iTbv_i+∑_i=r+1nc_ivi前一项属于行空间 C(AT).
更多..奇异值分解..的内容可以戳 这里