SVD分解在很多经典应用中都有用到,比如
数据压缩
,
降噪
等,PCA也和SVD有着紧密联系,这里记录自己关于SVD分解求解最小二乘解的学习笔记,若有错误请指出,谢谢。
在实践中,由于存在
测量误差
和
多次测量
,所以超定方程是很常见的,所谓的超定方程是方程个数
多于
未知数个数的方程组,而对于线性方程组来说可能
有解
也有可能
无解,
如果没有解就不解了吗,不是的,我们还是要求必须解出来的,即使结果是个非精确的解,而这个解叫做线性最小二乘解。线性方程组分为两种,如下:
- 非齐次方程(Ax=b)的最小二乘解求解方法
- 正规方程求解
- 乔姆斯基分解法求解
- QR分解法求解
-
奇异值分解法求解(
SVD
)
- 齐次方程(Ax=0)的最小二乘解求解方法
1.线性空间
线性空间的属性:
- 维数:n
- 基:一组 n 个线性无关的向量
线性空间需要满足的条件:
-
加法封闭(可加性):空间内任意两向量相加(减),结果必须还在空间中。
-
数乘封闭(齐次性):空间内任意向量乘以标量,结果必须还在空间中。
注意
:
“数乘封闭”隐含了: 线性空间必须包括零向量(当 λ=0时);
2.矩阵4个子空间
首先,介绍下矩阵的秩(rank),即矩阵
最大线性无关组
中包含的向量数 ——刨除所有对张成的空间“
毫无贡献
”的向量(即线性相关的)后,剩下的有效向量数目。
假设 A 是 m×n 的矩阵,其秩为 r :
-
行空间(row space)
A 中所有行向量张成的子空间,维度是 r,记作:
-
列空间(column space)
A 中所有列向量张成的子空间,维度是 r,记作:
-
零空间(nullspace)
以 A 为系数矩阵的齐次线性方程组的所有非平凡解集张成的子空间,说人话就是“能令 Av = 0 的所有非零 v”:
-
左零空间(left nullspace)
类似列空间和行空间的关系,左零空间是 A 的转置的零空间;“左零”的说法来自其定义中矩阵是“左乘”到向量上的,而不是习惯上的右乘:
注意:
-
矩阵非奇异(可逆)
的充分必要条件是
矩阵的行、列数都等于秩
,即满秩矩阵 -
无论是行向量之间,还是列向量之间,
都
线性无关,即矩阵中的每一行都为行空间贡献了维度,每一列都为列空间贡献了维度。 -
非奇异矩阵的
零空间
和
左零空间
就成了
零维
的,即其中只包含零向量
3.四个基本子空间的关系
对于线性变换:
这个变换的过程中:
-
向量 x 来自 A 的
行空间
或
零空间
(左侧的两个空间),变化后到达列空间。
按照矩阵乘法的定义,b是 A 中各列按照 x 的线性组合(或者说以 A 中各列为基,x 的坐标表示)。
-
对于
非奇异矩阵 A(m*n)
,因为它是满秩的,行空间足以张成整个 Rn空间,列空间足以张成整个 Rm空间,那么行空间中所有向量一定可以一一映射到列空间中,行空间中零向量也只映射到列空间的零向量上。 -
对于
奇异矩阵A(m*n)
,因为行空间中存在浑水摸鱼的向量(线性相关),其只能张成 r 维空间(r<n),剩下的 n−r维构成了零空间,零空间中的向量可能不是零,但在 A的线性变换作用下却映射到列空间的零向量上,即方程说的 Ax=0的非平凡(x不为 0 的)解。也就是说,零空间中的任何向量,和 A的任何一个行向量的内积都是 0
5.SVD分解
首先,对于A(mxn, m>n),其中秩r为:
A的行空间的一组正交基为:
A的 列空间的一组正交基为:
行空间和列空间之间满足关系:
对于奇异矩阵,剩下的n-r维就构成了零空间,使得A
vi
=0:
同样,
ui
扩展到Rm维空间
则可以得到:
这样就可以得到A的奇异值分解:
其中,V是nxn的正交矩阵,U是mxm的正交矩阵,∑为mxn的对角矩阵。
6.SVD证明
首先,已知∑是mxn对角矩阵
其中, 表示零矩阵(Zero matrix).
利用分块矩阵:
因为 是正交矩阵, 所以
7.SVD求解过程
- 求出方阵A^T*A和A*A^T
注意:
- 两个矩阵拥有完全相同的r个非0特征值。
- AAT和ATA都是对称矩阵
- 对A^TA进行特征分解得到特征值和特征向量满足下式
- 对AA^T进行特征分解得到特征值和特征向量满足下式
- 求出奇异值
- 得到A的奇异值分解
8.SVD求解 AX=b方程
9.SVD求解AX=0方程
目标:期望找到方程Ax = 0中
x 不等于零
的解
由于该方程的特殊形式我们会发现对于 x 不等于零的解我们乘上任意的尺度因子 k 使解变为 kx 都不会改变最终结果。因为我们可以将问题转化为求解 x 使得||Ax||值最小并且||x||=1。
参考: