1 正交矩阵&正交变换
- 正交变换是保持图形形状和大小不变的几何变换,包含旋转、平移、轴对称及这些变换的复合形式,正交变换可以保持向量的长度和向量之间的角度不变。特别的,标准正交基经正交变换后仍为标准正交基。
- 在有限维的空间中,正交变换在标准正交基下的矩阵表示为正交矩阵,其所有行和所有列也都各自构成一组标准正交基。
- 同时,正交变换的逆变换也是正交变换,后者的矩阵表示是前者矩阵表示的逆。
2 特征值分解(Eigen Value Decomposition,EVD)
2.1 定义
【百度百科】特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对可对角化矩阵才可以施以特征分解。
如果矩阵A是一个m×m的实对称矩阵(即A=AT),那么它可以被分解为如下形式:
A=QΛQT=Q⎣⎢⎢⎢⎡λ10⋮00λ2⋮0⋯⋯⋱⋯00⋮λm⎦⎥⎥⎥⎤QT(2-1)
其中Q为标准正交阵,即有QQT=I,Λ为m×m的对角矩阵,λi称为特征值,Q为特征矩阵,Q中的列向量qi称为特征向量。
2.2 推导
假设存在m×m的满秩对称矩阵A,它有m个不同的特征值λi(i=1,2,...,m),对应的特征向量为xi(i=1,2,...,m)(xi为m维列向量),则有:
Ax1=λ1x1Ax2=λ2x2⋯Axm=λmxm(2-2)
令U=[x1x2⋯xm],则上式可以表示为矩阵形式:
AU=UΛ(2-3)
Λ=⎣⎢⎢⎢⎡λ10⋮00λ2⋮0⋯⋯⋱⋯00⋮λm⎦⎥⎥⎥⎤(2-4)
进一步就可以得到A的特征值分解:
A=UΛU−1=UΛUT(2-5)
3 奇异值分解(Singular Value Decomposition,SVD)
3.1 定义
【百度百科】奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,奇异值分解则是特征分解在任意矩阵上的推广。在信号处理、统计学等领域有重要应用。
如果A是一个m×n阶矩阵,则存在一个分解使得:
A=UΣVT
其中U和V分别为m×m和n×n的酉矩阵/单位正交矩阵(即UUT=UTU=I,VVT=VTV=I)。U称为左奇异矩阵,V称为右奇异矩阵,Σ对角线上的元素σi即为M的奇异值。一般地Σ有如下形式:
Σ=⎣⎢⎢⎢⎡σ10⋮00σ2⋮0⋯⋯⋱⋯00⋮0⎦⎥⎥⎥⎤m×n(3-1)
3.2 推导
在矩阵的特征值分解中,矩阵A的行列维度是相同的,但在实际应用中,矩阵往往是非方阵、非对称的(如点云配准问题等)。为了对这类矩阵进行分解,我们引入奇异值分解(SVD)。
假设矩阵A的维度为m×n(m=n),虽A不是方阵,但AAT和ATA均为方阵,其维度分别为m×m和n×n。因此可以对这两个方阵分别进行特征值分解:
AAT=PΛ1PTATA=QΛ2QT(3-2)
其中Λ1和Λ2均为对角矩阵,且两个方阵具有相同的非零特征值σ1,σ2,...,σk,其中k≤min(m,n)。这样就可以进一步得到奇异值分解的公式:
A=PΛQT(3-3)
接下来通过更直观的方式对SVD的原理和推导过程进行说明(参考:You Don’t Know SVD (Singular Value Decomposition))。
首先从最简单的二维座标说起,任何力矢量都可以沿x和y轴分解:
这其实就是最简单的SVD,SVD就是将向量分解到正交轴上(正交变换前的正交轴和正交变换后的正交轴)。
如下图,我们将向量a进行分解:
可以得到3个信息:
- 投影方向(单位向量v1和v2):表示沿着x和y轴的投影方向,这也可以为其它的正交轴;
- 投影长度(线段sa1和sa2)
- 投影向量(pa1和pa2):通过投影向量可以反向计算出原始向量a,同时我们可以发现pa1=sa1∗v1,pa2=sa2∗v2
那么我们就可以得到一个关键结论:
任何向量都可以表示为:
- 投影方向的单位矢量(v1,v2,…)
- 在投影方向上的长度(sa1和sa2,…)
将这一结论扩展到多个向量(或点)以及所有维度上,就是SVD所作的事情:
图. 数据集的一个示例(一个点可以视为通过原点的向量)
我们先从单个向量入手,利用矩阵来处理这看似复杂的问题。因此我们必须找到一种方法来表示使用矩阵进行向量分解的操作。
图. 向量在倾斜的座标轴上投影
我们知道,一个向量在另一个向量上的投影长度可以用向量的点积来计算:
图. 将$a$投影到$v_1$和$v_2$上
上式可以利用矩阵表示为:
图. 通过为每个单位向量增加一个额外的列,一次写出两个方程
也可以将其扩展为多个点/向量:
图. 通过为每个点添加额外的行。$S$是包含投影长度的矩阵
添加点b后:
进一步,将上式扩展为任意多点和维度,有:
图. n = 点的个数,d = 维数,A = 包含点的矩阵,V = 包含分解轴的矩阵,S = 包含投影长度的矩阵
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020042312361059.gif#pic_center)
图 这里的点积就是普通的矩阵乘法
这等价于:
图. 因为V包含标准正交列,它的逆等于它的转置(正交矩阵的性质)
这就是SVD所说的(记住关键结论):
任何向量集(A)都可以用它们在正交轴(V)上的投影长度(S)来表示。
然而,传统的奇异值公式为:
实际上这也就等价于求解下式的来源:
如果你仔细观察矩阵S,你会发现它包括:
如果我们能将这些列向量归一化是最好的,也就是说使它们具有单位长度。这是通过将每个列向量除以它的大小来实现的,但是是以矩阵的形式。
但首先,我们来看一个简单的例子,看看这个“除法”是怎么做的:
假设我们要把M的第一列除以2。我们肯定要乘以另一个矩阵来保持等式:
很容易证明未知矩阵就是单位矩阵,第一个元素被除数2代替
第二列除以3现在变成了一个直接的问题把单位矩阵的第二元素换成3
很明显,这个操作可以推广到任何大小的矩阵。
我们现在想把上面的除法概念应用到矩阵S上。为了归一化S的列向量,我们用它们的大小来除它们
在上面的例子中,我们对M所做的就是:
最终我们可以得到奇异值分解的公式:
当然,为了不分散对核心概念的注意力,省略了一些细节和严格的数学运算。
再来看U和Σ:
那σ呢?为什么我们要用正常化的方式去寻找它们来增加自己的负担呢?
我们已经看到σi是所有的点,在第i个单位向量vi上投影长度的平方和的平方根。那么这又说明了什么呢?
图. 红色线段 = v1上的投影。蓝色线段 = v2上的投影。越近的点到一个特定的轴的投影,相应的σ值越大
因为在它们的定义中,σ包含特定轴上投影长度的和,它们表示所有点到那个轴的距离。例如如果σ1>σ2,那么大多数点更接近v1,反之亦然。这在SVD的无数应用中有着巨大的实用价值。
4 SVD的应用
SVD在数据压缩等领域都有应用,具体参考[1][2][3][4]。
参考
[1] https://blog.csdn.net/sjyttkl/article/details/97563819
[2] https://www.zhihu.com/question/34143886/answer/196294308
[3] https://www.cnblogs.com/endlesscoding/p/10033527.html#335555762
[4] https://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html
[5] You Don’t Know SVD (Singular Value Decomposition)