奇异值的意义

矩阵的奇异值是一个数学意义上的概念,一般是由奇异值分解(Singular Value Decompostition,SVD)得到。如果要问奇异值表示什么物理意义,那么就必须要考虑在不同的实际工程应用中奇异值所对应的含义。下面先尽量避开严格的数学符号推导,直观地从一张图片出发,让我们来看看那奇异值代表什么意义。

这是上野树里的一张图片,像素为高度 450 ∗ 450* 450 宽度 333 333 333

我们知道,图片实际上对应着一个矩阵,矩阵的大小就是像素大小,比如这张图片对应的矩阵阶数就是450*333,矩阵上每个元素的数值对应着像素值。我们记这个像素矩阵为 A A A。现在我们对矩阵 A A A 进行奇异值分解。直观上,奇异值分解将矩阵分解成若干个秩一矩阵之和,用公式表示就是:
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋅ ⋅ ⋅ + σ r u r v r T A = \sigma _{1} u_{1} v_{1}^{T} + \sigma _{2} u_{2} v_{2}^{T} + ··· + \sigma _{r} u_{r} v_{r}^{T} A=σ1u1v1T+σ2u2v2T++σrurvrT

其中等式右边每一项前面的系数 σ \sigma σ 就是奇异值, u u u v v v 分别表示列向量,秩一矩阵的意思是矩阵秩为1.注意到每一项 u v T uv^{T} uvT 都是秩为1的矩阵。我们假定奇异值满足 σ 1 ⩾ σ 2 ⩾ . . . ⩾ σ r > 0 \sigma_{1} \geqslant \sigma_{2}\geqslant...\geqslant\sigma_{r} >0 σ1σ2...σr>0.(奇异值大于0是一个重要的性质,但这里先别太在意这一点),如果不满足的话可以重新排列一下顺序即可,这无非是编号顺序的问题。

既然奇异值有从大到小排列的顺序,我们自然会问,如果只保留大的奇异值,舍去较小的奇异值,这样上面等式自然就不再成立了,那么我们会得到怎样的矩阵呢?—— 就是我们会得到什么样的图像?

令: A 1 = σ 1 u 1 v 1 T A_{1}=\sigma_{1}u_{1}v_{1}^{T} A1=σ1u1v1T,即仅仅保留等式右边的第一项,得出的结果如下图:

结果就是我们完全看不清图片的内容,我们试着多增加几项进来:
A 5 = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + σ 3 u 3 v 3 T + σ 4 u 4 v 4 T + σ 5 u 5 v 5 T A_{5} = \sigma_{1}u_{1}v_{1}^{T} + \sigma_{2}u_{2}v_{2}^{T} + \sigma_{3}u_{3}v_{3}^{T} + \sigma_{4}u_{4}v_{4}^{T} + \sigma_{5}u_{5}v_{5}^{T} A5=σ1u1v1T+σ2u2v2T+σ3u3v3T+σ4u4v4T+σ5u5v5T.

得出的图像如下所示:

隐隐约约可以辨别这是短发女子的脸,但是依旧很模糊,毕竟我们现在只取了5个奇异值而已。下面我们取20个奇异值试试,也就是等式右边取前20项构成 A 20 A_{20} A20,得出新的图像如下所示:

现在看来虽然还有些模糊,但是我们总算能辨别出人物的脸。当我们取到前50项时,得到如下图像:

我们得到和原图效果差别不大的图像。也就是说当 k k k 从 1 不断增大时, A k A_{k} Ak 不断地逼近 A A A。让我们再次回到公式上来:
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋅ ⋅ ⋅ + σ r u r v r T A = \sigma _{1} u_{1} v_{1}^{T} + \sigma _{2} u_{2} v_{2}^{T} + ··· + \sigma _{r} u_{r} v_{r}^{T} A=σ1u1v1T+σ2u2v2T++σrurvrT

矩阵 A A A 表示一个 450 ∗ 333 450*333 450333 的矩阵,需要保存 450 × 333 = 149850 450 \times 333 = 149850 450×333=149850个元素的值。等式右边 u u u v v v 分别是 450 ∗ 1 450*1 4501 333 ∗ 1 333*1 3331 的向量,每一项有 1 + 450 + 333 = 784 1+450+333=784 1+450+333=784 个元素。如果我们要存储很多高清的图片,而又受限于存储空间大小,在尽可能保证图像可被识别的精度的前提下,我们可以保留奇异值较大的若干项,舍去那些奇异值较小的项即可。例如在上面的例子中,如果我们只保留奇异值分解的前50项,则需要存储的元素为: 784 × 50 = 39200 784 \times 50 = 39200 784×50=39200,和存储原始矩阵 A A A 相比,存储量仅为后者的 26 % 26\% 26%

奇异值往往对应着矩阵中隐含的重要信息,且重要性和奇异值大小正相关。每个矩阵 A A A 都可以表示为一系列秩为 1 的“小矩阵”之和,而奇异值则衡量了这些“小矩阵”对于 A A A 的权重。


图像处理领域,奇异值不仅可以应用在数据压缩上,还可以对图像去噪。如果一幅图像包含噪声,我们有理由相信那些较小的奇异值就是由于噪声引起的。当我们强行令这些较小的奇异值为 0 0 0 时,就可以去除图片中的噪声。如下是一张 25 ∗ 15 25*15 2515 的图像:

但往往我们只能得到如下带有噪声的图像(和无噪声图像相比,下图的部分白格子中带有灰色):

通过奇异值分解,我们发现矩阵的奇异值从大到小分别为: 14.15 , 4.67 , 3.00 , 0.21 , . . . , 0.05 14.15, 4.67, 3.00, 0.21, ..., 0.05 14.15,4.67,3.00,0.21,...,0.05。除了前3个奇异值较大以外,其余奇异值相比之下都很小。强行令这些较小的奇异值为0,然后只用前3个奇异值构造新的矩阵,得到:

可以明显看出噪声减少了(白格子上灰白相间的图案减少了)。

奇异值分解还广泛用于主成分分析(Principle Component Analysis,PCA) 和推荐系统(如Netflex的电影推荐系统)等。在这些应用领域,奇异值也有相应的意义。

奇异值在数学上的几何含义,主要参考文献是美国数学协会网站上的一篇文章。

下面的讨论需要一点点线性代数的基础知识。线性代数中最让人印象深刻的一点是,要将矩阵和空间中的线性变换视为同样的事物。比如对角矩阵 M M M 作用在任何一个向量上:

[ 3 0 0 1 ] [ x y ] = [ 3 x y ] \begin{bmatrix}3 & 0\\ 0 & 1\end{bmatrix} \begin{bmatrix}x \\ y\end{bmatrix} = \begin{bmatrix}3x\\ y\end{bmatrix} [3001][xy]=[3xy]

其几何意义为在水平 x x x 方向上拉伸 3 倍, y y y 方向保持不变的线性变换。换言之,对角矩阵起到的作用是:将水平垂直网格作水平拉伸(或者反射后水平拉伸)的线性变换。

如果 M M M 不是对角矩阵,而是一个对称矩阵:
M = [ 2 1 1 2 ] M = \begin{bmatrix} 2 & 1\\ 1 & 2 \end{bmatrix} M=[2112]

那么,我们也总可以找到一组网格线,使得矩阵作用在该网格上仅仅表现为(反射)拉伸变换,而没有旋转变换:

考虑更一般的非对称矩阵:
M = [ 1 1 0 1 ] M = \begin{bmatrix} 1 & 1\\ 0 & 1 \end{bmatrix} M=[1011]

很遗憾,此时我们再也找不到一组网格,使得矩阵作用在该网格上之后只有拉伸变换(找不到的背后的数学原因是对一般非对称矩阵无法保证在实数域上可对角化,不明白也不要太在意)。我们退而求其次,找一组网格,使得矩阵作用在该网格上之后 允许有拉伸变换和旋转变换,但要保证变换后的网格依旧互相垂直。这是可以做到的:

下面我们就可以自然过渡到奇异值分解。

奇异值分解的几何含义为:对于任何一个矩阵而言,我们要找到一组两两正交单位向量序列,使得矩阵作用在此向量序列上之后得到的新的向量序列保持两两正交。下面我们要说明的是,奇异值的几何含义为:这组变换后的新的向量序列的长度。

当矩阵 M M M 作用在正交单位向量 v 1 v_{1} v1 v 2 v_{2} v2 上之后,得到 M v 1 Mv_{1} Mv1 M v 2 Mv_{2} Mv2 也是正交的。

u 1 u_{1} u1 u 2 u_{2} u2 分别是 M v 1 Mv_{1} Mv1 M v 2 Mv_{2} Mv2 方向上的单位向量,即 M v 1 = σ 1 u 1 , M v 2 = σ 2 u 2 Mv_{1} = \sigma_{1} u_{1}, Mv_{2} = \sigma_{2}u_{2} Mv1=σ1u1,Mv2=σ2u2

写在一起就是 M [ v 1 v 2 ] = [ σ 1 u 1 σ 2 u 2 ] M \begin{bmatrix}v_{1} & v_{2} \end{bmatrix} = \begin{bmatrix}\sigma_{1}u_{1} & \sigma_{2}u_{2} \end{bmatrix} M[v1v2]=[σ1u1σ2u2],整理得:

M = M [ v 1 v 2 ] [ v 1 T v 2 T ] = [ σ 1 u 1 σ 2 u 2 ] [ v 1 T v 2 T ] = [ u 1 u 2 ] [ σ 1 0 0 σ 2 ] [ v 1 T v 2 T ] M = M\begin{bmatrix} v_{1} & v_{2} \end{bmatrix} \begin{bmatrix} v_{1}^{T} \\ v_{2}^{T} \end{bmatrix} = \begin{bmatrix} \sigma_{1}u_{1} & \sigma_{2}u_{2} \end{bmatrix} \begin{bmatrix} v_{1}^{T} \\ v_{2}^{T} \end{bmatrix} = \begin{bmatrix} u_{1} & u_{2} \end{bmatrix} \begin{bmatrix} \sigma_{1} & 0 \\ 0 & \sigma_{2} \end{bmatrix} \begin{bmatrix} v_{1}^{T} \\ v_{2}^{T} \end{bmatrix} M=M[v1v2][v1Tv2T]=[σ1u1σ2u2][v1Tv2T]=[u1u2][σ100σ2][v1Tv2T]

这样就得到矩阵 M M M 的奇异值分解。奇异值 σ 1 \sigma_{1} σ1 σ 2 \sigma_{2} σ2 分别是 M v 1 Mv_{1} Mv1 M v 2 Mv_{2} Mv2 的长度。

很容易可以把结论推广到一般 n n n 维情形。

下面给出一个更简洁更直观的奇异值的几何意义。先来一段线性代数的推导,不想看的也可以直接略过,直接看黑体字几何意义部分:

假设矩阵 A A A 的奇异值分解为:

A = [ u 1 u 2 ] [ 3 0 0 1 ] [ v 1 T v 2 T ] A = \begin{bmatrix} u_{1} & u_{2}\end{bmatrix} \begin{bmatrix} 3 & 0 \\ 0 & 1\end{bmatrix} \begin{bmatrix} v_{1}^{T} & v_{2}^{T} \end{bmatrix} A=[u1u2][3001][v1Tv2T]

其中, u 1 , u 2 , v 1 , v 2 u_{1}, u_{2}, v_{1}, v_{2} u1,u2,v1,v2 是二维平面的向量。根据奇异值分解的性质, u 1 , u 2 u_{1}, u_{2} u1,u2 线性无关, v 1 , v 2 v_{1}, v_{2} v1,v2 线性无关。那么对二维平面上任意的向量 x x x ,都可以表示为: x = ξ 1 v 1 + ξ 2 v 2 x = \xi_{1} v_{1} + \xi_{2} v_{2} x=ξ1v1+ξ2v2

A A A 作用在 x x x 上时:

y = A x = A [ v 1 v 2 ] [ ξ 1 ξ 2 ] = [ u 1 u 2 ] [ 3 0 0 1 ] [ v 1 T v 2 T ] [ v 1 v 2 ] [ ξ 1 ξ 2 ] = 3 ξ 1 u 1 + ξ 2 u 2 y = Ax = A \begin{bmatrix} v_{1} & v_{2} \end{bmatrix} \begin{bmatrix} \xi_{1} \\ \xi_{2} \end{bmatrix} = \begin{bmatrix} u_{1} & u_{2}\end{bmatrix} \begin{bmatrix} 3 & 0 \\ 0 & 1\end{bmatrix} \begin{bmatrix} v_{1}^{T} & v_{2}^{T} \end{bmatrix} \begin{bmatrix} v_{1} & v_{2} \end{bmatrix} \begin{bmatrix} \xi_{1} \\ \xi_{2} \end{bmatrix} = 3\xi_{1}u_{1} + \xi_{2}u_{2} y=Ax=A[v1v2][ξ1ξ2]=[u1u2][3001][v1Tv2T][v1v2][ξ1ξ2]=3ξ1u1+ξ2u2

令: η 1 = 3 ξ 1 , η 2 = ξ 2 \eta_{1} = 3\xi_{1}, \eta_{2} = \xi_{2} η1=3ξ1,η2=ξ2,我们可以得出结论:如果 x x x 是在单位圆: ξ 1 2 + ξ 2 2 = 1 \xi_{1}^{2} + \xi_{2}^{2} = 1 ξ12+ξ22=1 上,那么 y y y 正好在椭圆: η 1 2 3 2 + η 2 2 1 2 = 1 \frac{\eta_{1}^{2}}{3_{2}} + \frac{\eta_{2}^{2}}{1^{2}} = 1 32η12+12η22=1 上。这表明:矩阵 A A A 将二维平面中单位圆变换成椭圆,而两个奇异值正好是椭圆的两个半轴长,长轴所在的直线是: s p a n { u 1 } span\{u_{1}\} span{u1},短轴所在的直线是: s p a n { u 2 } span\{u_{2}\} span{u2}

推广到一般情形:一般矩阵 A A A 将单位球 ∣ ∣ x ∣ ∣ 2 = 1 ||x||_{2} = 1 x2=1 变换为超椭球面: E m = { y ∈ C m : y = A x , x ∈ C n , ∣ ∣ x ∣ ∣ 2 = 1 } E_{m} = \{ y \in C^{m} : y= Ax, x \in C^{n}, ||x||_{2} = 1 \} Em={yCm:y=Ax,xCn,x2=1},那么矩阵 A A A 的每个奇异值恰好就是超椭球的每条半轴长度。

郑宁:人们是如何想到奇异值分解的?

参考文献:
【1】We Recommend a Singular Value Decomposition (Feature Column from the AMS).
【2】徐树方, 《矩阵计算的理论与方法》,北京大学出版社.

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值