这个博客介绍特征值分解(Eigen Value
Decomposition,EVD)和奇异值分解(Singular Value
Decomposition), 可以当作机器学习的补充材料。
SVD在线性代数中是一个非常重要的东西。Strang曾经说过:它远远没有得到它应该有的名气。在考研的线性代数中也从来没有见过SVD的身影,不过在原来在做一些图像处理相关的程序时候,经常用到OpenCV中的SVD。
Theory
SVD和对角化一个矩阵紧密连接在一起,回想一下,如果有一个实对称矩阵,则有一个正交矩阵和一个对角矩阵,使得。这里的每一列对应的特征值,形成一个空间的正交基,而的对角元素是的特征值。这个就是EVD,eigenvalue
decomposition。
对于SVD来说,我们有一个任意的实矩阵,有两个正交矩阵:和以及一个对角矩阵,使得。这种情况下,是矩阵,而是矩阵,因此和的形状一样,是,不过它只有对角元素非零。的对角元素,,可以被安排成非负以及递减的顺序,其中如果,它是的奇异值,而的列向量分别是的左右奇异向量。
我们可以把矩阵看作一个线性转换,通过这个想法来进一步发现EVD和SVD之间的相似之处。
### EVD ###
对于一个实对称矩阵,这个转换把一个向量依然转换成为向量,也就是domain和codomain都是。另外提一下,假如转换后对应的元素为,则成为一个image,而所有image的集合称为。题提供了一个非常好的正交基,如果一个向量被这个正交基来表示,我们也可以看到,这个转换扩大了一些这个单位正交基中的成分,对应的就是较大的特征值。
我希望可以举个例子来帮助理解,假如向量:
观察上面的展开,实际上我们可以发现的是,得到的,实际上是在这个正交基下,的“坐标值”,而实际上是经过转换后的坐标轴,放大了对应特征值的倍数。从这里,我们就可以很清楚得看到A这个转换在做什么。
### SVD ###
现在我们来看看,SVD的解释。同样我们把任意一个实矩阵看作转换,它把向量,转化为,这意味着这个转换是,而是,而image
∈ range ∈
。因此对于domain和range都搞一个单位正交基才是比较合理的,而恰好提供了这样的基,分别用来表示domain的向量和range的向量。那么这个转换就和上面一样,变得比较容易理解了,它同样放大了一些成分,对应的是singular
value的大小,同时抛弃了一些成分,对应的是singular
value为0的方向。SVD告诉我们怎样选择正交基,使得转换被表示成最简单的方式————对角的形式。
那么我们如何选择得到这些基?想要使中间矩阵的形式是对角的,很容易,只要让即可。
为了理解这个,我们假设,那么如果,则:
这保证了的对角化,不过我们很容易发现的是上面的系数不对,并不满足基的定义,它没有到达个,而也随之不是形状的矩阵。
如果我们先保证是单位正交基了,那么中很多维度是没有什么意义的,因此将扩充为基,并且将矩阵也对上,对应的元素置0即可。
如果,则是一样的道理,只不过这个维度被限制住了。而且实际上这个还被的秩限制住,毕竟,而,这意味着,r如果要求各个不同且为一组基,那么.
通过上面的想法,我们很容易将A表示为对角形式。不过实际上,即使保证是正交基,我们也很难保证是正交的。因此使得V的正交性能在A下依然保存是非常关键的。而实际上,的特征矩阵正好满足这个条件。
,也就是对进行EVD。可以得到:
可以看到,在这种情况下,是互相是正交的,这正是我们想要的。而这个集合中的非零向量,形成了一个的range的正交基。因此,的特征向量和它们与A得到的image,使得可以被表示成对角形式。
我们继续把上面的分解补全。注意,如果,那么.
为了让是单位向量,我们对其进行标准化:
$$
u_i = \frac{Av_i}{\Vert Av_i\Vert} = \frac{1}{ \sqrt{\lambda_i} } Av_i\\
\sigma_i = \sqrt{\lambda_i}
$$
我们也很容易推导,的个数是个,可以由秩得到。而中特征值的顺序如果是按照从大到小的顺序排列,那么中也是一样的递减顺序。
如果,那么将扩展到正交基即可。这样我们就得到了想要的SVD。总结一下,V是的特征向量组成,被称为右侧的奇异向量,由特征值组成,其中,而是正交化的结果,有必要的话再进行拓展,使其成为一个正交基。
需要注意的一点是,我们在这里计算SVD是通过计算的特征值和特征矩阵,但是实际上还有其他的办法,在很多应用中SVD的实际用途是计算出的特征值和特征矩阵。
在我们的构造方法中,我们从的EVD来得到SVD,而实际上从SVD的角度出发,我们也很容易得到EVD,如果:
可以很容易看到上面正是的EVD,同理也很容易得到:
这意味着实际上正是由的特征向量组成的。值得一提的是,如果是是对成矩阵,那么,它们的EVD也是相同的,特征值为,其中为A的特征值,而且此时的SVD与EVD是等价的。
SVD的几何意义
我们可以通过对单位圆上的点利用A矩阵进行转换,来明白是如何扭曲空间的。假如点x在单位圆(球)上,意味着,其中,则:
假设,则单位球体的image也等于,其中:
如果,那么上述不等式是相等的。其他情况下,意味着一些纬度被抛弃了。
所以的转换实际上是先抛弃个维度,将其压缩到维,再通过来对不同维度的权值进行放缩,最后拓展的维空间。下图展示了这个过程(n=m=3,k=2):

我们可以很容易得到,,算子范数,定义为的最大值,也就是,最大的奇异值。也就是:,当为的整数倍时等号成立。
SVD的分块矩阵以及外积形式
实际上,SVD可以写成下面分块矩阵的形式:
这个结果可以写成:
上述形式是SVD的另一种表示:,其中为,为对角矩阵,对角元素大于0,为.
我们在这里的分块矩阵的公式和一般的矩阵乘积有点不一样,一般来说,两个矩阵相乘,我们关注的是的行和的列。在这里,我们将用相反的方法表示。如果两个矩阵,我们用表示X中的第i列,用表示Y中的第i行,那么:
而我们称为是这两个向量的外积(Outer
Product),也就是矩阵中列乘上行的情况。
现在回到SVD中,令:
以及:
可以得到:
这是SVD的另一种形式,它提供了A如何转换任何一个向量的另一种解释。
因为是一个标量。
这个时候被表达为的线性组合。所以通过outer
product
expansion可以看到,通过A转换将x中每个成分转换成成分,并且以的系数放缩。
这篇博客基本上是下面文献的部分翻译,更多内容请看: SVD